PHP 5分でわかる! Zabbix API の使い方(ホスト一覧の取得)

2015年8月7日  カテゴリー:Zabbix  タグ: ,
Pocket
LINEで送る

Zabbix API を使うと、プログラムやコマンドラインから、ホストを追加したり、監視データを取得することが出来ます。自動化ツールの Chef 等と組み合わせれば、サーバの監視設定までもを自動化することが可能です。API と聞くと少し難解なイメージがありますが、Zabbix API は JSON-RPC 2.0 のシンプルな仕様に準拠しているため、比較的簡単に使えるようです。そこで今回は、PHP から Zabbix API の基本的な使い方をご紹介します。

Zabbix API のバージョン取得

まず初めに、JSON-RPC 2.0 での基本的なリクエスト方法とレスポンスを確認するため、Zabbix API のバージョンを取得してみます。

リクエストデータの作成

jsonrpc
 JSON-RPCのプロトコルバージョンを指定します。このパラメータは必ず「2.0」を設定します。

method
 Zabbix API メソッドを指定。今回は API バージョンを取得する apiinfo.version メソッドを設定します。

id
 ここで指定した値が、レスポンスでもそのまま返ってきます。複数のリクエストとレスポンスを識別するために使います。リクエストが1つであれば「1」を設定しておけば良いでしょう。

auth
 アクセストークンを指定します。ほとんどのメソッドでは、このパラメータが必須になりますが、バージョンを取得するだけの apiinfo.version メソッドでは必要ありませんので null を設定しておきます。

params
 メソッドに渡すパラメータを指定します。こちらも apiinfo.version メソッドでは必要無いため、空の配列を設定します。

リクエストデータを JSON 形式に変換

Zabbix API とやりとりするデータは、JSON 形式を使いますので、JSON 形式に変換しておきます。

HTTPストリームコンテキストの作成

Zabbix API へ POST 送信するための下準備です。PHPでは stream_context_create を使うのが手軽です。

method
 HTTPメソッドの指定です。「POST」を設定します。

header
 HTTPヘッダの指定です。必ず「Content-Type: application/json-rpc」設定します。

content
 先ほど作成した JSON形式のリクエストデータを設定します。

リクエストの実行

後は、Zabbix API にリクエストを送るだけです。API の URL は下記のようになります。

https://【管理画面のURL】/api_jsonrpc.php

アクセストークンを取得する時に、管理ユーザのパスワードを送信しますので、HTTPS を使うことをオススメします。

レスポンスの表示

JSON形式でレスポンスが返ってきます。内容を確認しやすいように、配列に変換してから表示します。

まとめると、以下のようなプログラムになります。「リクエストデータの作成」以外の処理は、基本的にどの Zabbix APIメソッドを使っても同じです。

プログラムを実行すると、以下のようなレスポンスが表示されます。result が Zabbix API のバージョンです。id にはリクエストと同じ「1」が返ってきていることも確認できますね。

Zabbix API アクセストークンの取得

先にも書きましたが、ほとんどの Zabbix API メソッド使うには、アクセストークンが必要になります。

アクセストークンの取得は user.login メソッドを使います。メソッドに渡すパラメータに、管理ユーザ名とパスワードを設定します。

リクエストデータ以外の処理は、バージョン取得の時と同じです。
プログラムを実行すると、以下のようなレスポンスが返ってきます。result が アクセストークンです。

監視ホスト一覧の取得

アクセストークンが取得できましたので、試しに監視ホストの一覧を取得してみます。

監視ホストの一覧は host.get メソッドを使います。先ほど取得したアクセストークンを auth パラメータに設定します。

プログラムを実行すると、以下のようなレスポンスが返ってきます。メソッドに渡すパラメータで指定すれば、監視ホストの色々な情報が取得できます。指定できるパラメータは 公式マニュアル をご参照ください。

Zabbix API の公式マニュアル

Zabbix API は公式マニュアルがとても充実しています。詳細は下記をご参照ください。

▽ Zabbix API マニュアル
https://www.zabbix.com/documentation/2.4/manual/api

▽ Zabbix API メソッドの一覧
https://www.zabbix.com/documentation/2.4/manual/api/reference

終わりに

Zabbix API のことを色々調べていたら、公式トレーニングの記事を見つけました。受講には Zabbix の認定資格が必要なようですが、その分しっかり学べそうですね。

▽ Zabbix API公式トレーニングが10月より提供開始 | マイナビニュース
http://news.mynavi.jp/news/2015/08/04/197/

スポンサーリンク
Pocket
LINEで送る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です