zabbix_sender用法實例


環境centos6.8

zabbix版本3.2.4

需求:

要遠程監控一台服務器A,但只能通過遠程服務器連接本地服務器B,但B不能主動連A(因為A沒有固定公網ip)

使用了zabbix_agent的active模式,但這種模式不能使用ping方式確定agent是否存活,使用觸發規則nodata測試

A服務器網絡不穩定,很容易誤觸發規則(若有大神評論區教教我,是不是我哪里設置錯了)

最后 

究其原因,主要是使用觸發器失敗,改用了這種方法,當做心跳線使用

zabbix官方文檔:https://www.zabbix.com/documentation/3.2/manual/config/triggers/expression

實施例8

最近3分鍾內沒有心跳

使用函數nodata():

{zabbix.zabbix.com:tick.nodata(3m)}=1

'tick'必須有“Zabbix trapper”類型。為了使此觸發器工作,必須定義項目'tick'。主機應使用zabbix_sender定期發送此參數的數據。如果在180秒內沒有收到數據,則觸發值成為問題。


一、zabbix-sender介紹

zabbix_sender是一個命令行工具,可以用來發送Zabbix服務器處理性能數據。該工具通常用於長時間運行的用戶腳本,用於定期發送可用性和性能數據。

zabbix獲取key值有超時時間,如果自定義的key腳本一般需要執行很長時間,這根本沒法去做監控,那怎么辦呢?

使用zabbix監控類型zabbix trapper,需要配合zabbix_sender給它傳遞數據。關於trapper的用法,我們來弄個實例。

執行超長時間腳本,如:腳本去幾十台服務器拉去數據,每個日志都上G,然后日志整合在一起,統計出返回值。這種腳本比如超時,所以我們必須改成讓客戶端提交數據的方式。

這里是zabbix-sender設計的初衷,被我這樣用也是無奈!!

二、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_sender應用實例

 

zabbix獲取數據有超時時間,如果一些數據需要執行比較長的時間才能獲取的話,那么zabbix會出現異常,考慮到這種情況,zabbix增加了Trapper功能,客戶端自己提交數據給zabbix,這個通道便是trapper.

使用trapper的步驟如下:

  • 在zabbix中配置trapper監控項
  • 傳遞數據到zabbix中

1、進入zabbix web界面選擇一台主機(或模板)--items--Create item 定義一個key用來接受客戶端的sender,如下圖:

 

 (1)我采用的是模板添加,方便以后統一添加

 (2)也可以采用hosts添加items

這里的幾幅圖看不清楚,博客園貌似圖片有限制加上小圖

###############################

之前百度了許多關於sender的內容,但都是2.2或2.4版本,比較老,3.2.4還是有些不一樣的

到這里創建items成功

(這里的key是自定義的,在使用sender時需要用到,大概是秘鑰配對的感覺,不知道對不對)

2、回到客戶端使用以下命令sender數據

zabbix_sender -s "126" -z 192.168.1.104 -p 10050 -k "trap" -o 1

 

 這里

 

  • -s后面跟的參數是agent端的hostname
  • -z后面跟的參數是server端的ip
  • -p后面跟的參數是server端的端口(不寫默認為10051)
  • -k就是剛剛建items時自定義的key值-o是你想發送的數據(要是選擇的txt接收模式,也可以為字符)

 

[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參數最好都加上引號,之前就是這個原因一直失敗

 

3、再回到zabbix web端選擇前面的主機--點擊Latest data 如下圖:

 

這時看見在這里是沒有數據的,這里就跟2.4版本不一樣了

 

我只用數字1表示有信號

這里就告一段落了

 

4、添加觸發器

 

這里的觸發規則,具體的我也不會,我只是套用了模板,使用trap這個key鍵,語句是nodata,然后再設置對應的參數,這里具體的要看官方文檔了

 

 

 

 

 

 

到這里就設置好了server端

 

5、客戶端添加腳本

再到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

 

然后就能運行了

這樣就算一個完整的報警了,雖然很爛

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM