2015-09-10 2 views
0

Моя задача - отправлять уведомления по электронной почте, если cron записывает ошибку в /var/log/cron.log.Журнальные сообщения Logstash от logstash-forwarder

Мой logstash-forwarder.conf:

{ 
    "network": { 
     "servers": [ "myserver.domain.com:5000" ], 
     "timeout": 15, 
     "ssl key": "/etc/logstash/logstash.key", 
     "ssl certificate": "/etc/logstash/logstash.crt", 
     "ssl ca": "/etc/logstash/ca.crt" 
    }, 

    "files": [ 
{ 
     "paths": [ 
     "/var/log/syslog" 
     ], 
     "fields": { "type": "syslog" } 
}, 
{ 
    "paths": [ 
     "/var/log/cron.log" 
    ], 
    "fields": { "type": "cron" } 
} 
    ] 
} 

logstash-input.conf:

input { 
    lumberjack { 
     port => 5000 
     type => "logs" 
     ssl_certificate => "/etc/ssl/private/logstash.crt" 
     ssl_key => "/etc/ssl/private/logstash.key" 
    } 
} 

logstash-filter.log:

filter { 
    if [type] == "syslog" { 
     grok { 
     match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" } 
     add_field => [ "received_at", "%{@timestamp}" ] 
     add_field => [ "received_from", "%{host}" ] 
    } 
    syslog_pri { } 
    date { 
     match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] 
     } 
    } 
} 
filter { 
    if [message] == "CRON" and [message] == "error" { 
    throttle { 
    key => "%{message}" 
    add_tag => "catched" 
     } 
    } 
} 

logstash-output.conf:

output { 
    elasticsearch { host => localhost } 
    stdout { codec => rubydebug } 
    if "catched" in [tags] { 
     email { 
      from => "[email protected]" 
      to => "[email protected]" 
      subject => "Alert from %{path}, from %{host}" 
      body => "Message is: \n'%{message}'. \nLog file:\n %{path}:\n\n%{message}.\n More information can be viewed in Kibana" 
     } 
    } 
} 

Теперь все события отправляются мне по почте. Как я могу получить только события ошибки из cron.log? Отфильтровываются ли они с помощью секции add_tag?

ответ

1

Я не уверен в содержании вашего /var/log/cron.log. Я думаю, что у вас есть условная проблема. Попробуйте использовать это:

if [type] == "cron" and [message] =~ /error/ { 
    throttle { 
    key => "%{message}" 
    add_tag => "catched" 
     } 
    } 
Смежные вопросы