PyZabbix(PythonのZabbix APIライブラリ)の使い方
概要
Zabbix APIをPythonで叩くためのライブラリ「PyZabbix」に関する日本語情報があんまりなくて英語読んだりソース読んだりちょっと大変だったので、メモがてら書いておく。
Zabbix APIそのものについての説明は割愛するが、公式ドキュメントとお世話になったQiita記事をいくつか。
使い方
ざっくり、ログインとそれ以外に分かれる。
ログイン
最初にアカウント情報を渡してトークンをもらうのがZabbix APIのお作法。これはreadmeに書いてある通りやったらよい。プロキシはOSの設定値(http_proxyやhttps_proxy)に従う。
from pyzabbix import ZabbixAPI # ZabbixサーバーのFQDN。パス(/zabbix/api_jsonrpc.php)は不要 zapi = ZabbixAPI("http://zabbixserver.example.com") # Zabbixアカウントのユーザー名とパスワード zapi.session.auth = ("http user", "http password") # SSL/TLS証明書の検証をするかどうか。Falseの場合は警告メッセージが出力される(後述) zapi.session.verify = False # タイムアウト値(秒)の設定 zapi.timeout = 5.1 # ログイン。session.authで入力している場合はpasswordは不要? zapi.login("http user", "http password")
zapi.session.verify
をFalseにしている場合、PyZabbixで使われているRequestsライブラリの警告メッセージが出力される。抑止したい場合は以下を参照。
http://73spica.tech/blog/requests-insecurerequestwarning-disable/
import urllib3 from urllib3.exceptions import InsecureRequestWarning urllib3.disable_warnings(InsecureRequestWarning)
get、create、deleteなどのAPIの利用
例えばhost.get
APIを使う時は、zapi.host.get
のように、あたかもPyZabbix自体のメソッドであるかのようにZabbix APIのメソッドを繋げて使う。パラメータの指定は引数でおこなう。アウトプットはdict型でリターンされる。
for h in zapi.host.get(output="extend"): print(h['hostid']) # 複数の値を持たせる場合、list型で指定する。 host_dict = zapi.host.get(search=["test01", "prod"], output=["name", "available"])