LogStash: преобразование в целое число в mutate не влияет

Я не могу заставить целочисленные сравнения работать в фильтре logstash, используя logstash 6.4.2. Когда я пытаюсь, я все равно получаю строку, а сравнения «> 10» завершаются ошибкой с исключением времени выполнения при чтении журналов: «сравнение строки с 10 не удалось»

Любая подсказка, что я делаю неправильно?

filter {
    mutate {
        add_field => { "[@metadata][day]" => "%{+dd}"} # generates '06' on 6. of month
        convert => { "[@metadata][day]" => "integer" }
        add_field => { "testDay" => "%{[@metadata][day]}" } # Copy     
}
0
0
857
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение от Badger (форум elastic.co):

Это ваша проблема. Ни одного обращенного не происходит. Мутирующий фильтр выполняет действия в фиксированном порядке, и как только он все это сделает, он украшает событие (это вызов filter_matched()), который реализует общие параметры, такие как add_field. Это означает, что преобразование выполняется до поля add_field, поэтому ни одно из полей не существует, когда вы пытаетесь их преобразовать. Разделите свою мутацию на две

-- Спасибо Барсуку за быстрое решение моего вопроса на https://discuss.elastic.co/t/howto-integer-comparison-in-logstash-filter/175675 с ответом, размещенным здесь для дальнейшего использования.

Вот официальная документация по этому поводу: elastic.co/guide/en/logstash/current/…

baudsp 11.04.2019 14:49

Другие вопросы по теме