Как указать конвейер для модуля Filebeat Nginx? - PullRequest
3 голосов
/ 01 ноября 2019

У меня есть веб-сервер (Ubuntu) с Nginx + PHP.
Он имеет Filebeat, который отправляет журналы Nginx напрямую в узел загрузки Elastic (без Logstash или чего-либо еще).
Когда я только что установил его 1 раз,Я сделал некоторые настройки для конвейера, который создал Filebeat. Все работало отлично в течение месяца или около того.

Но я заметил, что каждое обновление Filebeat приводит к созданию нового конвейера. В настоящее время у меня есть эти:

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 для использования определенного конвейера?

Вот то, что я пытался, и это нене работает:

- 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

Он все еще использует filebeat-7.4.1-nginx-error-pipeline конвейер.

Вот инструкции Filebeat о том, как его настроить (но я не могу заставить его работать): https://github.com/elastic/beats/blob/7.4/filebeat/filebeat.reference.yml#L1129-L1130

Вопрос: как настроить модуль Filebeat для использования определенного конвейера?

Обновление (ноябрь 2019): я отправил связанную ошибку: https://github.com/elastic/beats/issues/14348

Ответы [ 2 ]

1 голос
/ 11 ноября 2019

В исходном коде beats я обнаружил, что идентификатор конвейера определяется следующими параметрами:

  • версия бита
  • имя модуля
  • имя набора файлов модуля
  • имя файла конвейера

Фрагмент исходного кода выглядит следующим образом:

// formatPipelineID generates the ID to be used for the pipeline ID in Elasticsearch
func formatPipelineID(module, fileset, path, beatVersion string) string {
    return fmt.Sprintf("filebeat-%s-%s-%s-%s", beatVersion, module, fileset, removeExt(filepath.Base(path)))
}

Таким образом, вы не можете назначить идентификатор конвейера, которому официально требуется поддержка эластичности.

На данный момент идентификатор конвейера изменяется вместе с четырьмя параметрами. Вы ДОЛЖНЫ изменить идентификатор конвейера вasticsearch при обновлении битов.

0 голосов
/ 06 ноября 2019

Конвейер может быть настроен либо в вашей конфигурации input или output, но не в модулях один.

Таким образом, в вашей конфигурации есть разные разделы, тот, который вы показываете в своем вопросе, предназначен длянастройка модуля nginx. Вам нужно открыть filebeat.yml и найти раздел output, в котором вы настроили elasticsearch и поместить туда конфигурацию конвейера:

#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["elk.slavikf.com:9200"]
  pipeline: filebeat-nginx-access-default

Если вам нужно использовать разные конвейеры в зависимости отхарактер данных, которые вы определенно можете сделать, используя конвейерные сопоставления :

output.elasticsearch:
  hosts: ["elk.slavikf.com:9200"]
  pipelines:
    - pipeline: "nginx_pipeline"
      when.contains:
        type: "nginx"
    - pipeline: "apache_pipeline"
      when.contains:
        type: "apache"
...