Log-Analysator-Plugin¶
Macht den Editor zu einer vollwertigen Log-Werkbank: strukturierte Protokolldateien über editierbare Profile parsen, nach geparsten Feldern und Zeitstempeln navigieren, mehrere Quellen auf einer Zeitachse zusammenführen, eine einzelne Anfrage über Quellen hinweg verfolgen und Raten / Perzentile / Top-N-Werte analysieren — alles, ohne den Rohtext in einen normalen Editor-Tab zu laden.
Wo Sie es finden¶
Das Plugin fügt dem Menü Datei drei Einträge hinzu:
- Datei ▸ Als Log öffnen… — eine einzelne Protokolldatei in einem dedizierten Log-Ansichtsfenster öffnen.
- Datei ▸ Zusammengeführte Logs öffnen… — zwei oder mehr Dateien wählen, jeder ihr Profil geben und sie verschränkt auf einer Zeitachse sehen.
- Datei ▸ Systemprotokoll öffnen… (nur Windows) — das
Windows-Ereignisprotokoll in derselben Ansicht abfragen, mit Filtern, die
an PowerShells
Get-WinEventdurchgereicht werden.
Eine Seite Einstellungen ▸ Plugins ▸ Log-Analysator erlaubt die Standard-Level-Chips, das Fallback-Profil für Dateien ohne Glob-Treffer, die Schwelle „vor dem Parsen von Dateien über N MB warnen“, den Standard-Filtermodus und das Follow-Tail-Abfrageintervall — ein Regler für den Datei-Tail-Timer und den Systemlog-Strom (jede Abfrage des Windows-Ereignisprotokolls startet einen PowerShell-Prozess, schwere Quellen mögen es also langsamer).
Große Dateien parsen in einem Hintergrund-Thread mit Live-Datensatzzähler, und die teuren Aggregationen (Nachrichten-Vorlagen, Anomalien) rechnen ebenfalls im Hintergrund — die Statusleiste zeigt „Analysiere Statistiken im Hintergrund…“, und die Panels füllen sich, sobald fertig; das Fenster bleibt durchgehend reaktionsfähig. Bei sehr großen Ladungen aggregieren die Statistiken über die neuesten 150 000 Datensätze, und die Zeitachse tastet die gesamte Spanne ab.
Einzeldatei-Log-Ansicht¶
Das Öffnen eines Logs zeigt das dedizierte Fenster Log-Ansicht. Es spiegelt die Ergonomie der tabellenbasierten Fenster des Editors (wie das Vergleichsfenster) und bleibt der Tab-Leiste des Editors fern.
Aufbau¶
- Werkzeugleiste — Level-Chips (TRACE…FATAL), Filtermodus + Filterzeile,
Nächster / Vorheriger Fehler (
F8/Shift+F8), Gehe zu Zeit (Ctrl+G). - Zeitachsen-Streifen oben — Ereignisvolumen in Zeit-Eimern, nach Level gefärbt. Einen Bereich ziehen filtert nach Zeit; ein Klick auf einen Balken springt in der Tabelle zum ersten Datensatz ab diesem Eimer.
- Tabelle in der Mitte — Zeit / Level / Quelle / Nachricht, virtualisiert, scrollt also auch bei Hunderttausenden Datensätzen flüssig.
- Detailbereich unter der Tabelle — der vollständige rohe mehrzeilige Eintrag der gewählten Zeile.
- Statistik-Panel rechts angedockt — Zähler pro Level, Ereignisrate,
Perzentil-Auswahl (p50/p95/p99 über ein beliebiges numerisches Feld,
Standard
bytes), Verteilung der HTTP-Statusklassen (1xx…5xx, verborgen ohnestatus-Feld) und eine Top-N-Tabelle über ein beliebiges Feld (Standardurl, gedeckelt bei 25 Zeilen).
Filtermodi¶
Die Filterzeile akzeptiert fünf Ausdrucksarten; den Modus wählen Sie in der Combo links daneben:
| Modus | Was er matcht |
|---|---|
| Einfach | Teilzeichenkette ohne Groß-/Kleinschreibung gegen die Rohzeile. |
| Wörter | Leerraum-getrennte Tokens; jedes Token muss irgendwo in der Zeile vorkommen, in beliebiger Reihenfolge. phpinfo GET trifft eine Zeile mit phpinfo und GET. |
| Platzhalter | *- und ?-Glob gegen die Rohzeile, ohne Groß-/Kleinschreibung. |
| Regex | Ein QRegularExpression-Muster, standardmäßig ohne Groß-/Kleinschreibung. |
| Abfrage | Strukturierte Grammatik mit Feld-, Level- und Zeit-Prädikaten plus AND/OR/NOT und Klammern. |
Beispiele für den Abfrage-Modus:
level>=WARN
status:500 AND method:POST
message~/timeout|refused/ AND @time in [09:00..09:05]
NOT (source:nginx OR source:apache)
level>=ERROR OR (status:5\d\d AND method:POST)
Die Filterzeile entprellt die Eingabe um 200 ms, damit die Tabelle nicht bei jedem Tastendruck neu filtert; Enter oder Fokusverlust wendet sofort an, das Leeren der Zeile ebenfalls. Kompiliert ein Platzhalter-/Regex-/Abfrage-Ausdruck nicht, färbt sich die Zeile rot und der Tooltip zeigt die Diagnose — der Proxy behält den letzten gültigen Filter auf dem Schirm, die Tabelle leert sich also nicht während des Tippens.
Navigation¶
- F8 / Shift+F8 — nächster / vorheriger Fehler- oder Fatal-Datensatz.
- Ctrl+G — zu einer bestimmten Zeit gehen (UTC, Kalender-Popup).
- Ein Klick auf einen Zeitachsen-Balken springt zum ersten Datensatz des Eimers.
Diese drei Kürzel sind im Tastenkürzel-Zuordner neu belegbar (Kategorie Log Analyzer); offene Log-Ansichten übernehmen eine Neubelegung sofort, und die Tooltips der Werkzeugleiste zeigen das aktuelle Kürzel.
Live-Parsen + Abbrechen¶
Große Dateien zeigen Datensätze binnen Dutzenden Millisekunden; das Parsen
läuft im Hintergrund weiter, und die Tabelle wächst mit eintreffenden
Datensätzen. Filtern, Scrollen und F8 funktionieren, während das Parsen
noch läuft. Das Schließen des Fensters stoppt den Worker zügig.
Zusammengeführte Log-Ansicht¶
Datei ▸ Zusammengeführte Logs öffnen… dient der Untersuchung eines Problems über mehrere Quellen — Client- plus Server-Log, App-Log plus Systemjournal, Web-Access plus -Error usw.
Die Profilwahl pro Datei¶
Nach der Wahl von zwei oder mehr Dateien erscheint ein kleiner Dialog mit
einer Zeile pro Datei und einer Profil-Combo pro Zeile. Die Combo ist
vorbelegt durch Abgleich des Dateinamens mit den Dateinamen-Globs jedes
Profils (ohne Groß-/Kleinschreibung). Für ein typisches nginx-Deployment
wählt access.log automatisch nginx — access log (default combined) und
error.log automatisch nginx — error log. Vor OK lässt sich jede Zeile
manuell übersteuern.
Aufbau¶
- Werkzeugleiste — Sichtbarkeits-Kästchen pro Quelle (jedes Label in der Spurfarbe der Quelle), Level-Chips, Filterzeile mit Modus-Combo, Trace-Bedienelemente (Combo + Verfolgen / Leeren), Umschalter Sequenzdiagramm, Umschalter Nebeneinander.
- Zeitachsen-Streifen oben — gestapeltes Histogramm pro Quelle mit einer Spur je Quelle, korrelierte Ausbrüche sieht man also visuell.
- Trace-Banner über der Tabelle — bernsteinfarbener Streifen nur bei
aktivem Trace-Filter:
Following <Feld> = <Wert> — N Zeilen über alle Quellen. - Gestapelter Hauptbereich — drei Seiten, umschaltbar aus der
Werkzeugleiste:
- Tabelle (Standard): eine Zeile pro zusammengeführtem Datensatz mit den Spalten Zeit / Quelle / Level / Logger / Nachricht; die Vordergrundfarbe der Quellspalte ist die Spurfarbe der Quelle, die Quellidentität erfasst man also im Vorbeigehen.
- Sequenzdiagramm — siehe Trace verfolgen.
- Nebeneinander-Ansichten — siehe Nebeneinander.
- Detailbereich unter der Tabelle.
Filter, die sich kombinieren¶
In der zusammengeführten Ansicht läuft die Filter-Pipeline in dieser Reihenfolge, alles baut aufeinander auf:
- Quellsichtbarkeit — die Kästchen pro Quelle in der Werkzeugleiste.
- Level-Chips — TRACE…FATAL.
- Trace verfolgen — siehe unten.
- Textfilter — Einfach / Wörter / Platzhalter / Regex / Abfrage (dieselben Modi und dasselbe Verhalten wie in der Einzeldatei-Ansicht, angewendet auf den zusammengeführten Strom).
Sie können also z. B. level>=ERROR AND status:500 über nginx-Access- und
-Error-Logs in einem Ausdruck ausführen und einen einzelnen Client durch
beide verfolgen — der Trace-Filter engt die Menge weiter ein, ohne die
Level-/Quell-/Textfilter zu brechen.
Trace verfolgen¶
- Wählen Sie einen Korrelationsschlüssel in der Trace:-Combo der
Werkzeugleiste. Sie ist mit dem üblichen Satz vorbelegt (
trace_id/request_id/session_id/correlation_id/span_id/xRequestId) plus jedem tatsächlich in den geladenen Datensätzen vorkommenden Feldnamen. Bei Bedarf einen eigenen Namen tippen. - Eine Zeile in der Tabelle auswählen.
- Follow trace klicken — oder die Zeile rechtsklicken und Follow trace: \<Feld>=\<Wert> für einen der üblichen Schlüssel wählen, die der Datensatz trägt (ein Ein-Schritt-Weg ohne die Combo).
Die Tabelle filtert sofort auf die Datensätze, die den Wert dieses Schlüssels über alle Quellen teilen. Clear trace entfernt den Filter.
Sequenzdiagramm¶
Sobald ein Trace-Filter aktiv ist und genau 2–4 Quellen sichtbar sind, wird der Umschalter Sequenzdiagramm verfügbar. Er schaltet den Hauptbereich auf ein Diagramm mit festen Spuren:
- Jede sichtbare Quelle ist eine vertikale Spur, oben mit farbigem Feld beschriftet.
- Eine Zeile pro Datensatz, die Zeit fließt von oben nach unten. Der echte Zeitstempel steht links, Präzision geht also nicht verloren; die Zeilen sind rangbasiert (feste Höhe) statt zeitproportional, weil ein echter Trace Ausbrüche plus lange Pausen hat und eine zeitproportionale Achse den Großteil des Bildschirms an die Pausen verschwenden würde.
- Ein farbiger Punkt auf der Spur der besitzenden Quelle plus ein dezenter grauer Pfeil zwischen aufeinanderfolgenden Datensätzen auf verschiedenen Spuren — man sieht den Trace buchstäblich zwischen den Systemen springen.
- Level-Chip und Nachrichtentext rechts.
Ein Klick auf eine Diagrammzeile scrollt die zugrundeliegende Tabelle zu diesem Datensatz. Den Umschalter ausschalten führt zur Tabelle zurück.
Bei >4 Quellen ist das Diagramm deaktiviert, die Tabellenansicht bleibt.
Nebeneinander-Ansichten¶
Sind genau zwei Quellen sichtbar, wird der Umschalter Nebeneinander verfügbar. Er teilt den Hauptbereich in zwei Tabellenbereiche — je eine Quelle — mit über den Zeitstempel gekoppelten Scroll-Positionen: Scrollen Sie einen Bereich, folgt der andere zum nächstgelegenen Datensatz ab dieser Zeit. Drift zwischen Server-Uhren zeigt sich natürlich als Auseinanderziehen der Bereiche.
Die Umschalter Sequenzdiagramm und Nebeneinander schließen sich gegenseitig aus (das Einschalten des einen schaltet den anderen ab); beide fallen auf die Tabellenansicht zurück, wenn die Zahl der aktiven Quellen ihren unterstützten Bereich verlässt.
Native Systemprotokolle (Windows)¶
Datei ▸ Systemprotokoll öffnen… fragt das Windows-Ereignisprotokoll ab,
ohne eine Datei auf der Festplatte zu brauchen. Der Dialog fragt nach einem
Kanal (Application / System / Security / eigener Name), einem optionalen
Mindest-Level und einer Datensatzobergrenze. Das Plugin ruft PowerShells
Get-WinEvent | ConvertTo-Json -Compress mit durchgereichtem Filter auf und
parst die NDJSON-Ausgabe mit dem mitgelieferten Profil windows-event-log.
Die Aktion wird nur registriert, wenn der Host tatsächlich eine funktionierende Windows-Ereignisprotokoll-Quelle hat — unter Linux und macOS fehlt sie wirklich, statt ausgegraut zu sein.
Quellen für das macOS Unified Log und Linux journald sind geplant und fügen sich hinter dieselbe interne Schnittstelle ein, ohne UI-Änderungen, wenn sie landen.
Profile¶
Die Engine hat keine eingebauten Spezialparser. Jedes unterstützte
Format — Apache, nginx, syslog, JSON Lines, logfmt, CSV,
Windows-Ereignisprotokoll — ist eine LogProfile-JSON-Datei im Verzeichnis
log-profiles/ der Anwendung. Benutzerprofile liegen im Ordner
log-profiles/ des Benutzer-Konfigurationsverzeichnisses und übersteuern
mitgelieferte nach id.
Jedes Profil beschreibt:
- Zeilenmodell —
regex,json,logfmt,csvoderdelimited. - Zeitstempel — welches Feld, akzeptierte Formate im
strftime-Stil, Quell-Zeitzone, Epochen-Einheiten. - Level — welches Feld plus eine Abbildung roher Tokens auf das
kanonische Enum
Trace / Debug / Info / Warn / Error / Fatal. - Fortsetzung — wie Folgezeilen am aktuellen Datensatz kleben (Java-Stacktraces werden ein Eintrag, nicht 30).
- abgeleitete Felder — Zusatzfelder, die ein Untermuster über ein
bestehendes Feld berechnet. Die mitgelieferten apache+nginx-Profile nutzen
das, um ein einheitliches Feld
client_ipbereitzustellen, damit Follow trace der zusammengeführten Ansicht Access- und Error-Ereignisse desselben Clients über beide Quellen korrelieren kann. - Rotation — der Glob zum Auffinden der rotierten Geschwister der
Quelle, die Ordnungsregel (
numeric-suffix,embedded-date,first-record-time,mtime) plus optionale transparente Dekompression von.gz- und.zip-Segmenten.
Ein Profileditor mit Feldgreifer, grok-artigen Aliassen und einem Live-Zeitstempeltester ist als Nachfolger geplant.
Themes¶
Die Farben pro Level kommen aus dem Theme — das Plugin registriert eine Palettenkategorie pro kanonischem Level, der Theme-Editor zeigt sie, und jedes Theme kann sie übersteuern. Ein Themewechsel aktualisiert Level-Spalte, Zeitachsen-Streifen, Statistik-Panel und Sequenzdiagramm im Gleichschritt.
Siehe auch¶
- Vergleich / Diff — das Vergleichsfenster, dem die Fenster des Log-Analysators nachempfunden sind.
- Protokollierung & Diagnose — die eigene Protokolldatei des Editors (getrennt von der Sicht des Log-Analysators auf beliebige Protokollformate).