前面一篇寫了數據同步和模板綁定,zabbix其實能作的事還蠻多。
前端
zabbix提供了一個很是好的前端展現頁面,可是咱們總以爲不太好看;咱們能夠進一步調用他的api經過獲取每個監控項的歷史數據,而後打到咱們的監控平臺上;主流的有rrdtool方式和highcharts方式;rrdtool略顯複雜,還要學習rrdtool之類的幾個聚合方式。相對而言我更喜歡highcharts的方式,出圖簡便,只須要提供數據和時間戳組成的json數據就夠了,以前也介紹過具體;那麼這裏咱們先拿出咱們想要的數據。python
zabbix的api讀取方式以下:json
一、經過post方式傳入用戶名密碼獲取token祕鑰。api
二、獲取全部主機的hostid和name。ide
三、經過hostid獲取每一個監控項目的item和對應的key。post
四、經過傳入的itemid獲取相對應的歷史數據。學習
以上步驟都是須要傳入token才能執行操做,pipy已經提供了第三方插件,讓咱們省去了這一部分的操做;具體參考:https://pypi.python.org/pypi/zabbix-client/0.1.1;zabbix api文檔請參考官方文檔。想多寫點代碼能夠看小馬哥的博客:http://www.xiaomastack.com/2014/08/17/rrdtool-1/。url
一、獲取主機的代碼:.net
def get_hosts(self): data = { "output": ["hostid", "name"] } ret = self.zb.host.get(**data) return ret
執行結果:插件
二、獲取每一個主機對應的監控項和監控項具體名稱:
def item_get(self, hostids="10109"): data = { "output":["itemids","key_"], "hostids": hostids, } ret = self.zb.item.get(**data) return ret
執行結果:
三、獲取對應的歷史數據:
def history_get(self, itemid, i ,limit=10): data = { "output": "extend", "history": i, "itemids": itemid, "sortfield": "clock", "sortorder": "DESC", "limit": limit } ret = self.zb.history.get(**data) return ret
具體代碼:
from zabbix_client import ZabbixServerProxy class Zabbix(): def __init__(self): self.zb = ZabbixServerProxy("http://192.168.10.100/zabbix") self.zb.user.login(user="Admin", password="zabbix") def get_hosts(self): data = { "output": ["hostid", "name"] } ret = self.zb.host.get(**data) return ret def item_get(self, hostids="10109"): data = { "output":["itemids","key_"], "hostids": hostids, } ret = self.zb.item.get(**data) return ret def history_get(self, itemid, i ,limit=10): ###history參數中有0,1,2,3,4表示:float,string,log,integer,text data = { "output": "extend", "history": i, "itemids": itemid, "sortfield": "clock", "sortorder": "DESC", "limit": limit } ret = self.zb.history.get(**data) return ret if __name__ == "__main__": zabbix_server = Zabbix() # print zabbix_server.get_hosts() print zabbix_server.history_get("24519",3)