Подтвердить что ты не робот

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

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

Например,

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

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

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

Спасибо.

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

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

if [NOMATCHES] {
    ...
}