Расскажи про свой опыт с системами логирования

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

Ответ

В DevOps-практике я выстраивал централизованные системы логирования для микросервисных архитектур в Kubernetes. Основной стек: Fluent Bit как легковесный сборщик логов в DaemonSet, Elasticsearch для хранения и индексации, и Kibana для визуализации. Настраивал парсинг структурированных логов (JSON) и Grok-паттерны для неструктурированных.

Пример конфигурации Fluent Bit для парсинга JSON-логов Nginx и обогащения метаданными Pod:

[INPUT]
    Name              tail
    Path              /var/log/containers/*nginx*.log
    Parser            docker
    Tag               kube.*
    Mem_Buf_Limit     5MB

[FILTER]
    Name                kubernetes
    Match               kube.*
    Kube_URL            https://kubernetes.default.svc.cluster.local:443
    Merge_Log           On

[FILTER]
    Name                parser
    Match               kube.*
    Key_Name            log
    Parser              nginx_json
    Reserve_Data        On

[OUTPUT]
    Name                es
    Match               *
    Host                elasticsearch-master
    Port                9200
    Logstash_Format     On
    Logstash_Prefix     fluent-bit

Для высоконагруженных систем также использовал Grafana Loki в связке с Promtail, что экономичнее по ресурсам при поиске по меткам. Настраивал алертинг в Grafana на основе паттернов в логах (например, рост количества 5xx ошибок) и политики ротации/удаления индексов в Elasticsearch с помощью Curator.