Dzienniki zdarzeń i ich przegląd

Zapis krzywej na papierze rejestratora

Dziennik zdarzeń jest bezużyteczny na dwa sposoby: gdy nie zapisuje nic istotnego i gdy zapisuje wszystko.

Co zapisywać

  • błędy wraz z okolicznościami wystąpienia,
  • operacje zmieniające dane,
  • logowania i próby nieudane,
  • uruchomienia zadań cyklicznych,
  • wywołania usług zewnętrznych i ich odpowiedzi.

Sam komunikat o błędzie rzadko wystarcza. Potrzebne są okoliczności: kto wykonywał operację, na jakich danych, z jakiego miejsca w systemie. Wpis bez tego kontekstu mówi, że coś się nie udało, ale nie pozwala tego powtórzyć — a błąd, którego nie da się odtworzyć, zwykle zostaje nienaprawiony.

Poziomy ważności

Rozróżnienie błędu od ostrzeżenia i od informacji. Bez tego nie da się odfiltrować rzeczy istotnych z tysięcy wpisów.

Poziom warto dobierać według skutku, nie według wrażenia. Błąd to sytuacja, w której operacja się nie wykonała. Ostrzeżenie — wykonała się, ale inaczej niż zwykle. Zbyt hojne używanie najwyższego poziomu sprawia, że filtrowanie po nim przestaje cokolwiek dawać.

Bez danych wrażliwych

Hasła, numery kart i pełne dane osobowe nie trafiają do dziennika. To najczęstszy sposób, w jaki takie dane wyciekają poza system.

Najczęściej dzieje się to przy zapisywaniu całej treści żądania albo odpowiedzi usługi zewnętrznej „na wszelki wypadek". Dzienniki bywają kopiowane, przekazywane do analizy i trzymane latami, więc raz zapisane dane zostają w wielu miejscach naraz. Szerszy zestaw zasad zawiera tekst o bezpieczeństwie skryptów administracyjnych.

Identyfikator zdarzenia

Wspólny znacznik dla wszystkich wpisów jednego żądania pozwala prześledzić przebieg. Bez niego wpisy z równoległych operacji mieszają się nierozerwalnie.

Ten sam identyfikator warto pokazać użytkownikowi przy komunikacie o błędzie. Zgłoszenie z takim numerem prowadzi prosto do właściwych wpisów, zamiast zaczynać od ustalania, kiedy dokładnie to było. Przy wymianie danych między systemami dobrze jest przekazywać go dalej — wtedy jedno zdarzenie da się prześledzić po obu stronach.

Rotacja

Dzienniki bez ograniczenia rozmiaru zapełniają dysk. Rotacja z ustalonym okresem przechowywania to jedno ustawienie i rozwiązany problem.

Okres przechowywania powinien wynikać z tego, do czego dziennik służy. Do diagnozy awarii wystarczają ostatnie tygodnie; do wyjaśniania nieprawidłowości w danych potrzeba dłuższej historii, ale wtedy lepiej trzymać ją spakowaną i poza serwerem produkcyjnym. To także najczęstsza przyczyna problemów opisanych w tekście o monitorowaniu miejsca na dysku.

Przegląd zamiast czekania

Zestawienie najczęstszych błędów raz w tygodniu pokazuje problemy, których nikt nie zgłosił, bo nauczył się je obchodzić.

Warto patrzeć nie tylko na liczby bezwzględne, ale i na zmianę. Nowy rodzaj błędu, który pojawił się po wdrożeniu, jest ważniejszy niż stary, powtarzalny i znany. Przegląd zajmuje kilkanaście minut i zwykle kończy się listą drobnych poprawek, które nigdy nie trafiłyby do zgłoszenia.