#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
поле для создания индекса на основе времени.