1. 程式人生 > >logstasg zabbix外掛詳解

logstasg zabbix外掛詳解

Logstash錯誤日誌傳送到Zabbix並報警

1.安裝logstash-output-zabbix
logstash-output-zabbix是一個社群維護的外掛,它預設不安裝,但是它安裝起來也很容易,直接在logstash中執行即可:

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

對於內網環境,我們可以將外掛打包然後在內網環境進行本地安裝即可:

# ./bin/logstash-plugin prepare-offline-pack --overwrite --output /root/logstash-output-zabbix.zip logstash-output-zabbix 
Offline package created at: /root/logstash-output-zabbix.zip You can install it with this command `bin/logstash-plugin install file:///root/logstash-output-zabbix.zip`

2.建立一個logstash測試檔案,測試到zabbix的輸出是否在正常

input {
   file {
        path => "/home/elk/test.log"
        start_position => "beginning"
add_field => [ "[@metadata][zabbix_key]" , "logstash" ] add_field => [ "[@metadata][zabbix_host]" , "node1" ] } } output { stdout { codec => rubydebug } zabbix { zabbix_host => "[@metadata][zabbix_host]" zabbix_key => "[@metadata][zabbix_key]"
zabbix_server_host => "192.168.20.200" zabbix_server_port => "10051" zabbix_value => "message" } }

3.配置zabbix
新建模板:logstash-output-zabbix,新建es群組;
在模板中建立監控項,型別選擇zabbix採集器,資訊型別設定為文字,鍵值和logstash配置檔案中的zabbix_key對應
這裡寫圖片描述
新增一個名為node1的主機,名稱需要和logstash配置檔案中的zabbix_host對應,新增logstash-output-zabbix模板

直接指定現有主機會出現如下問題:
[WARN ][logstash.outputs.zabbix ] Zabbix server at 192.168.20.200 rejected all items sent. {:zabbix_host=>”node1”}

4.檢視zabbix獲取到最新資料

echo "text" >>test.log

這裡寫圖片描述

5.自定義欄位來區分來自不同主機不同服務的錯誤日誌
以收集一臺伺服器上不同服務的錯誤日誌為例:

filebeat配置如下:對每個日誌新增一個能區分不同服務的欄位

filebeat.prospectors:
- type: log
  enabled: true
  paths:
    - /home/elk/server1_error.log
  fields:
    test: server1_error 
- type: log
  enabled: true
  paths:
    - /home/elk/server2_error.log
  fields:
    test: server2_error 

logstash配置如下所示:
新增一個messager欄位,格式為%{[beat][name]}-%{[fields][test]}-%{message},如果不想在報警郵件中包含錯誤日誌內容設定為%{[beat][name]}-%{[fields][test]}即可。

input {
        beats {
                port => "5044"
        }
}
filter {
        mutate{
                add_field => [ "[@metadata][zabbix_key]" , "logstash" ]
                add_field => [ "[@metadata][zabbix_host]" , "node1" ]
                add_field => [ "messager","%{[beat][name]}-%{[fields][test]}-%{message}" ]
                #remove_field =>["message"]
        }
}
output {
        stdout { codec => rubydebug }
        zabbix {
                zabbix_host => "[@metadata][zabbix_host]"
                zabbix_key => "[@metadata][zabbix_key]"
                zabbix_server_host => "192.168.20.200"
                zabbix_server_port => "10051"
                zabbix_value => "messager"
        }
}   

通過beat.name來區分不同主機,通過fields.test欄位區分不同的服務日誌

6.測試

echo "test1" >>server1_error.log 

這裡寫圖片描述

echo "test2" >>server2_error.log

這裡寫圖片描述

7.設定觸發器
思路:logstash收集服務日誌,如果有錯誤日誌會將錯誤資訊傳送到zabbix進行報警通知,所以觸發器這裡可以設定有有資料就報警。通過字串長度進行判斷。
這裡寫圖片描述
勾選多重問題事件生成可以實現每條資料的郵件報警

郵件報警:
這裡寫圖片描述