Вывод конвейера Logstash не создает запрошенный индекс

#logstash

#logstash

Вопрос:

Мой плагин вывода настроен следующим образом:

 output {
  stdout { codec => rubydebug { metadata => true } }
  elasticsearch {
    hosts => ["elasticsearch:443"]
    ssl => true
    cacert => 'cacert.crt'
    user => "logstash_internal"
    password => "x-pack-test-password"
    index => "logstash-ddo-%{ xxxx.ww}"
  }
}
  

Когда я запрашиваю эластичный с:

 GET /_cat/indices/logstash-*?vamp;s=index
  

Я получаю следующее:

 health status index         uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   logstash-ddo- oyMaZ1jeQPCOhI8YDXnbxw   1   1      78687            0     64.8mb         32.2mb
  

Я бы ожидал, что это будет, например:

 logstash-ddo-2020-44
  

Я проверил и перепроверил файл конфигурации конвейера, и у меня нет идей. Ребята, вы что-нибудь видите?

Logstash не сообщает ни о каких ошибках. Я на версии 7.9.2 (dockerized)

Комментарии:

1. Можете ли вы предоставить доступ к остальной части вашего конвейера и образцу вашего документа до logstash и после? Вы по какой-либо причине удаляете @timestamp поле?

2. @leandrojmp, ты попал в точку, я не удалял временную метку, но переименовал ее в ingestion_timestamp, поскольку реальная временная метка, которую я хочу использовать для временной шкалы в kibana, является частью самого сообщения журнала. Отправьте ваше предложение в качестве ответа, и я приму его! Большое спасибо. Теперь индекс создается, как и ожидалось. Есть ли способ основать xxxx.ww на другом поле?

3. Я так не думаю, logstash использует @timestamp поле, поэтому его нужно сохранить, но вы можете создать новое поле с именем ingestion_timestamp с тем же значением, используя mutate фильтр.

4. Это то, что я сделаю. Спасибо!

Ответ №1:

Для создания индекса на основе даты события logstash использует дату из @timestamp поля.

Поскольку ваше имя индекса не получает год и номер недели, вы либо удаляете, либо переименовываете @timestamp поле.

Вам нужно сохранить @timestamp поле в вашем документе, если вы хотите изменить его имя, вы можете создать из него новое поле, но logstash нужно @timestamp поле для создания индекса на основе времени.