Имеется веб-сервер (Ubuntu) на котором работает Nginx + PHP.
На этом сервере стоит Filebeat, который отсылает логи веб-сервера на Elastic Ingestion node. То есть без Logstash, напрямую из Filebeat в Elastic. Трафик не сильно большой, так что нормально.
Когда я ставил Filebeat, то я немного подправил дефолтную pipeline, чтобы русские буквы в URL правильно показывались (urldecode).
Работает всё несколько месяцев, стабильно. Но каждый раз когда я делаю "apt upgrade" и если обновляется filebeat, то он начинает писать в новый индекс, в котором по новой создаётся дефолтный pipeline без моих правок.
Вопрос: как сконфигурировать Filebeat Nginx module, чтобы он использовал именно мой кастомный pipeline?
Сейчас когда я гляжу на все свои pipelines, то вот там сколько их:
elk.slavikf.com:9200/_ingest/pipeline/filebeat-*filebeat-nginx-access-default: {},
filebeat-7.3.1-nginx-error-pipeline: {},
filebeat-7.4.1-nginx-error-pipeline: {},
filebeat-7.2.0-nginx-access-default: {},
filebeat-7.3.2-nginx-error-pipeline: {},
filebeat-7.4.1-nginx-access-default: {},
filebeat-7.3.1-nginx-access-default: {},
filebeat-7.3.2-nginx-access-default: {},
filebeat-7.2.0-nginx-error-pipeline: {}
filebeat-nginx-access-default - это я создал, мой кастомный pipeline, а остальные я так понял создаются автоматически.
я пробовал прописывать вот это в свой nginx.yml, но не помогает:
- module: nginx
# Access logs
access:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
var.paths: ["/var/log/nginx/*/*access.log"]
# Convert the timestamp to UTC
var.convert_timezone: true
# The Ingest Node pipeline ID associated with this input. If this is set, it
# overwrites the pipeline option from the Elasticsearch output.
output.elasticsearch.pipeline: 'filebeat-nginx-access-default'
pipeline: 'filebeat-nginx-access-default
Создал баг у Эластика:
https://github.com/elastic/beats/issues/14348 can't specify pipeline for module
Но пока они что-то молчат.