2017-01-12 7 views
0

Я triyng для мониторинга сервера irc. И я добычу для создания нового поля чисел (пример: Alert_level), только если сообщение соответствует определенному слову внутри. Пример: Сообщение: ABC | Alert_level: 1; Сообщение: ZYX | Alert_level: 3.Добавить поле, если оно соответствует

Сво работает код

input { 
     irc { 
       channels => "#xyz" 
       host => "a.b.c" 
       nick => "myusername" 
       catch_all => true 
      get_stats => true 
     } 
} 


output { 
     stdout { codec => "rubydebug" } 
     elasticsearch { 
             hosts => "localhost" 
             index => "logstash-irc-%{+YYYY.MM.dd}" 
     } 
} 

Спасибо!

+0

это не работает http://pastebin.com/tvfzCRKA – Jam

+0

Вам понадобится фильтр «grok». Покажите нам пример сообщения, которое вы получаете от входа 'irc'. – Val

ответ

1

Как предложено @Val, вам может потребоваться использовать фильтр grok, чтобы соответствовать чему-то от input. Например ваш filter может выглядеть примерно так:

filter {   
    grok { 
     match => { "message" => "%{GREEDYDATA:somedata}" }   
    } 

    if "ZYX" in [message]{ <-- change your condition accordingly 
     mutate { 
      add_field => { "%{Alert_level}" => "12345" } <-- somefield is the field name 
      convert => { "Alert_level" => "integer" } <-- do the conversion 
     } 

    } 
} 

ПРИМЕЧАНИЕ, что вы должны сделать преобразование для создания числового поля через logstash, где вы не можете напрямую создать одну. Вышеприведенное является просто образцом, чтобы вы могли воспроизводить. Измените матч grok в соответствии с вашими требованиями. Надеюсь, поможет!

+0

спасибо !. Я использовал это и работал: если «github» в [message] {mutate {add_field => {"Alert_level" => "1"}}} – Jam

+0

@JackMagor Рад, что это помогло .. :) – Kulasangar

 Смежные вопросы

  • Нет связанных вопросов^_^