Zabbixから統計情報を取得するタスクがありました。Pythonを使用したAPIを介してZabbixデータベースからデータを取得した経験を共有しています。

コードの一部はPython 2.7用です
zabbix-apiを操作するための既製の
py-zabbixライブラリがあり、そのドキュメントは
ここにあり
ますが 、多くの例はありません。 公式の
Zabbix APIガイド。
したがって、標準インストール後:
pip install py-zabbix
Zabbixサーバーに接続してみてください:
from pyzabbix import ZabbixAPI z = ZabbixAPI('https://172.16.1.10', user='user1', password='pass1') answer = z.do_request('apiinfo.version') print "Version:",answer['result']
サーバーからの応答形式はJSONです。
{u'jsonrpc': u'2.0', u'result': u'3.0.2', u'id': u'1'}
スクリプトは
結果フィールドの内容を出力します:
Version: 3.0.2
これで、関心のある問題の解決を開始できます。 タスクは、特定の週の営業時間(10:00〜19:00)の間に、週(月〜金)のすべての仮想マシンから平均ディスクアイドル時間値を取得することです。 これらのパラメーターの関連性に焦点を当てたくはありませんが、この特定のタスクを例として使用して、Zabbix APIと私の経験を共有してください。
そのため、Zabbixの仮想マシンは別のグループに属しています。まず、
hostgroup.getメソッドを使用して、使用可能なグループのリストを取得します。
出力パラメーターを使用して、APIが返すフィールドを決定できます。
38 _Local Domains 53 _Local NAS 23 _Local Servers Linux 27 _Local Servers Virtual Linux 25 _Local Servers Virtual Windows 24 _Local Servers Windows 35 _Local Switches
次に、
host.getメソッドを使用して、特定のグループのホストのリストを取得できます。
groupidsパラメーターは、グループIDを定義します。
10197 DC1_--172.16.1.4-- 10204 DC2_--172.16.1.5-- 10637 LocalDB_--172.16.1.12-- 10686 WSUS_--172.16.1.16-- 10708 Jira_--172.16.1.24--
特定のホスト
ごとにアイテムのリストを取得するには、
item.getメソッドを使用し
ます 。
結果:
525617 ICMP ping 525618 ICMP loss 525619 ICMP response time 940205 Input Microsoft Hyper-V Network Adapter
答えからわかるように、選択したホストには2つのディスクがあるため、いくつかの最小値を表示する必要があります。 アイテムデータにアクセスするには、
history.getメソッドを使用します。 次のコードは最適であると主張していません。Pythonを学び始めたばかりですが、一般的にスクリプトはタスクに対処しました。
history.getメソッドには、次のパラメーターを定義する必要があります
。- 履歴-戻りタイプ
- itemids-対象のアイテムのID
- time_from-時間間隔の始まり
- time_till-時間間隔の終わり
統計を収集するスクリプト:
from pyzabbix import ZabbixAPI import time import sys z = ZabbixAPI('https://172.16.1.10', user='user1', password='pass1') groupid = 25
結果は、カンマ区切りのホスト名、ネジの数、および最小アイドル時間です。
DC1_--172.16.1.4--, 1 , 99.0758766296 DC2_--172.16.1.5--, 1 , 97.0989181683 LocalDB_--172.16.1.12--, 2 , 98.9930628704
ご清聴ありがとうございました。