Zabbix API を使ってみる
概要
前回の記事で(Raspberry PI に Zabbix Server 導入まで - Status Code 303 - See Other)
作ったZabbix Server に対して、API を発行してみる。今回は、curl で通信してみる。
Zabbix API テスト
BEFORE
Zabbix コンソールから現状のホストグループ構成を調べる。
まず、Zabbix コンソールにアクセスする。ルート管理者でログイン
http://[Raspberry pi プライベート IP]/zabbix/
現状ではプライベート環境しか通信できないため、80番ポートでも大丈夫だと思うが、
今後、外部からも通信したいなら、セキュリティ上、SSL/TLS にしたりポート変更したりしなければならない。
そして、[設定]->[ホストグループ] で一覧確認。
Zabbix API 実行
サンプルとして、 [設定]->[ホストグループ] に curl コマンドで新しくホストグループを作成する手順を記す。
認証情報を取得する。
curl -X POST -d '{"jsonrpc":"2.0","method":"user.login","id":1,"params":{"user":"userName","password":"xxxxx"}}' -H "Content-Type:application/json-rpc" http://[Raspberry pi プライベート IP]/zabbix/api_jsonrpc.php
やってることを説明すると
- -X POST
- -d '{"jsonrpc":"2.0","method":"user.login","id":1,"params":{"user":"userName","password":"xxxxx"}}'
- -H "Content-Type:application/json-rpc"
なお、今回渡したデータは認証のためのデータ。詳細は本家 API 参照のこと。
user.login [Zabbix Documentation 2.2]
こんなデータが返ってくる。
{"jsonrpc":"2.0","result":"3df0b33dc345fe5a29f8b862a4e60bcc","id":1}
そして、「3df0b33dc345fe5a29f8b862a4e60bcc」の部分がトークンと呼ばれる、認証成功時に本人を識別するための情報。
このトークンには期限があり、これが切れると再度取得しなければならない。
それまでであれば、このトークンを API 呼び出しのデータに含めることで、様々な操作が実行できる。
API (hostgroup.create) 実行
test という名のホストグループを新しく作成してみる。API は下記を利用する。
hostgroup.create [Zabbix Documentation 2.2]
curl http://[Raspberry pi プライベート IP]/zabbix/api_jsonrpc.php -H "Content-type: application/json-rpc" -X POST -d '{"jsonrpc":"2.0","method":"hostgroup.create","auth":"3df0b33dc345fe5a29f8b862a4e60bcc","id":1,"params":{"name":"test"}}'
そして、成功すれば、以下のような結果を得る。
これは、ホストグループの作成に成功し、そのホストグループ ID を結果として送られている。
{"jsonrpc":"2.0","result":{"groupids":["11"]},"id":1}
実際に、さっきのページを更新してみると。
test という名のホストグループが作られていることが分かる。
同様に、他の API を用いて行えば様々に Zabbix の設定を変更することができる。
ホストグループ以外に作成できるもの
ホストグループは、ホストと呼ばれる統合的な管理オブジェクトをまとめるものである。
だから、これだけでは特に何もできない。そこで、他には何を作成できるか、その一例を記す。
- ホスト
- テンプレート
- ユーザマクロ
- アイテム
- アプリケーション
- トリガー
- アクション
他にもあるので、もし興味があれば本家で調べてみるといいだろう。
Zabbix :: The Enterprise-Class Open Source Network Monitoring Solution