getDailyStats($period); $chartLabels = array_map(fn($d) => date('d-m', strtotime($d['date'])), $chartData); $chartValues = array_column($chartData, 'cnt'); $chartLabel = 'Berichten per dag'; $chartType = 'bar'; $extraRows = $chartData; break; case 'hosts': $chartData = $sq->getHostStats($period); $chartLabels = array_column($chartData, 'FromHost'); $chartValues = array_column($chartData, 'cnt'); $chartLabel = 'Top hosts'; $chartType = 'bar'; break; case 'countries': $chartData = $sq->getCountryStats($period); $chartLabels = array_map(fn($c) => GeoIP::getCountryName($c['code']) . ' (' . $c['code'] . ')', $chartData); $chartValues = array_column($chartData, 'count'); $chartLabel = 'Berichten per land'; $chartType = 'bar'; break; case 'severity': $chartData = $sq->getSeverityStats($period); $chartLabels = array_map(fn($s) => SyslogQuery::severityName((int)$s['Priority']), $chartData); $chartValues = array_column($chartData, 'cnt'); $chartLabel = 'Severity verdeling'; $chartType = 'doughnut'; break; case 'tags': $chartData = $sq->getTagStats($period); $chartLabels = array_column($chartData, 'SysLogTag'); $chartValues = array_column($chartData, 'cnt'); $chartLabel = 'Top tags'; $chartType = 'bar'; break; case 'hourly': $db = \SyslogDash\Database::getInstance(); $table = Database::table(); $stmt = $db->prepare(" SELECT HOUR(`ReceivedAt`) AS h, COUNT(*) AS cnt FROM `{$table}` WHERE `ReceivedAt` >= :since GROUP BY HOUR(`ReceivedAt`) ORDER BY h ASC "); $stmt->execute([':since' => date('Y-m-d H:i:s', strtotime("-{$period} days"))]); $chartData = $stmt->fetchAll(); $hourlyData = array_fill(0, 24, 0); foreach ($chartData as $r) $hourlyData[(int)$r['h']] = (int)$r['cnt']; $chartLabels = array_map(fn($h) => sprintf('%02d:00', $h), range(0, 23)); $chartValues = $hourlyData; $chartLabel = 'Berichten per uur'; $chartType = 'line'; break; case 'custom': $sql = $_POST['sql'] ?? ''; $customResult = null; if ($sql && preg_match('/^\s*SELECT/i', $sql)) { $customResult = $sq->runQuery($sql); } break; } ?>

BI Rapporten

7d 30d 90d 365d Alles
Custom SQL Query
rijen
Dagelijkse gegevens
DatumBerichtenHosts