Ответ
Стек ELK (сейчас чаще Elastic Stack: Beats, Logstash, Elasticsearch, Kibana) предназначен для централизованного сбора, обработки, хранения и визуализации данных, в основном — машиночитаемых. Основные типы данных:
-
Логи приложений и систем (Log Data): Самый частый случай.
- Структурированные логи: JSON-логи из микросервисов (например, лог HTTP-запроса с полями
timestamp,method,path,statusCode,durationMs). - Неструктурированные/полуструктурированные логи: Текстовые логи Nginx, Apache, системные логи (
/var/log/syslog,journalctl), логи контейнеров Docker.
- Структурированные логи: JSON-логи из микросервисов (например, лог HTTP-запроса с полями
-
Метрики (Metric Data): Числовые временные ряды.
- Системные метрики: Загрузка CPU, использование памяти, дисковое I/O, сетевой трафик (собираются Metricbeat или агентами вроде node_exporter для Prometheus).
- Метрики приложений: Количество запросов в секунду, время ответа, количество ошибок, размер очереди (часто отправляются напрямую в StatsD или экспортируются в формате для Beats).
-
Трассировки распределённых систем (Trace Data): Данные для отслеживания пути запроса через множество сервисов (часто используется APM-агент Elastic или интеграция с Jaeger). Содержат информацию о вложенных спанах (spans), их длительности и ошибках.
-
Данные безопасности и аудита (Security Data): События входа в систему (SSH, sudo), подозрительная сетевая активность, изменения файлов (собирается Auditbeat, Filebeat с модулями безопасности).
Пример Filebeat конфигурации для сбора логов Nginx в формате JSON:
# filebeat.yml
filebeat.inputs:
- type: filestream
enabled: true
paths:
- /var/log/nginx/access-json.log
json.keys_under_root: true
json.add_error_key: true
output.elasticsearch:
hosts: ["elasticsearch-host:9200"]
indices:
- index: "nginx-access-%{+yyyy.MM.dd}"
setup.ilm.enabled: false
setup.template.enabled: false