Logstash过滤日志发送到Zabbix并报警

1、应用场景

将Nginx日志中,所有报500错误的信息,通过Logstash筛选之后,将数据发送到zabbix并接收,Zabbix接收消息之后,通过触发器进行邮件报警。

2、安装logstash-output-zabbix

logstash-output-zabbix是一个社区维护的插件,它默认不安装,但是它安装起来也很容易,直接在logstash中运行即可:

bin/logstash-plugin install logstash-output-zabbix

3、修改Logstash配置文件

在Logstash的config目录中创建一个nginx.conf的文件:

input {
    beats {
            port => 5044
    }
}

filter {    if "wxself.gtafe.com" in [tags] {
        grok {
                match => { "message" => "%{IP:remote_addr} (?:%{DATA:remote_user}|-) \[%{HTTPDATE:timestamp}\] %{IPORHOST:http_host} %{DATA:request_method} %{DATA:request_uri} %{NUMBER:status} (?:%{NUMBER:body_bytes_sent}|-) (?:%{DATA:request_time}|-) \"(?:%{DATA:http_referer}|-)\" \"%{DATA:http_user_agent}\" (?:%{DATA:http_x_forwarded_for}|-) \"(?:%{DATA:http_cookie}|-)\""}
        }
        mutate {
                convert => ["status","integer"]
                convert => ["body_bytes_sent","integer"]
                convert => ["request_time","float"]
                add_field => [ "[@metadata][zabbix_key]" , "logstash-api-access" ]            在消息中添加zabbix中item的key值
                add_field => [ "[@metadata][zabbix_host]" , "EIP_weixin" ]                         在消息中添加zabbix中的host值,主机名
        }
        geoip {
                source=>"remote_addr"
        }
        date {
                match => [ "timestamp","dd/MMM/YYYY:HH:mm:ss Z"]
        }
        useragent {
                source=>"http_user_agent"
        }
        }
    
}

output {                if "wxself.gtafe.com" in [tags] {
                elasticsearch {
                       hosts => ["10.1.129.101:9200"]
                       index => "logstash-wxself.gtafe.com_10.1.134.60"
                       user => 'elastic'
                       password => '123456'
                      }
                }        if [status] == 500  {        过滤Nginx日志中status状态是500的信息
                 zabbix {
                        zabbix_host => "[@metadata][zabbix_host]"                 
                        zabbix_key => "[@metadata][zabbix_key]"
                        zabbix_server_host => "10.1.134.220"   
                        zabbix_server_port => "10051"
                        zabbix_value => "message"
                        }
                }


        stdout { codec => rubydebug }
}

4、配置Zabbix

在Zabbix的主机中创建一个监控项:

注意:监控项中的类型,需要设置成Zabbix采集器,即Zabbix trapper
如果Nginx日志中有500错误产生时,则Logstash会把信息发送给Zabbix

配置触发器:

触发器配置完成后,如果3分钟内有500的日志信息接收到,则会触发事件
具体Zabbix邮件告警设置方式,可以自行百度


上一篇: 没有了