Sobes.tech
Middle

Opowiedz o swoim doświadczeniu w analizie logów.

sobes.tech AI

Odpowiedź od AI

Analiza logów była wykorzystywana do debugowania, monitorowania i poszukiwania przyczyn incydentów.

Główne scenariusze użycia:

  • Wyszukiwanie defektów: Identyfikacja błędów, ostrzeżeń i wyjątków generowanych w logach aplikacji, serwera lub bazy danych.
  • Diagnostyka wydajności: Analiza czasu odpowiedzi, obciążenia CPU, zużycia pamięci na podstawie logów systemów monitorujących lub samych aplikacji.
  • Śledztwo w sprawie incydentów: Odzyskiwanie chronologii zdarzeń, które doprowadziły do awarii, na podstawie logów różnych komponentów systemu.
  • Monitorowanie stanu systemu: Konfiguracja alertów na kluczowe zdarzenia lub błędy w logach.
  • Analiza zachowania użytkownika: Śledzenie sekwencji działań użytkownika na podstawie logów zapytań do API lub serwera WWW.

Narzędzia i podejścia:

  • Edytory tekstu i narzędzia wiersza poleceń: Dla małych projektów lub analizy lokalnej używano grep, awk, sed w systemach Linux/Unix.
  • Zcentralizowane systemy logowania: Pracowano z ELK stack (Elasticsearch, Logstash, Kibana), Grafana Loki. Systemy te umożliwiają zbieranie logów z różnych źródeł, centralne przechowywanie, indeksowanie i wizualizację. Użycie Kibana lub Grafana do tworzenia dashboardów i interaktywnych wyszukiwań w logach było rutynowe.
  • Logowanie strukturalne: Zachęcano zespoły deweloperskie do używania formatów logów ułatwiających parsowanie (np. JSON), dodając ID korelacji do łączenia zapytań między usługami.
  • Monitorowanie i alerty: Konfigurowano reguły w systemach monitorowania (Prometheus) i logowania (ELK, Grafana) do wysyłania powiadomień przy krytycznych błędach lub przekroczeniu określonej liczby ostrzeżeń w logach.

Przykład użycia ELK do wyszukiwania błędu:

  1. Identyfikacja incydentu (np. skarga użytkownika).
  2. Przejście do Kibana, wybór odpowiedniego indeksu logów.
  3. Wprowadzenie słów kluczowych lub filtrów (np. ID użytkownika, czas zapytania, nazwa mikroserwisu).
  4. Wyszukiwanie po polu level: ERROR lub level: WARNING.
  5. Analiza stacktrace i logów otaczających, aby określić kontekst błędu i zidentyfikować moduł lub funkcję wywołującą awarię.
{
  "@timestamp": "2023-10-27T10:30:00.123Z",
  "level": "ERROR",
  "message": "Nie można połączyć się z bazą danych",
  "service": "user-service",
  "correlation_id": "abc-123",
  "error": {
    "type": "SQLException",
    "message": "Połączenie odrzucone",
    "stacktrace": "..." // Tutaj pełny stacktrace
  },
  "user_id": "user-xyz"
}

Analiza logów jest kluczową częścią procesu testowania i wsparcia produktu, umożliwiając szybkie wykrycie i lokalizację problemów.