Ответ
Elasticsearch сам по себе не является системой хранения файловых логов. Он хранит индексированные и структурированные данные логов внутри своих индексов, которые физически лежат на дисках нод кластера. А файловые логи самого Elasticsearch (журналы его работы) пишутся в отдельную директорию.
1. Хранение индексированных логов приложений:
- Куда: Данные попадают в индексы (например,
logstash-2024.05.15-000001). Эти индексы — это набор сегментов (shards), распределенных по нодам кластера. - Путь: Физическое расположение данных задается параметром
path.dataвelasticsearch.yml(по умолчанию./dataв tar-установке, часто/var/lib/elasticsearch). - Как попадают: Через сборщики вроде Filebeat или Fluentd, которые отправляют логи на Logstash или напрямую в Elasticsearch по HTTP API.
2. Файловые логи Elasticsearch (журналы):
- Куда: Пишутся в директорию, указанную в
path.logs(по умолчанию/var/log/elasticsearch/). Там лежат файлыmy-cluster.log,my-cluster_deprecation.logи т.д. - Управление: Ротацией этих файловых логов обычно управляет сам Elasticsearch или системный демон
logrotate.
Пример конфигурации Filebeat для отправки логов Nginx в Elasticsearch:
# filebeat.yml
filebeat.inputs:
- type: filestream
id: nginx-logs
paths:
- /var/log/nginx/access.log
output.elasticsearch:
hosts: ["es-node-01:9200"]
indices:
- index: "nginx-access-%{+yyyy.MM.dd}"
setup.ilm.enabled: true # Включаем управление жизненным циклом индексов (ILM)
Ключевая практика: Для управления объемом данных я всегда настраиваю Index Lifecycle Management (ILM). Он автоматически перекладывает "горячие" индексы на быстрые диски, а затем удаляет старые логи по истечении заданного срока (например, 30 дней), что критически важно для DevOps-практик.