[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-logirovanie-kak-sobirat-i-analizirovat-logi-v-production":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},1305,"kak-sobirat-i-analizirovat-logi-v-production",43,"logirovanie","Логирование","📝","Как собирать и анализировать логи в production?","Принцип production-логирования: приложение пишет логи в stdout (JSON), инфраструктура собирает и доставляет их в систему агрегации для поиска, визуализации и алертинга.\n\n### Популярные стеки агрегации логов\n\n| Стек | Компоненты | Особенности |\n|------|-----------|-------------|\n| ELK | Elasticsearch + Logstash + Kibana | Мощный полнотекстовый поиск, высокое потребление ресурсов |\n| Grafana Loki | Promtail + Loki + Grafana | Легковесный, индексирует только метки, дешевле ELK |\n| Cloud-native | CloudWatch (AWS) \u002F Cloud Logging (GCP) \u002F Azure Monitor | Минимальная настройка, vendor lock-in |\n\n### Архитектура сбора логов\n\n```\nELK:         Приложение -> stdout (JSON) -> Filebeat\u002FLogstash -> Elasticsearch -> Kibana (UI)\nLoki:        Приложение -> stdout (JSON) -> Promtail -> Loki -> Grafana (UI)\nCloud:       Приложение -> stdout -> CloudWatch \u002F Cloud Logging \u002F Azure Monitor\n```\n\n### Логирование в Kubernetes\n\nВ Kubernetes стандартный подход — вывод логов в stdout:\n\n- Приложение пишет в stdout — kubelet собирает автоматически\n- Доступ через `kubectl logs` для быстрой диагностики\n- Для агрегации: DaemonSet с Promtail\u002FFluentd на каждой ноде читает `\u002Fvar\u002Flog\u002Fcontainers\u002F*.log` и отправляет в систему агрегации\n\nФайловое логирование внутри контейнера — антипаттерн: при рестарте пода файлы теряются.\n\n### Correlation ID для distributed tracing\n\nВ микросервисной архитектуре один запрос проходит через несколько сервисов. Для связывания логов используется correlation ID:\n\n```java\n\u002F\u002F Заголовок X-Request-ID проходит через все микросервисы\n\u002F\u002F Каждый сервис добавляет его в MDC -> в логи -> в систему агрегации\n\u002F\u002F В Kibana\u002FGrafana: фильтр по requestId показывает путь запроса через все сервисы\n```\n\nSpring Boot 3.x + Micrometer Tracing автоматизирует этот процесс:\n- Генерирует traceId и spanId\n- Пробрасывает через HTTP-заголовки (W3C Trace Context)\n- Добавляет в MDC, откуда попадает в логи\n\n### Retention policy\n\nОпределите сроки хранения для разных уровней:\n\n| Уровень | Рекомендуемый срок хранения |\n|---------|---------------------------|\n| DEBUG\u002FTRACE | 3-7 дней (если вообще включены) |\n| INFO | 30-90 дней |\n| WARN | 90 дней |\n| ERROR | 1 год |\n\n### Частые ошибки\n\n- Логи в файлы внутри контейнера — при рестарте пода файлы теряются; пишите в stdout\n- Отсутствие retention policy — логи растут бесконечно, Elasticsearch потребляет терабайты\n- Нет алертинга на ERROR — логи собираются, но никто не настроил уведомления\n- Отсутствие correlation ID — невозможно проследить путь запроса через микросервисы\n\n### Как используется в 2026\n\n- Grafana Loki вытесняет ELK для многих проектов (проще, дешевле)\n- OpenTelemetry унифицирует логи, метрики и трейсы в единый стандарт\n- Spring Boot 3.x + Micrometer — автоматическая интеграция с Grafana\u002FPrometheus\u002FTempo\n\n> **На собеседовании:** ключевые темы — stdout в Kubernetes (не файлы), structured JSON для машинного парсинга, correlation ID для distributed tracing. Частая ошибка — описать только ELK, не упомянув Loki и OpenTelemetry как современные альтернативы.","","senior",[15],"logging",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Как собирать и анализировать логи в production? — Gymterview","Принцип production-логирования: приложение пишет логи в stdout (JSON), инфраструктура собирает и доставляет их в систему агрегации для поиска, визуализации и ал","Принцип production-логирования: приложение пишет логи в stdout (JSON), инфраструктура собирает и доставляет их в систему",[15,13],"Принцип production-логирования: приложение пишет логи в stdout (JSON), инфраструктура собирает и доставляет их в систему агрегации для поиска, визуализации и алертинга.",true]