Что знаешь про логи в контексте DevOps?

«Что знаешь про логи в контексте DevOps?» — вопрос из категории Мониторинг и логирование, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В DevOps логи — это критически важный источник данных для обеспечения надежности, отладки и понимания поведения системы. Я работаю с ними на всех этапах: от сбора и агрегации до анализа и визуализации.

Ключевые практики и инструменты:

  • Структурированное логирование (JSON): Использую форматы вроде JSON для логов приложений, что упрощает парсинг и интеграцию с системами анализа.
    {"timestamp": "2023-10-05T14:30:00Z", "level": "ERROR", "service": "auth-api", "trace_id": "abc123", "message": "Failed to connect to database"}
  • Централизованный сбор: Настраиваю агенты (Filebeat, Fluentd/Fluent Bit) на серверах для отправки логов в центральное хранилище, чтобы избежать их потери и упростить поиск.
  • Стек ELK/EFK и Loki: Чаще всего разворачиваю и настраиваю Elastic Stack (Elasticsearch, Logstash/Fluentd, Kibana) или Grafana Loki для хранения и визуализации. Loki, в частности, эффективен для логов в Kubernetes благодаря интеграции с метками подов.
  • Ротация и политики хранения: Настраиваю logrotate на нодах и политики индексов в Elasticsearch или сроки хранения в Loki, чтобы управлять дисковым пространством и соответствовать требованиям.
  • Использование в алертинге: Настраиваю алерты в Prometheus Alertmanager или через Grafana на основе паттернов в логах (например, частота ошибок 5xx).