Logstash условно проверить, существует ли тег?

Есть ли способ в logstash использовать условное выражение для проверки существования определенного тега?

Например,

grok {
match => [
"message", "Some expression to match|%{GREEDYDATA:NOMATCHES}"
]

если NOMATCHES существует Сделайте что-нибудь.

Как проверить, существует ли тег NOMATCHES?

Спасибо.


person CodeRunner    schedule 29.01.2014    source источник


Ответы (2)


Просто чтобы прояснить: предоставленный вами фрагмент конфигурации устанавливает поле, а не тег.

События Logstash можно рассматривать как словарь полей. На поле с именем tags ссылаются многие плагины через операции add_tag и remove_tag.

Вы можете проверить, установлен ли тег:

if "foo" in [tags] {
    ...
}

Но вы, кажется, хотите проверить, содержит ли поле что-нибудь:

if [NOMATCHES] =~ /.+/ {
    ...
}

Вышеупомянутое проверит, что NOMATCHES существует и не является пустым.

Справка: обзор файла конфигурации.

person rutter    schedule 29.01.2014

Следующий тест на существование также работает [проверено в Logstash 1.4.2], хотя он может не проверять непустое значение:

if [NOMATCHES] {
    ...
}
person dgassaway    schedule 28.07.2014
comment
Это проверяет, существует ли поле с именем NOMATCHES. Он не смотрит на стоимость. - person bradvido; 10.10.2014
comment
Если вы используете это, будьте осторожны, если значение NOMATCHES является логическим. stackoverflow.com/questions/26287082 / - person spuder; 20.04.2015