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進行報警通知,所以觸發器這裡可以設定有有資料就報警。通過字串長度進行判斷。
勾選多重問題事件生成可以實現每條資料的郵件報警
郵件報警: