Logstash Filter, добавить поле из разделенного массива, если не пустое - PullRequest
2 голосов
/ 15 мая 2019

Я делю два поля и назначаю разные элементы массива новым полям. Однако, когда они не существуют, они в итоге передают код в поле, например, "% {variable}"

Полагаю, я мог бы сделать 5 операторов if для элемента массива, чтобы увидеть, присутствует ли он перед назначением его новому полю, но это кажется очень грязным способом сделать это. Есть ли лучший способ назначить только если заполнен

split => { "HOSTALIAS" => ", " }
split => { "HOSTGROUP" => "," }

add_field => {
                    "host-group" => "%{[HOSTGROUP][0]}"
                    "ci_alias" => "%{[HOSTALIAS][0]}"
                    "blueprint-id" => "%{[HOSTALIAS][1]}"
                    "instance-id" => "%{[HOSTALIAS][2]}"
                    "vm-location" => "%{[HOSTALIAS][3]}"
          }

1 Ответ

0 голосов
/ 16 мая 2019

Вы можете использовать фильтр Грока. Здесь мы отбрасываем сообщения о сбоях, но мы могли бы по-другому с ними справиться.

filter {
    grok {
        match => [ "HOSTALIAS", "%{WORD:ci_alias},%{WORD:blueprint-id},%{WORD:instance-id},%{WORD:vm-location}"] 
    }
    if "_grokparsefailure" in [tags] {
        drop { }
    }
}
...