Grok возвращает массив вместо одной строки - PullRequest
0 голосов
/ 25 августа 2018

Я новичок в Grok, и я столкнулся с этой проблемой, которую я просто не знаю, как решить.

Ниже мой матч по Grok:

grok {
      match => { "source" => "/var/log/nginx/sites/\b\w+\b/\b\w+\b/\b\w+\b/%{DATA:uuid}/" }
    }

    mutate {
      add_field => {
        "read_timestamp" => "%{@timestamp}"
        "token" => "%{[fields][token]}"
        "logzio_codec" => "%{[fields][logzio_codec]}"
        "uuid" => "%{uuid}"
        "type" => "%{[fields][type]}"
        "category" => "%{[fields][category]}"
      }
    }

для некоторыхпричина, UUID сопоставляется и приводит к массиву из 2 UUID (дублированные значения).Вместо uuid_string я получаю [uuid_string, uuid_string]

Я примерил https://grokdebug.herokuapp.com/ и получил то, что ожидал, поэтому мне интересно, что не так?

1 Ответ

0 голосов
/ 25 августа 2018

Итак, еще раз я неправильно понимаю, как работает Грок.Похоже, что после того, как сопоставление завершено, все поля уже добавлены в вывод.Таким образом, дополнительный uuid add_field в mutate приводит к тому, что поле добавляется дважды, а logstash думает, что это массив.

...