Przejdź do treści

Wtyczka Analizator logów

Zamień edytor w pełnoprawny warsztat logów: parsuj ustrukturyzowane pliki logów przez edytowalne profile, nawiguj po sparsowanych polach i znacznikach czasu, scalaj wiele źródeł na jednej osi czasu, śledź pojedyncze żądanie między źródłami i analizuj częstości / percentyle / top-N wartości — wszystko bez ładowania surowego tekstu do zwykłej karty edytora.

Gdzie ją znaleźć

Wtyczka dodaje trzy pozycje w menu Plik:

  • Plik ▸ Otwórz jako log… — otwiera pojedynczy plik logu w dedykowanym oknie Widoku logu.
  • Plik ▸ Otwórz scalone logi… — wybierz dwa lub więcej plików, każdemu przypisz profil i zobacz je przeplecione na jednej osi czasu.
  • Plik ▸ Otwórz log systemowy… (tylko Windows) — odpytuj Dziennik zdarzeń Windows w tym samym widoku, z filtrami zepchniętymi do PowerShellowego Get-WinEvent.

Strona Preferencje ▸ Wtyczki ▸ Analizator logów pozwala ustawić domyślne chipy poziomów, profil zapasowy dla plików niepasujących do globów, próg „ostrzeż przed parsowaniem plików powyżej N MB", domyślny tryb filtra oraz interwał odpytywania follow-tail — jedno pokrętło dla timera ogona pliku i strumienia logu systemowego (każde odpytanie Dziennika zdarzeń Windows uruchamia proces PowerShell, więc ciężkie źródła mogą chcieć wolniej).

Duże pliki parsują się w wątku tła z żywym licznikiem rekordów, a kosztowne agregacje (szablony komunikatów, anomalie) też liczą się w tle — pasek stanu pokazuje „Analizowanie statystyk w tle…", a panele wypełniają się, gdy są gotowe, więc okno pozostaje responsywne. Przy bardzo dużych plikach statystyki agregują najnowsze 150 000 rekordów, a oś czasu próbkuje cały zakres.

Widok logu (jeden plik)

Otwarcie logu pokazuje dedykowane okno Widok logu. Odzwierciedla ergonomię tabelowych okien edytora (jak okno Porównania) i trzyma się z dala od paska kart edytora.

Układ

  • Pasek narzędzi — chipy poziomów (TRACE…FATAL), tryb filtra + linia filtra, Następny / Poprzedni błąd (F8 / Shift+F8), Idź do czasu (Ctrl+G).
  • Pasek osi czasu u góry — wolumen zdarzeń w kubełkach czasu, kolorowany poziomami. Przeciągnij zakres, aby filtrować po czasie; kliknij słupek, aby przeskoczyć tabelą do pierwszego rekordu w tym kubełku lub po nim.
  • Tabela pośrodku — Czas / Poziom / Źródło / Komunikat, zwirtualizowana, więc przewija się płynnie nawet przy setkach tysięcy rekordów.
  • Panel szczegółów pod tabelą — pełny, surowy wielolinijkowy wpis wybranego wiersza.
  • Panel statystyk zadokowany po prawej — liczniki per poziom, częstość zdarzeń, wybierak percentyli (p50/p95/p99 po dowolnym polu liczbowym, domyślnie bytes), rozkład klas statusów HTTP (1xx…5xx, ukryty bez pola status) i tabela top-N po dowolnym polu (domyślnie url, limit 25 wierszy).

Tryby filtra

Linia filtra na pasku narzędzi przyjmuje pięć rodzajów wyrażeń; tryb wybierasz z listy po jej lewej:

Tryb Co dopasowuje
Zwykły Podłańcuch bez rozróżniania wielkości liter w surowej linii.
Słowa Tokeny rozdzielone białymi znakami; każdy token musi wystąpić gdzieś w linii, w dowolnej kolejności. phpinfo GET dopasowuje linię zawierającą i phpinfo, i GET.
Wieloznaczniki Glob * i ? na surowej linii, bez rozróżniania wielkości liter.
Regex Zwykły wzorzec QRegularExpression, domyślnie bez rozróżniania wielkości liter.
Zapytanie Ustrukturyzowana gramatyka z predykatami pól, poziomów i czasu plus AND/OR/NOT i nawiasy.

Przykłady trybu Zapytanie:

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)

Linia filtra tłumi pisanie przez 200 ms, żeby tabela nie filtrowała się przy każdym naciśnięciu klawisza; Enter albo utrata fokusu stosuje filtr od razu, wyczyszczenie linii też. Gdy wyrażenie Wieloznaczniki / Regex / Zapytanie się nie kompiluje, linia robi się czerwona, a podpowiedź pokazuje diagnostykę — proxy trzyma na ekranie poprzedni poprawny filtr, więc tabela nie pustoszeje podczas pisania.

Nawigacja

  • F8 / Shift+F8 — następny / poprzedni rekord błędu lub krytyczny.
  • Ctrl+G — idź do konkretnego czasu (UTC, popup z kalendarzem).
  • Kliknięcie słupka osi czasu skacze do pierwszego rekordu w kubełku.

Te trzy skróty są remapowalne w Mapowaniu skrótów (kategoria Log Analyzer); otwarte Widoki logu stosują remap natychmiast, a podpowiedzi paska narzędzi pokazują bieżący skrót.

Żywe parsowanie + anulowanie

Duże pliki pokazują rekordy w dziesiątkach milisekund; parsowanie trwa w tle, a tabela rośnie w miarę napływu rekordów. Filtrowanie, przewijanie i F8 działają, gdy parsowanie jeszcze trwa. Zamknięcie okna szybko zatrzymuje workera.

Widok scalonych logów

Plik ▸ Otwórz scalone logi… pozwala badać problem rozciągnięty na wiele źródeł — log klienta plus log serwera, log aplikacji plus dziennik systemowy, web access plus error itd.

Wybór profilu per plik

Po wyborze dwóch lub więcej plików widzisz małe okno z wierszem na plik i listą profili per wiersz. Lista jest wstępnie wybrana przez dopasowanie nazwy pliku do globów nazw każdego profilu (bez rozróżniania wielkości liter). Dla typowego wdrożenia nginx access.log sam wybiera nginx — access log (default combined), a error.lognginx — error log. Przed OK możesz każdy wiersz nadpisać ręcznie.

Układ

  • Pasek narzędzi — pola widoczności per źródło (każda etykieta w kolorze toru źródła), chipy poziomów, linia filtra z listą trybów, kontrolki śledzenia (lista + Śledź / Wyczyść), przełącznik Diagram sekwencji, przełącznik Obok siebie.
  • Pasek osi czasu u góry — skumulowany histogram per źródło z jednym torem na źródło, więc skorelowane wybuchy widać gołym okiem.
  • Baner śledzenia nad tabelą — bursztynowy pasek widoczny tylko przy aktywnym filtrze śledzenia: Following <pole> = <wartość> — N wierszy we wszystkich źródłach.
  • Główny obszar stosu — trzy strony przełączane z paska narzędzi:
    • Tabela (domyślnie): jeden wiersz na scalony rekord z kolumnami Czas / Źr / Poziom / Logger / Komunikat; kolor tekstu kolumny Źr to kolor toru źródła, więc tożsamość źródła skanujesz wzrokiem.
    • Diagram sekwencji — zobacz Śledzenie.
    • Panele obok siebie — zobacz Obok siebie.
  • Panel szczegółów pod tabelą.

Filtry, które się składają

W widoku scalonym potok filtrów działa w tej kolejności, wszystkie nakładają się na siebie:

  1. Widoczność źródeł — pola per źródło na pasku narzędzi.
  2. Chipy poziomów — TRACE…FATAL.
  3. Śledzenie — niżej.
  4. Filtr tekstowy — Zwykły / Słowa / Wieloznaczniki / Regex / Zapytanie (te same tryby i zachowanie co w widoku jednego pliku, zastosowane do scalonego strumienia).

Możesz więc np. wykonać level>=ERROR AND status:500 naraz na logach access i error nginxa jednym wyrażeniem i śledzić jednego klienta przez oba — filtr śledzenia zawęża zbiór dalej, nie psując filtrów poziomu / źródła / tekstu.

Śledzenie (Follow trace)

  1. Wybierz klucz korelacji w liście Trace: paska narzędzi. Jest zasiana konwencjonalnym zestawem (trace_id / request_id / session_id / correlation_id / span_id / xRequestId) i każdą odrębną nazwą pola faktycznie obecną w załadowanych rekordach. W razie potrzeby wpisz własną nazwę.
  2. Wybierz wiersz w tabeli.
  3. Kliknij Follow trace — albo kliknij wiersz prawym przyciskiem i wybierz Follow trace: \<pole>=\<wartość> dla dowolnego konwencjonalnego klucza, jaki rekord niesie (droga jednym ruchem, bez kroku z listą).

Tabela natychmiast filtruje się do rekordów dzielących wartość tego klucza we wszystkich źródłach. Kliknij Clear trace, aby zdjąć filtr.

Diagram sekwencji

Gdy filtr śledzenia jest aktywny i widoczne są dokładnie 2–4 źródła, staje się dostępny przełącznik Diagram sekwencji. Przełącza główny obszar w diagram o stałych torach:

  • Każde widoczne źródło to pionowy tor z kolorową próbką w etykiecie u góry.
  • Jeden wiersz na rekord, czas płynie z góry na dół. Rzeczywisty znacznik czasu jest po lewej, więc nie tracisz precyzji; wiersze są rangowe (stała wysokość), a nie proporcjonalne do czasu, bo prawdziwe śledzenie ma wybuchy i długie pauzy — oś proporcjonalna zmarnowałaby większość ekranu na pauzy.
  • Kolorowa kropka na torze właściciela plus subtelna szara strzałka między kolejnymi rekordami na różnych torach — dosłownie widać, jak żądanie odbija się między systemami.
  • Chip poziomu i tekst komunikatu po prawej.

Klik w wiersz diagramu przewija tabelę pod spodem do tego rekordu. Wyłącz przełącznik, aby wrócić do tabeli.

Przy >4 źródłach diagram jest wyłączony i zostaje widok tabeli.

Panele obok siebie

Gdy widoczne są dokładnie dwa źródła, dostępny staje się przełącznik Obok siebie. Dzieli główny obszar na dwa panele tabel — po jednym źródle — z pozycjami przewijania sprzężonymi po znaczniku czasu: przewiń jeden panel, a drugi podąża do najbliższego rekordu w tym czasie lub po nim. Dryf zegarów serwerów widać naturalnie jako rozjeżdżanie się paneli.

Przełączniki Diagram sekwencji i Obok siebie wykluczają się wzajemnie (włączenie jednego wyłącza drugi); oba wracają do widoku tabeli, gdy liczba aktywnych źródeł wyjdzie poza obsługiwany zakres.

Natywne logi systemowe (Windows)

Plik ▸ Otwórz log systemowy… odpytuje Dziennik zdarzeń Windows bez potrzeby pliku na dysku. Okno pyta o kanał (Application / System / Security / nazwa własna), opcjonalny minimalny poziom i limit rekordów. Wtyczka uruchamia PowerShellowe Get-WinEvent | ConvertTo-Json -Compress z filtrem zepchniętym w dół, po czym parsuje wyjściowy NDJSON dołączonym profilem windows-event-log.

Akcja jest rejestrowana tylko, gdy host naprawdę ma działające źródło Dziennika zdarzeń Windows — na Linuksie i macOS jest autentycznie nieobecna, a nie wyszarzona.

Źródła unified log macOS i journald Linuksa są planowane i wpasują się za ten sam wewnętrzny interfejs, bez zmian UI, gdy wylądują.

Profile

Silnik nie ma wbudowanych, specjalnie traktowanych parserów. Każdy obsługiwany format — Apache, nginx, syslog, JSON Lines, logfmt, CSV, Dziennik zdarzeń Windows — to plik JSON LogProfile dostarczany w katalogu log-profiles/ aplikacji. Profile użytkownika leżą w folderze log-profiles/ katalogu konfiguracji użytkownika i nadpisują dołączone po id.

Każdy profil opisuje:

  • model liniiregex, json, logfmt, csv albo delimited.
  • znacznik czasu — które pole, akceptowane formaty w stylu strftime, strefa źródłowa, jednostki epoki.
  • poziom — które pole plus mapowanie surowych tokenów na kanoniczny enum Trace / Debug / Info / Warn / Error / Fatal.
  • kontynuację — jak kolejne linie kleją się do bieżącego rekordu (stosy Javy stają się jednym wpisem, nie trzydziestoma).
  • pola pochodne — dodatkowe pola liczone pod-wzorcem po istniejącym polu. Dołączone profile apache + nginx używają tego, by wystawić jednolite pole client_ip, dzięki czemu Follow trace widoku scalonego koreluje zdarzenia access i error tego samego klienta w obu źródłach.
  • rotację — glob odkrywający zrotowane rodzeństwo źródła, regułę porządkowania (numeric-suffix, embedded-date, first-record-time, mtime) plus opcjonalną przezroczystą dekompresję segmentów .gz i .zip.

Edytor profili z chwytaczem pól, aliasami w stylu grok i żywym testerem znaczników czasu jest planowany w kontynuacji.

Motywy

Kolory per poziom pochodzą z motywu — wtyczka rejestruje kategorię palety na kanoniczny poziom, Edytor motywów je pokazuje, a każdy motyw może je nadpisać. Zmiana motywu aktualizuje kolumnę poziomu, pasek osi czasu, panel statystyk i diagram sekwencji równocześnie.

Zobacz też

  • Porównanie / diff — okno Porównania, na którym wzorowane są okna Analizatora logów.
  • Logowanie i diagnostyka — własny plik logu edytora (co innego niż widok Analizatora logów na dowolne formaty logów).