zabbix版本3.2.4web
需求:express
要遠程監控一臺服務器A,但只能經過遠程服務器鏈接本地服務器B,但B不能主動連A(由於A沒有固定公網ip)centos
使用了zabbix_agent的active模式,但這種模式不能使用ping方式肯定agent是否存活,使用觸發規則nodata測試服務器
A服務器網絡不穩定,很容易誤觸發規則(如有大神評論區教教我,是否是我哪裏設置錯了)網絡
最後 app
究其緣由,主要是使用觸發器失敗,改用了這種方法,當作心跳線使用dom
zabbix官方文檔:https://www.zabbix.com/documentation/3.2/manual/config/triggers/expression函數
最近3分鐘內沒有心跳工具
使用函數nodata():性能
{zabbix.zabbix.com:tick.nodata(3m)}=1
'tick'必須有「Zabbix trapper」類型。爲了使此觸發器工做,必須定義項目'tick'。主機應使用zabbix_sender按期發送此參數的數據。若是在180秒內沒有收到數據,則觸發值成爲問題。
zabbix_sender是一個命令行工具,能夠用來發送Zabbix服務器處理性能數據。該工具一般用於長時間運行的用戶腳本,用於按期發送可用性和性能數據。
zabbix獲取key值有超時時間,若是自定義的key腳本通常須要執行很長時間,這根本無法去作監控,那怎麼辦呢?
使用zabbix監控類型zabbix trapper,須要配合zabbix_sender給它傳遞數據。關於trapper的用法,咱們來弄個實例。
執行超長時間腳本,如:腳本去幾十臺服務器拉去數據,每一個日誌都上G,而後日誌整合在一塊兒,統計出返回值。這種腳本好比超時,因此咱們必須改爲讓客戶端提交數據的方式。
這裏是zabbix-sender設計的初衷,被我這樣用也是無奈!!
[root@localhost]# ./zabbix_sender usage: zabbix_sender [-Vhv] {[-zpsI] -ko | [-zpI] -T -i <file> -r} [-c <file>] 參數說明: -c --config <file> 配置文件絕對路徑 -z --zabbix-server <server> zabbix server的IP地址 -p --port <server port> zabbix server端口.默認10051 -s --host <hostname> 主機名,zabbix裏面配置的主機名(不是服務器的hostname),不能使用ip地址 -I --source-address <IP address> 源IP -k --key <key> 監控項的key -o --value <key value> key值 -i --input-file <input file> 從文件裏面讀取hostname、key、value 一行爲一條數據,使用空格做爲分隔符,若是主機名帶空格,那麼請使用雙引號包起來 -T --with-timestamps 一行一條數據,空格做爲分隔符: <hostname> <key> <timestamp> <value>,配合 --input-file option,timestamp爲unix時間戳 -r --real-time 將數據實時提交給服務器 -v --verbose 詳細模式, -vv 更詳細
zabbix獲取數據有超時時間,若是一些數據須要執行比較長的時間才能獲取的話,那麼zabbix會出現異常,考慮到這種狀況,zabbix增長了Trapper功能,客戶端本身提交數據給zabbix,這個通道即是trapper.
使用trapper的步驟以下:
一、進入zabbix web界面選擇一臺主機(或模板)--items--Create item 定義一個key用來接受客戶端的sender,以下圖:
(1)我採用的是模板添加,方便之後統一添加
(2)也能夠採用hosts添加items
這裏的幾幅圖看不清楚,博客園貌似圖片有限制加上小圖
###############################
以前百度了許多關於sender的內容,但都是2.2或2.4版本,比較老,3.2.4仍是有些不同的
到這裏建立items成功
(這裏的key是自定義的,在使用sender時須要用到,大概是祕鑰配對的感受,不知道對不對)
二、回到客戶端使用如下命令sender數據
zabbix_sender -s "126" -z 192.168.1.104 -p 10050 -k "trap" -o 1
這裏
[root@localhost.localdomain 五 4月 28 14:52:32 ~]# zabbix_sender -s "126" -z 192.168.1.104 -k "trap" -o 1 info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000050" sent: 1; skipped: 0; total: 1
這裏會提示是否正確發送,若failed是1,表示有一個失敗,即發送消息失敗,這裏s跟k參數最好都加上引號,以前就是這個緣由一直失敗
三、再回到zabbix web端選擇前面的主機--點擊Latest data 以下圖:
這時看見在這裏是沒有數據的,這裏就跟2.4版本不同了
我只用數字1表示有信號
這裏就告一段落了
四、添加觸發器
這裏的觸發規則,具體的我也不會,我只是套用了模板,使用trap這個key鍵,語句是nodata,而後再設置對應的參數,這裏具體的要看官方文檔了
到這裏就設置好了server端
五、客戶端添加腳本
再到agent端
zabbix_sender -s "126" -z 192.168.1.104 -k "trap" -o 1
添加執行權限
chmod +x zabbix_sender.sh
添加定時計劃
* * * * * /usr/local/src/zabbix_sender.sh
而後就能運行了
這樣就算一個完整的報警了,雖然很爛