Двоятся документы при использовании pipeline

Добрый день.
Логи с сервера exchange через filebeat отправлялись в logstash и дальше в elasticsearch. В logstash отрезались лишние поля логов сервера. Создали pipeline для удаления системных строк в документе и включили использование pipeline в filebeat.
Сейчас при создании нового лога в Kibana появляются сразу два документа. Первый выглядит так, как было до использования pipeline - с системными полями, второй документ без них, как и планировалось. Оба документа создаются в одно и то же время и содержат одну и ту же строчку лога.

Из-за чего может происходить такое дублирование?

А можно на конкретный пример посмотреть, а то не очень понятно о каком pipeline речь идет? В filebeats pipeline-ов то вроде нет, они есть только в elasticsearch и logstash.

Pipeline для ES. Вот вывод из Kibana через GET _ingest/pipeline/

  "remove-fields-exchange" : {
    "description" : "remove a exchange of fields",
    "processors" : [
      {
        "remove" : {
          "field" : [
            "agent.ephemeral_id",
            "agent.hostname",
            "agent.id",
            "agent.type",
            "agent.version",
            "ecs.version",
            "input.type",
            "log.offset",
            "log.file.path",
            "version"
          ],
          "ignore_failure" : true
        }
      }
    ]
  }
}

Понял, как конфиг filebeat выглядит?

#=========================== Filebeat inputs =============================
filebeat.inputs:
- type: log
  paths:
      - C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\MessageTracking\*.LOG
  fields:
     type: exchange_message_tracking
  fields_under_root: true
  scan_frequency: 5s
#============================= Filebeat modules ===============================
filebeat.config.modules:
  # Glob pattern for configuration loading
  path: ${path.config}/modules.d/*.yml
  # Set to true to enable config reloading
  reload.enabled: false
#==================== Elasticsearch template setting ==========================
setup.template.settings:
  index.number_of_shards: 1
  #index.codec: best_compression
  #_source.enabled: false
#================================ General =====================================
# The tags of the shipper are included in their own field with each
# transaction published.
tags: ["exchange"]
#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["102.1.111.130:5044"]
  pipeline: remove-fields-exchange

То есть все посылается в logstash?

output.logstash:
  # The Logstash hosts
  hosts: ["10.0.215.141:5044"]
  pipeline: remove-fields-exchange

На сколько я знаю, параметер pipeline в этом случае игнорируется. Вроде тут все нормально (если у вас никаких модулей не грузится). Тогда давайте смотреть на следующий шаг - logstash.

filter {
    if "exchange" in [tags] {
  csv {            columns => [ 'date-time', 'client-ip', 'client-hostname', 'server-ip', 'server-hostname', 'source-context', 'connector-id', 'source', 'event-id', 'internal-message-id', 'message-id', 'network-message-id', 'recipient-address'$
        remove_field => [ "date-time","directionality","event-id","input.type","message-info","source","type","custom-data","connector-id" ]
        }
  }
}

Модули не используются. После $ есть еще немного текста, просто копировать неудобно.

меня больше inputs и outputs интересуют

Input

input {
   beats {
     port => 5044
     }
 }

Output

 else if "exchange" in [tags] {
    elasticsearch {
        hosts     => ["102.1.111.211:9200","102.1.111.210:9200","102.1.111.209:9200"]
        index    => "exchange-%{+YYYY.MM.dd}"
      }
     }

Этот путь создает старую запись без pipeline. Должен быть еще один путь, который тут не появился. У вас еще одного output.elasticsearch где-нибудь нет в logstash или в filebeat?

Output точно был один. До включения pipeline поля резались в filbebeat и logstash. После некоторых изменений в фильтре logstash и перезапуске службы, pipeliene перестал работать вообще. Сейчас появилось подозрение что pipeline и не работал, а поля резались фильтром LS. Было несколько разных изменений конфгурации LS и. возможно. в какой-то момент забыли эти изменения применить.
Вероятно в нашем случае использование pipeline через LS нужно настраивать как сказано тут - https://www.elastic.co/guide/en/logstash/current/use-ingest-pipelines.html. Пока не получилось так настроить, придется на некоторое время поставить эту проблему на паузу. Когда будет время, все еще раз протестирую и напишу результат.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.