Logstash整合zabbix 過濾Nginx 錯誤日誌並進行報警



通過logstash過濾nginx-error日誌,篩選日誌中比較嚴重報錯,並進行報警。

由於網絡上很多帖子都是要麼寫了怎麼篩選報錯,要麼就只翻譯了logstash-zabbix-output插件的使用說明,並沒有一個完整的配置,整個項目做完,整理出來供大家閱讀。 


【軟件版本】

zabbix 版本:2.4.8 
logstash 版本:2.4.0 
JDK 版本: 1.8.0_101 


【zabbix配置】 
首先配置zabbix的item,使其能夠成功接收logstash發送過來的信息. 
創建Template:“Configuration” -> “Templates” -> “Create template”

wKioL1kb5YixTxxiAAIWemPZxaM885.bmp-wh_50


這裏我對Template的名字叫“Log file check” 
然後創建Application:“Create applicaton”


wKioL1kb5bHxhLSSAAIGPvW589k405.bmp-wh_50



Application名字還叫“Log file check” 
最後創建item:“Create item”: 
注意四個地方:
Type 一定要選擇“Zabbix trapper”,否則無法接收logstash發送的信息; 
Key 一定要寫正確,最好不要有空格,需要在logstash中配置; 
Type of information 選擇 “Text”,因爲我傳過來的值是一段報錯日誌,所以選擇文本; 
Allowed hosts:允許傳送的主機,一定要設定爲logstash所在的主機。


wKiom1kb5d_j5EW1AAH71QR_ZFg784.bmp-wh_50


【Logstash配置】


注:logstash的下載及安裝不介紹。 


安裝目錄:/opt/logstash/ 


由於日誌量並沒有達到上W級,因此針對logstash進行了一些優化,降低了部分性能: 

# vim /opt/logstash/bin/logstash 

LS_HEAP_SIZE=500m 
LS_JAVA_OPTS="-server -Xmx200m"

【安裝logstash-output-zabbix插件】


/opt/logstash/bin/logstash-plugin install logstash-output-zabbix


logstash 配置文件: 


input { 
    file { 
        type => "error-log" # 指定類型,用於以後判斷操作 
        path => "/tmp/test.log" # 文件路徑 
        start_position => "beginning" # 文件開始位置 
        codec => multiline { # 使用多行匹配方式進行過濾 
            pattern => "^\d{4}" # 以4個數字開頭的爲第一行, 
            negate => true # 所有不以4個數字開頭的,均歸於上一行(下面what配置) 
            what => "previous" 
        }
    } 
}

filter {
    grok {    
        match => {         
            message:\s+\n.*Code:(?<Code>\d+).*Message:(?<Message>.+)\n.*File:(?<File>.+)\n.*Line:(?<Line>\s+\d+).*"     # 對於匹配規則,還是要針對自己場景自己寫    }       add_tag => [ "zabbix-sender" ]  # 添加一個標籤    add_field => [                  # 設定agent主機的主機名和key的映射        "zabbix_host", "web01",     # 主機名        "zabbix_key", "logstash"    # 添加item時,設定的key名稱    ]}    if "_grokparsefailure" in [tags] {          # 如果過濾報錯,那麼移除報錯標籤,不進行其他處理        mutate {            remove_tag => "_grokparsefailure"        }    }
}
output { # 輸出配置 
    stdout { # 測試時可以開啓終端輸出 
        codec => rubydebug 
        #codec => json # 可以選擇json格式的輸出還是rubydebug格式的輸出 
    } 
    zabbix { # 發送給zabbix的配置 
        zabbix_host => "zabbix_host" # zabbix_host指上面映射的主機,不能用ip 
        zabbix_key => "zabbix_key" # zabbix_key指上面映射的key,意思就
                                     是發送給某主機的某key,值爲zabbix_value 
        zabbix_server_host => "192.168.1.229" # zabbix server 
        zabbix_server_port => "10051" # zabbix server port 默認爲10051 
        zabbix_value => "Message" # 要發送的key值 
    } 
}

如果需要進行測試,可以在zabbix agent使用zabbix_sender進行測試:


/opt/zabbix/sender -z zabbix-server -p port -s agentservername -k keyname -o keyvalue

所有配置完成後,可以在監測日誌文件中輸入一些測試數據,並在zabbix web上查看是否正常出現數據:



wKiom1kb5krSfs7gAAMdqsa2laU915.bmp-wh_50



【配置報警】 
“configuration” -> “Templates” -> “Triggers” -> “Create Trigger”: 
Name:log error check 
Expression:判斷獲取值的長度是否爲0,如果不爲0,trigger爲problem狀態,發送報警 


wKioL1kb57XAkU_jAAFHYm3AD1w869.jpg-wh_50


其他關於報警相關配置請自行某度······


參考資料:

http://blog.sina.com.cn/s/blog_7ba28b620102xw2w.html

https://www.elastic.co/guide/en/logstash/current/plugins-outputs-zabbix.html

https://www.zabbix.org/wiki/Docs/protocols/zabbix_sender/2.0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章