由於生產環境的需要,zabbix 需要監控https的url,但是因為zabbix 是aws ec2 zabbix web綁定了域名,所以沒有辦法所代理。 有興趣的可以看官方文檔
https://www.zabbix.com/documentation/4.0/_export/xhtml/zh/manual/web_monitoring
所以只能用腳本來實現了
一、agent 客戶端服務器操作
先貼上來腳本
#!/usr/bin/python # coding: UTF-8 import StringIO import pycurl import sys import os class Test: def __init__(self): self.contents = '' def body_callback(self,buf): self.contents = self.contents + buf def test_gzip(input_url): t = Test() #gzip_test = file("gzip_test.txt", 'w') c = pycurl.Curl() c.setopt(pycurl.WRITEFUNCTION,t.body_callback) c.setopt(pycurl.ENCODING, 'gzip') c.setopt(pycurl.URL,input_url) c.perform() http_code = c.getinfo(pycurl.HTTP_CODE) http_conn_time = c.getinfo(pycurl.CONNECT_TIME) http_pre_tran = c.getinfo(pycurl.PRETRANSFER_TIME) http_start_tran = c.getinfo(pycurl.STARTTRANSFER_TIME) http_total_time = c.getinfo(pycurl.TOTAL_TIME) http_size = c.getinfo(pycurl.SIZE_DOWNLOAD) #此處可選多個,因為需要所以只選了TOTAL_TIME print " %f"%(http_total_time) if __name__ == '__main__': input_url = sys.argv[1] test_gzip(input_url)
1、腳本放在/etc/zabbix/目錄下
2、修改agent 配置文件
#添加內容
UserParameter=url.state[*],/etc/zabbix/url-status.py $1
3、重啟客戶端
service zabbix-agent restart
二、web 設置
1、配置 》》 主機 》》選擇agent 主機 》》點擊監控項

2、右上角點擊創建監控項

a.名稱隨意
b. 類型選擇客戶端
c.鍵值這個非常重要
UserParameter=url.state[*],/etc/zabbix/url-status.py $1
url.state [] 相當於命令名字,他是key
其中UserParameter用來自定義鍵值,(類似於net.if.in),自己寫的腳本往往會有參數,[*] 表示他有自己的參數,所以需要加[*],這是固定寫法,
如果腳本壓根就沒有什么參數,那么這個就省了。
逗號后面就是我們寫的腳本的路徑了,再后面就是要用到的參數,有幾個就寫幾。
如果沒有參數,后面的 $1 還有前面的 [*] 就都可以省略。
d、e、自己選擇一個適合的
最后點擊添加
頁面展示
