Logstash sprintf форматирование для выходного плагина эластичного поиска не работает - PullRequest
0 голосов
/ 02 декабря 2018

У меня проблемы с использованием sprintf для ссылки на поля событий в выходном плагине эластичного поиска, и я не уверен, почему.Ниже приведено событие, полученное из Filebeat и отправленное в Elasticsearch после завершения фильтрации:

{
          "beat" => {
        "hostname" => "ca86fed16953",
            "name" => "ca86fed16953",
         "version" => "6.5.1"
    },
    "@timestamp" => 2018-12-02T05:13:21.879Z,
          "host" => {
        "name" => "ca86fed16953"
    },
          "tags" => [
        [0] "beats_input_codec_plain_applied",
        [1] "_grokparsefailure"
    ],
        "fields" => {
        "env" => "DEV"
    },
        "source" => "/usr/share/filebeat/dockerlogs/logstash_DEV.log",
      "@version" => "1",
    "prospector" => {
        "type" => "log"
    },
        "bgp_id" => "42313900",
       "message" => "{<some message here>}",
        "offset" => 1440990627,
         "input" => {
        "type" => "log"
    },
        "docker" => {
        "container" => {
            "id" => "logstash_DEV.log"
        }
    }
}

Я пытаюсь проиндексировать файлы на основе среды filebeat.Вот мой конфигурационный файл:

input {
  http { }
  beats {
    port => 5044
  }
}

filter {
  grok {
    patterns_dir => ["/usr/share/logstash/pipeline/patterns"]
    break_on_match => false
    match => { "message" => ["%{RUBY_LOGGER}"]
             }
  }
}

output {
  elasticsearch {
    hosts => ["elasticsearch:9200"]
    index => "%{[fields][env]}-%{+yyyy.MM.dd}"
  }
  stdout { codec => rubydebug }
}

Я думаю, что указанные поля событий уже были бы заполнены к тому времени, когда он достигнет выходного плагинаasticsearch.Однако на конце кибаны он не регистрирует отформатированный индекс.Вместо этого, с тех пор вот так:

enter image description here

Что я сделал не так?

1 Ответ

0 голосов
/ 03 декабря 2018

В документации к плагину Elasticsearch Output:
https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-manage_template

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

Если для параметра manage_template установлено значение false, эта функция отключается.Если вам требуется больший контроль над созданием шаблонов (например, динамическое создание индексов на основе имен полей), вам следует установить значение manage_template в false и использовать API REST для применения ваших шаблонов вручную.

По умолчанию эластичный поиск требуетуказать пользовательский шаблон, если используются другие имена индексов, отличные от logstash -% {+ YYYY.MM.dd}.Чтобы отключить, нам нужно включить ключ manage_template => false .

Так что с этим новым набором информации рабочая конфигурация должна быть:

output {
  elasticsearch {
    hosts => ["elasticsearch:9200"]
    index => "%{[fields][env]}-%{+yyyy.MM.dd}"
    manage_template => false
  }
  stdout { codec => rubydebug }
}
...