Как был организован сбор и поиск логов на вашем проекте?

«Как был организован сбор и поиск логов на вашем проекте?» — вопрос из категории Логирование и мониторинг, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

На проекте использовался централизованный стек для логирования на основе ELK (Elasticsearch, Logstash, Kibana).

Архитектура и процесс:

  1. Генерация: Приложения и сервисы (Nginx, бэкенд, БД) писали логи в структурированном формате (например, JSON) в локальные файлы или stdout.
  2. Сбор: Агент Filebeat или Fluentd собирал логи с серверов и отправлял их в Logstash.
  3. Обработка: Logstash фильтровал, парсил (используя Grok-паттерны для кастомных форматов) и обогащал данные, преобразуя их в единую структуру.
  4. Хранение и индексация: Обработанные логи отправлялись в Elasticsearch для быстрого полнотекстового поиска и агрегаций.
  5. Визуализация и поиск: В Kibana создавались дашборды для мониторинга и выполнялся поиск по логам с помощью Lucene-подобного запросного языка.

Пример поиска в Kibana:

level: "ERROR" AND service: "payment-service" AND response_time:>1000 AND @timestamp:[now-1h TO now]

Этот запрос найдет все ошибки (ERROR) в сервисе payment-service с временем ответа более 1 секунды за последний час.

Дополнительные практики:

  • Алертинг: Настраивались правила для оповещения (в Slack, Telegram, PagerDuty) при появлении критических ошибок или аномалий в логах.
  • Индексирование: Правильная настройка индексов в Elasticsearch (с ротацией по времени или размеру) для управления объемом данных и производительностью.