Zeitreihendiagramme in QRadar Pulse

Auf den ersten Blick kann die Erstellung eines Zeitreihendiagramms aus relationalen Daten in QRadar® Pulse eine Herausforderung darstellen. Das Datenvolumen, das von einer AQL-Abfrage zurückgegeben wird, kann unhandlich sein, aber mit etwas Hintergrundwissen und einer sorgfältigen Planung können Sie relevante und aussagefähige Zeitreihendiagramme erstellen.

Anmerkung: Nachdem Sie die Informationen zu Zeitreihendiagrammen gelesen haben, erstellen Sie ein dynamisches Zeitreihendiagramm, indem Sie die Prozedur in Verfolgung der fünf aktivsten Geräte in den letzten zehn Minutenausführen. In QRadar Pulse V2.1.4 oder höher verfügt das Zeitreihendiagramm über eine dynamische Zeitreihenoption, die nützlich ist, wenn Sie nicht wissen, welche Geräte Sie überwachen wollen, oder wenn es schwierig ist, Zeitreihendiagramme ordnungsgemäß zu funktionieren. Sie erkennt Zeitreihen automatisch und zeigt sie als separate Zeilen im Zeitreihendiagramm an.
Wird eine Metrik nach starttime geordnet, ergibt das eine Zeitreihe (wie etwa bei der folgenden AQL-Abfrage), aber die Menge der zurückgegebenen Daten kann zu unhandlich sein, um damit zu arbeiten und sie zu verstehen.
select starttime as 'Start Time',
SUM(eventcount) as 'Event Count (Sum)'
from events
where eventcount <> NULL
GROUP BY starttime
order by starttime
LAST 60 minutes
Die Menge der zurückgegebenen Daten kann zu einer unscharfen Grafik führen, die nicht sehr viele Informationen liefert. Die Ereignisstartzeiten treten möglicherweise nicht in regelmäßigen Intervallen auf, wodurch Lücken im Datenbestand entstehen können.
Abb. 1. Zu viele Daten führen zu unscharfen Ergebnissen
Unscharfes Diagramm mit großen Datenvolumen

Intervalle in einer Zeitreihenabfrage erstellen

Der erste Schritt besteht darin, den Typ des für eine Datenanalyse zu verwendenden Intervalls zu bestimmen. Möchten Sie Daten aus einem kurzen Intervall betrachten, z. B. jede Sekunde? Oder sollen es längere Intervalle sein, wie etwa jede Minute oder jede Stunde? Diese Entscheidung ist wichtig, weil Datenpunkte in Intervallen gruppiert werden müssen, damit eine Metrik berechnet wird.

Bei Verwendung der ursprünglichen Abfrage können Sie die Daten mithilfe eines der folgenden Verfahren gruppieren:
  • Bestimmung eines Intervalls mithilfe der Klausel GROUP BY: GROUP BY starttime/60000. Da starttime in Millisekunden angezeigt wird, erstellen Sie durch eine Division durch 60.000 (60 Sekunden x 1000 Millisekunden) Gruppen oder Intervalle von 60 Sekunden (1 Minute).
  • Änderung der Klausel ORDER BY, sodass das Aggregat sTime verwendet wird.
Der Code der Abfrage ändert sich wie folgt:
select starttime as 'sTime',
SUM(eventcount) as 'Event Count (Sum)'
from events
where eventcount > 0
GROUP BY starttime/60000
order by "sTime"
LAST 60 minutes
Die Daten sind jetzt visuell besser verwendbar und es ist sichergestellt, dass ein Datenpunkt pro Minute auftritt. Da die Intervalle nun auf zweckmäßige Weise definiert sind, können Sie die Daten mithilfe einiger Strategien in ein benutzerfreundlicheres Zeitreihenformat bringen.
Abbildung 2: Besser verwendbare Datenergebnisse durch zweckmäßig definierte Intervalle
Daten sind verwendbar, müssen aber optimiert werden

Zeilen in Spalten pivotieren, um eine Zeitreihe zu erstellen

Eine Methode zum Erstellen eines Zeitreihendiagramms ist das Pivotieren der Datenzeilen in Spalten, die eine Reihe in Pulsdirekt darstellen. Wenn der Anwendungsfall beispielsweise darin besteht, Ereignisse für eine bestimmte Einheit für jedes 1-Minuten-Intervall zu zählen, müssen Sie ein separates, bedingtes Aggregat für jede Zeitreihe erstellen, die im Diagramm dargestellt werden soll.
SUM(IF LOGSOURCETYPENAME(devicetype) = 'System Notification' THEN 1.0 ELSE 0.0) 
as system_notification
SUM(IF LOGSOURCETYPENAME(devicetype) = 'SIM Audit' THEN 1.0 ELSE 0.0) as sim_audit
Die vollständige Abfrage sieht wie im folgenden Beispiel aus:
SELECT starttime/(1000*60) as 'minute',
(minute * (1000*60)) as 'stime',
SUM(IF LOGSOURCETYPENAME(devicetype) = 'System Notification' THEN 1.0 ELSE 0.0) 
as system_notification,
SUM(IF LOGSOURCETYPENAME(devicetype) = 'SIM Audit' THEN 1.0 ELSE 0.0) as sim_audit
FROM events
WHERE devicetype <> NULL
GROUP BY minute
ORDER BY stime asc
LAST 10 minutes
Die Abfrage nimmt die Zeilendaten für System Notification- und SIM Audit-Einheiten und pivotiert sie in separate Spalten, die einer Zeitreihe im Diagramm entsprechen:
Abb. 3 Zurückgegebene Ergebnisse für separate Spalten
Ergebnisse für das Pivotieren von Datenzeilen in Spalten
Die folgende Abbildung zeigt die Ansichtskonfiguration und die Diagrammanzeige für das Pivotieren der Zeilen.
Abbildung 4. Konfigurieren der Ansicht und Diagrammanzeige
Datenzeilen in Spalten konfigurieren

Auch wenn diese Methode ziemlich effizient ist, um relationale Daten in Zeitreihendaten umzuwandeln, müssen Sie vorher wissen, nach welchen Daten Sie suchen.

Dynamische Zeitreihen erstellen

Was ist, wenn Sie nicht vorher wissen, nach welchen Einheiten Sie suchen, oder Sie die fünf Einheiten, die in der letzten Stunde am aktivsten waren, grafisch darstellen möchten? Sie können eine dynamische Zeitreihe in QRadar Pulse V2.1.4erstellen. Statt Datenzeilen in Spalten zu pivotieren, wird bei der zweiten Strategie mithilfe einer sekundären GROUP BY-Klausel (in den Beispielen als "device" bezeichnet) eine dynamische Zeitreihe erstellt.
SELECT starttime/(1000*60) as 'minute', 
MIN(starttime) as 'stime', 
eventcount as 'eventCount', devicetype as 'deviceType',
LOGSOURCETYPENAME(devicetype) as 'device', 
count(*) as 'total'
FROM events
WHERE deviceType IN (
    SELECT deviceType FROM (
        SELECT devicetype as 'deviceType', 
        count(*) as 'total'
        FROM events
        GROUP BY deviceType
        ORDER BY total DESC
        LIMIT 8
        LAST {Time_Span}
    )
) and devicetype not in (18,105,147,368)
GROUP BY minute, device
ORDER BY minute asc
LAST {Time_Span}
Die für die Abfrage zurückgegebenen Ergebnisse sehen wie in der folgenden Abbildung aus:
Abbildung 5. Für 'device' zurückgegebene Ergebnisse
Datenergebnisse für dynamische Zeitreihen

Der Unterschied zur vorherigen Methode besteht darin, dass die Daten nicht in Spalten geschwenkt werden und Wiederholungen in der Zeitspalte enthalten, die durch die sekundäre GROUP BY -Klausel verursacht wird. Bei Verwendung der Option für dynamische Zeitreihen teilt QRadar Pulse die Daten in ein geeignetes Zeitreihenformat auf. Wählen Sie die Spalte mit time (stime für die X-Achse), die Spalte mit data (total für die Y-Achse) und die Spalte mit der Klausel GROUP BY (zum Extrahieren der verschiedenen Zeitreihen nach Einheit) aus.

Abbildung 6. Aufteilen der Daten nach 'device'
Aufteilen der Daten nach Einheit in dynamischen Zeitreihen

Obwohl das Diagramm genauso aussieht wie das Diagramm, das mit der vorherigen Methode erstellt wurde, ist die zugrunde liegende AQL-Abfrage viel dynamischer. Wenn sich die Protokollquellen im Laufe der Zeit ändern, wird das Diagramm automatisch aktualisiert, da die Werte nicht mehr fest in der Abfrage codiert sind.

Allerdings müssen Sie sich auch einiger Nachteile bewusst sein. Da die Datenzeilen nicht in Spalten pivotiert werden, ist das Datenvolumen viel größer und nimmt proportional zur Anzahl der Einheiten zu. QRadar Pulse verarbeitet die Daten, sodass sich die Größe der Daten negativ auf die Reaktionsfähigkeit des Browsers insgesamt auswirkt. Um Leistungseinbußen zu vermeiden, gibt QRadar Pulse die ersten 20 erkannten Datenserien wieder und ignoriert nachfolgende Serien. Begrenzen Sie das Datenvolumen, indem Sie den Datenbestand mithilfe der WHERE-Klausel für die Verwendung in einer dynamischen Zeitreihe begrenzen (LIMIT) und anordnen (ORDER). Erstellen Sie beispielsweise folgende Abfrage, wenn der Anwendungsfall "die drei aktivsten Einheiten in den letzten 10 Minuten zählen, ausschließlich 'Health Metrics'" lautet:
SELECT starttime/(1000*60) as 'minute', (minute * (1000*60)) as 'stime', LOGSOURCETYPENAME(devicetype) as 'device', count(*) as 'total'
FROM events
WHERE device IN (
    SELECT deviceList FROM (
        SELECT LOGSOURCETYPENAME(devicetype) as deviceList, count(*) as topDevices
        FROM events
        WHERE deviceList <> 'Health Metrics'
        GROUP BY deviceList
        ORDER BY topDevices DESC
        LIMIT 3
        LAST 10 minutes
    )
)
GROUP BY minute, device
ORDER BY stime asc
LAST 10 minutes
Die Abfrage ist effizienter und stellt sicher, dass die drei Zeitreihen für die drei aktivsten Einheiten in der ausgewählten Zeitspanne wiedergegeben werden.