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郵件告警設置方式,可以自行百度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM