2011-06-14 50 views
14

以下是我的目標:我希望能夠向zabbix報告各種指標,以便我們可以在網頁上顯示圖形。如何向zabbix公開數據

這些度量包括:每肥皂服務提交從一個或多個數據庫

  • 各種查詢結果

    • 延遲。

    我需要編寫和/或公開什麼東西?或者是zabbix服務器會去某個地方從暴露的服務中獲取它?

    我已經被告知,返回單個值的腳本可以工作,但我想知道這是否是正確的方法。

  • 回答

    14

    我可以提供2組的建議得到指標進入的zabbix:

    1. 使用zabbix_sender二進制從腳本直接反饋數據到服務器的zabbix。這允許您的腳本調用它自己的時間間隔並設置所有需要的參數。你真的只需要知道zabbix_sender二進制文件的位置。

      在Zabbix服務器界面中,您將創建類型爲Zabbix trapper的項目。這是接收從zabbix_sender發送的值的項目類型。你構成了關鍵的名字,它必須匹配。

    2. 您可以執行此操作的第二種方法是在zabbix_agentd.conf文件中指定密鑰名稱和腳本/二進制文件。每次Zabbix服務器請求此項目時,腳本都會被調用並記錄腳本中的數據。

      這允許您在Zabbix項目配置中設置間隔,而不是強制您按自己的間隔運行腳本。但是,您需要將這些額外的信息添加到每個主機的zabbix_agentd.conf文件中。

    可能還有其他方法可以直接從Python執行此操作(zabbix_sender可能是Python的綁定?)。但這些是我以前使用過的兩種方式,它們都很好。這不是Python特有的。但是你應該可以在你的Python腳本中使用zabbix_sender。希望這些信息有幫助!

    更新:我還記得Zabbix正在開發/使用API​​(JSON/RPC樣式)。但目前文檔網站已關閉,我不確定API是否用於提交項目數據。這裏是維基上的API:http://www.zabbix.com/wiki/doc/api

    而對於Python API中的一個項目:https://github.com/gescheit/scripts/tree/master/zabbix/

    人們似乎對API的文檔很少,因爲它是新的一樣的的zabbix版本1.8

    +0

    Python沒有zabbix_sender綁定。 我有一大堆的Python腳本將數據發送到zabbix_sender, 當你處理指標量大它的方式更有效地填充在一個循環中的zabbix_sender兼容的文件中: 打印>> metrics_file_descriptor,「% s%s%s%s'%(hostname,item_key1,zbx_timestamp,metric1) 並且調用它以便它發送到您的Zabbix服務器 command =「%s -z%s -p%s --with-timestamps - -input-file%s>/dev/null 2>/dev/null「%(zbx_sender,zbx_server_ip,zbx_port,metrics_file) args = shlex.split(command) – 2011-06-15 11:14:49

    +0

    另外, zabbix API python wrapper對於批量項目和觸發器的創建和更新,考慮大多數更頻繁的功能工作,但他們中的一些,但仍然需要額外的編碼才能工作。 – 2011-06-15 11:17:14

    +0

    還有https://github.com/lukecyca/pyzabbix,看起來好一點,比https://github.com/gescheit/scripts/tree/master/zabbix/ – Blin 2012-05-04 12:35:52