【Z投稿】通過API批量自動生成報表

往期投稿Top3

田川

CentOS7x64上yum安裝Zabbix 3.0,一次全部搞定,100%成功

楊帆

Zabbix性能數據實時對接kafka

何星

Zabbix通過自動發現監控端口


大家好,本期Z投稿爲大家帶來的文章是

《Zabbix通過API批量自動生成報表》

一起來看吧~

文| 李運臣

簽名:優秀的判斷力來自經驗,但經驗來自於錯誤的判斷。

關鍵字: Zabbix,Shell,Python

多年Linux運維經驗,精通Zabbix監控系統架構,熟悉Shell,Python等語言腳本的編寫等。

微信: lyc100147

        Zabbix 優勢在於其豐富的api功能,可以高度定製化、擴展。在cmdb資產管理功能、微信操作控制Zabbix功能、獲取Zabbix數據製作報表等都利用到了Zabbix api。Zabbix API開始扮演着越來越重要的角色,尤其是在集成第三方軟件和自動化日常任務時。很難想象管理數千臺服務器而沒有自動化是多麼的困難。Zabbix API爲批量操作、第三方軟件集成以及其他作用提供可編程接口。

        Zabbix API是在1.8版本中開始引進並且已經被廣泛應用。所有的Zabbix移動客戶端都是基於API,甚至原生的WEB前端部分也是建立在它之上。Zabbix API 中間件使得架構更加模塊化也避免直接對數據庫進行操作。它允許你通過JSON RPC協議來創建、更新和獲取Zabbix對象並且做任何你喜歡的操作(當然前提是你擁有認證賬戶)。


Zabbix API提供兩項主要功能:

    1. 遠程管理Zabbix配置

    2. 遠程檢索配置和歷史數據


        API 採用JSON-RPC實現。這意味着調用任何函數,都需要發送POST請求,輸入輸出數據都是以JSON格式。大致工作流如下:

    1. 準備JSON對象,它描述了你想要做什麼(創建主機,獲取圖像,更新監控項等)。

    2. 採用POST方法向http://example.com/zabbix/api_jsonrpc.php發送此JSON對象,http://example.com/zabbix/是Zabbix前端地址。api_jsonrpc.php是調用API的PHP腳本。可在安裝可視化前端的目錄下找到。

    3. 獲取JSON格式響應。


基本請求格式

Zabbix API簡化的JSON請求如下:

{

    "jsonrpc": "2.0",

    "method": "method.name",

    "params": {

        "param_1_name": "param_1_value",

        "param_2_name": "param_2_value"

    },

    "id": 1,

    "auth": "159121b60d19a9b4b55d49e30cf12b81",

}

現在製作Zabbix報表,都會手動去製作報表或直接在數據庫裏抽取數據,第一種方法過於麻煩,要是一天兩天還可以,日子多了就會很煩,第二種方法直接在數據庫中抽取,很不安全,有可能會人爲泄露數據,現在是信息化時代,數據比錢還要重要,所以兩種方法都不可行,本篇文章主要介紹了通過Zabbix的API端口來獲取數據來自動生成報表。

腳本的編程語言是Python語言,版本Python2.7.5,Python語言的使用在於對模塊和語法的使用,要想實現此項功能,需要安裝模塊xlrd(對數據的讀取),xlwt(數據的寫入),openpyxl(讀寫Excel 2010文檔的Python庫),jdcal,et_xmlfile(是安裝openpyxl模塊的依賴模塊),模塊下載地址https://pypi.org/project/Openpyxl/#files模塊安裝完畢後,就可以直接上代碼了。

首先第一個腳本,是登錄Zabbix的api端口腳本login.py,這裏需要修改的地方是請求的IP(注意:是zabbix-server的IP),登錄Zabbix的用戶和密碼,如果不是腳本內的,也是需要修改的,詳細腳本請看附件。

點擊查看大圖


        第二個腳本,是定義函數腳本 function.py(這裏獲取的history.get),如果你想獲取其他值,可參考https://www.zabbix.com/documentation/4.0/manual/api,可根據自己需求修改腳本,詳細腳本請看附件。

點擊查看大圖


        第三個腳本,是傳參調用函數腳本zabbix.py,通過在此目錄下創建ip.txt文件(如下圖),讀取文件內的ip來抽取出對應ip的cpu和內存的歷史數據,詳細腳本請看附件。

點擊查看大圖


        第四個腳本,是定義取值時間函數腳本time.py,實現的功能是可以讓用戶可以取出不同時間段的值,更利於用戶使用,詳細腳本請看附件。

        第五個腳本,是寫入excel表格腳本excel.py,主要定義了生成excel表格,並將數據寫入excel表格的方法和寫入格式,詳細腳本請看附件。

        在該目錄下會生成一個test.xls文件,導入到Windows系統內,打開後就能看到生成excel表格了,具體圖如下:

點擊查看大圖


利用excel,即可以圖表方式展現服務器的性能報表。

點擊查看大圖


        後期規劃,excel的需要手動出圖,而python有一pandas模塊,可以進行繪圖。目前正在研究中。

歡迎投稿

Z投稿專欄爲大家提供一個展現自己的平臺,作者觀點不等同社區觀點,歡迎讀者在評論區留言討論

文章內容

與運維、Zabbix相關即可

投稿方式

私信Z小祕

(微信/電話 13817720274)

小福利

投稿可以獲得Z積分*5

每月評選,閱讀量TOP3可獲得積分10/5/3分

ps:公衆號回覆【簽到】查看積分小驚喜

點擊查看積分

Zabbix淘寶官方店鋪上線啦!!

【Zabbix官方店鋪】,復·制這段描述¥vzlRbFHyPPz¥後打開手機淘寶或者用瀏覽器打開https://m.tb.cn/h.3wnsHiR?sm=fd8de2查看


↓ ↓ ↓新店開業,迎客活動 ↓ ↓ ↓

關注店鋪+全場購買商品

滿100元減20元


一鍵關注

關注公衆號

加入社區羣

Zabbix社區,因你而更美好


本文分享自微信公衆號 - Zabbix開源社區(china_zabbix)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章