前提
這邊假設已經設定好 host,且 zabbix 有接上 grafana 情況後,繼續往下描述.
目的: 定時抓取某 log file 其中的特定關鍵字,用 zabbix-sender 傳送資訊給 zabbix server,並把資料設定報警到 telegram,資訊會用 grafana 的 log 顯示。
step1. 設定 item
正常 zabbix 設定機器流程:
建立 Hosts groups-> 建立 Templates->往 Template 內設定要監控的 item->再把 templates 連結到 Hosts Groups 上面->最後把主機也就是 Host 添加到指定的 Host groups 上面。
這邊因為特別需求關係(只有這一台機器需要),因此直接在該 Host 上面設定 item.
選 Hosts
![zabbix-side-bar](/assets/images/zabbix-side-bar-9ca4a1f3116d447b5a09cc577b209704.png)
因為是用 zabbix-sender 所以這邊 type 用 zabbix trapper,要注意機器上面都用 Key 跟 zabbix server 溝通,Name 是該 Item 的名字,兩個設定常常會搞混。
![zabbix-side-bar](/assets/images/zabbix-traper-56b38395d4722bd7c7303d094a64a3e4.png)
step2. 安裝 zabbix-sender 並傳資料
機器上腳本設定 zabbix_sender 傳送資料,用 key 跟 output 做傳送
# 安裝zabbix-sender
yum install zabbix-sender
# 傳資訊給zabbix server
zabbix_sender -z 10.121.0.9 -s yourHostName -k test -o "$(cat /tmp/Lost_connection_to_db_server_${range2}_${range1}.log)"
確認 zabbix 是否有收到資料
![zabbix-side-bar](/assets/images/zabbix-get-last-data-4f5035c4cd89c0a5bd7642c9c12dd638.png)
step3. 設定 grafana 抓取資料
確認有收到資料後,在 grafana 新建 panel
![zabbix-side-bar](/assets/images/grafana-add-new-panel-bb60eccf47e80c7f2c2cbb02942536af.png)
設定資料原,注意這邊的 Query Mode 是設定 Text,有很多種型態,選錯會找不到資料
![zabbix-side-bar](/assets/images/grafana-set-data-source-861012de7e8c4fbf707311228a71155d.png)
Grafana 模式記得要選 log,也可以使用其他模式玩玩看,因為這邊沒啥雷,就不特別截圖說明
(optional)step4. zabbix 告警 tg
先設定 Trigger,Problem expression 也就是當傳送資訊符合設定的條件就會引發告警,Recovery experssion 也就是當資訊符合哪些條件就會解除告警。
![zabbix-side-bar](/assets/images/zabbix-sender-b-log-12674fa7728409ba93f08ce3b314e90f.png)
確定完的確會告警跟回復後,就可以設定 TG 告警。先去 Administration->Media type 複製 Telegram 那格。
![zabbix-side-bar](/assets/images/zabbix-clone-telegrana-2ff897d7d94a2c5fea128dda989a63dd.png)
在 Token 位置加入你 TG Token
![zabbix-side-bar](/assets/images/zabbix-add-token-5636eb87fb7a7f27bdfe474efe54f31e.png)
建立新 User Group
![zabbix-side-bar](/assets/images/zabbix-add-zabbix-group-27771fa730ca2f4fdd2f0095b5303ff0.png)
設定該 User Group 對哪些 Host Group 有監控權限。
![zabbix-side-bar](/assets/images/zabbix-group-permission-fd95dfc4b5d7cc63e18161e07d5aa0da.png)
建立 User,並把該 User 加到 Group 內部,並設定當哪些狀態發生就往 TG 送資料
![zabbix-side-bar](/assets/images/zabbix-user-media-7b08a9012605c23fa5347612a4d86c60.png)
以上都 OK,可以會到前面 media type 那邊測試是否可以傳資料到TG
如果要將 Trigger 的資料送到 TG,一定要設定 Actions,這邊是一個坑,前面設定完了但都沒有送到 TG,結果發現這格沒有設定ZZZ
![zabbix-side-bar](/assets/images/zabbix-trigger-actions-to-tg-25d1c6bc96907c6f46a5c985f47f6ce3.png)