初めてZabbixを導入する際、もしくは、大量に設定の変更があった場合、1つ1つ手作業で行うには多くの時間と労力がかかってしまいますが、Zabbix APIを使えばそんな悩みも解決します!
今回は特にZabbix API用のPHPライブラリを利用した基本的な使い方をご紹介します。
Zabbix API用のPHPライブラリを使う
ここでは、Zabbix API用のPHPライブラリを使って実際にログインするところから、ホスト一覧を取得してログアウトするまでを今回の目的とします。
- Step 1インストールと設定
Zabbix API用のPHPライブラリをインストールし、Zabbix APIのURLやログイン用のユーザー名、パスワードを設定します。
- Step 2ログイン
Zabbix APIを使用してログインし、以降の処理に必要なauthキーを取得します。
- Step 3ホスト一覧を取得
PHPライブラリを使用してホスト一覧を取得し、結果を表示してみましょう。
- Step 4ログアウト
最後はログインしたユーザーをログアウトしましょう。
PHPライブラリをインストール
まずは、Zabbix社の公式サイトからPHPライブラリ用のパッケージをダウンロードして、PHPスクリプトを作成するサーバーにインストールします。
※ダウンロードするにはZabbixのアカウントが必要です
インストールしたパッケージの内容は、以下に格納されたの1つのファイルになります。
1 |
/usr/share/php/zabbix/class.zabbixapi.php |
このZabbix API用のClassファイルを、今回作成するPHPスクリプトで読み込む所から進めて行きます。
Zabbix APIの設定とログイン
ログインまでの流れとしては、PHPスクリプトファイルを作成してライブラリを読み込み、インスタンス化(new)してログインします。
特に難しい所もありませんので、サクッと進めていきます!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php // Zabbix API用のPHPライブラリを読み込む require_once('/usr/share/php/zabbix/class.zabbixapi.php'); // Zabbix APIの接続設定 $url = 'http://localhost/zabbix/api_jsonrpc.php'; $user = 'Admin'; $password = 'zabbix'; // インスタンス化 $zbapi = new ZabbixApi($url, $user, $password); // ログイン $zbapi->login(); |
ZabbixApi()のに設定するパラメータには、OSではなくZabbix管理インターフェースにログインするための情報を設定します。
[$url]パラメータに設定する[api_jsonrpc.php]は決まり事なので気にしないでください。
パラメータ | 説明 |
---|---|
$url | Zabbix管理インターフェースのURL+api_jsonrpc.php |
$user | Zabbix管理インターフェースにログインする際のユーザー名 |
$password | Zabbix管理インターフェースにログインする際のパスワード |
Zabbix APIでホスト一覧を取得
PHPライブラリを利用してホスト一覧を取得するには、request()メソッドを使います。
第1引数にはZabbix APIのメソッド名、第2引数にはパラメーターを配列で指定します。
1 |
$zbapi->request($method, $params); |
第1引数に設定するZabbix APIのメソッドは沢山ありますが、今回はホスト関係のメソッドに絞ってご紹介します。
ホストメソッド | 説明 |
---|---|
host.create | 新しいホストの作成 |
host.delete | ホストの削除 |
host.get | ホストの検索 |
host.massadd | ホストに関連オブジェクトを追加する |
host.massremove | ホストから関連オブジェクトを削除する |
host.massupdate | ホストから関連するオブジェクトを交換または削除する |
host.update | ホストの更新 |
ホスト一覧を取得するには、[host.get]メソッドを使用します。
ここでは単純にホストIDとホスト名のみを全て取得します。
1 2 3 4 |
$params = [ "output" => ["hostid", "host"] ]; $zbapi->request('host.get', $params); |
Zabbix APIを使えば、Zabbix管理インターフェースのフィルター機能のように、様々な絞り込みや出力内容を指定できます。
パラメーターについて詳しく知りたい方は公式サイトをご覧ください。
取得した値は連想配列で格納
パラメーターで指定したデータが取得できた場合は、result()メソッドに連想配列として格納されます。
1 |
$zbapi->result(); |
取得できたデータをそのままデバッグ出力してみると、以下のように連想配列にデータが格納されているのがわかります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
array(10) { [0]=> array(2) { ["hostid"]=> string(5) "10084" ["host"]=> string(13) "zabbix-server" } [1]=> array(2) { ["hostid"]=> string(5) "10413" ["host"]=> string(14) "storage-server" } [2]=> array(2) { ["hostid"]=> string(5) "10414" ["host"]=> string(15) "database-server" } ・・・ } |
処理の失敗について
また、データが取得できなかった場合は、result()メソッドの代わりに、error()メソッドにエラーコードやエラーメッセージなどが格納されます。
1 |
$zbapi->result(); |
例えば、存在しないメソッドを指定した場合は、以下のようなデータが出力されます。
1 2 3 4 5 6 7 8 |
array(3) { ["code"]=> int(-32601) ["message"]=> string(17) "Method not found." ["data"]=> string(25) "Incorrect method "host."." } |
Zabbix APIからログアウト
最後は、logout()メソッドを使ったログアウトですが、特に意識しなくても自動的にログアウト処理が実行されるので省略しても構いません。
ただ、明示的にログアウトする必要がある場合のみ実行します。
1 |
$zbapi->logout(); |
【まとめ】全体の処理の流れ
これまでの処理の一連の流れをまとめたコードを記載します。
ここでは取得したホスト一覧データをそのままデバッグ表示していますが、実際には、結果を取得したを利用して、何かしらの処理が入ると思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php // Zabbix API用のPHPライブラリを読み込む require_once('/usr/share/php/zabbix/class.zabbixapi.php'); // Zabbix APIの接続設定 $url = 'http://localhost/zabbix/api_jsonrpc.php'; $user = 'Admin'; $password = 'zabbix'; // インスタンス化 $zbapi = new ZabbixApi($url, $user, $password); // ログイン $zbapi->login(); // ホスト一覧の取得 $params = [ "output" => ["hostid", "host"] ]; $zbapi->request('host.get', $params); // 結果やエラーをそのまま出力 echo '<pre>'; var_dump($zbapi->result()); var_dump($zbapi->error()); echo'</pre>'; // ログアウト $zbapi->logout(); exit; |
PHPライブラリを使うメリット
Zabbix APIをLinuxのコマンドでそのまま利用する場合、データはJSON形式で扱われますが、PHPライブラリは配列に格納されますので、データの取扱が容易になることが最大のメリットです。
また、その他にも細かい処理を省略でき、コードが簡略化され視認性もアップします!
例えば、Zabbix APIでログイン時にauthキーを受け取り、リクエストする際は必ずパラメーターにセットしなければなりませんが、PHPライブラリを利用するとClass内でauthキーを保持しているため、意識する必要はありません。
以上です。お疲れ様でした!
今後もZabbix API用のPHPライブラリの便利な使い方をご紹介していきます!
コメント