2013年6月9日日曜日

zabbixのapiをPHPから試してみた

■環境
CentOS 6.3 64bit
Zabbix 2.0.3
PHP 5.3.3

■設定およびサンプル実行
http://zabbixapi.confirm.ch/download.php?file=library
から最新のphpライブラリをダウンロードします

bzip2 -d PhpZabbixApi_Library.tar.bz2
tar xvf PhpZabbixApi_Library.tar
cd PhpZabbixApi_Library

vi ZabbixApi.class.php
以下の1行を追加します
require 'ZabbixApiAbstract.class.php';

vi sample_zabbix.php
以下のサンプルコードを記載します
「username」と「password」はzabbixにログインする際のものを使います
<?php

require 'ZabbixApi.class.php';

try {
    $api = new ZabbixApi('http://hostname/api_jsonrpc.php', 'username', 'password');
    $res = $api->apiinfoVersion();
    var_dump($res);
} catch (Exception $e) {
    echo $e->getMessage() . "\n";
}

?>

php sample_zabbix.php
を実行するとapiのバージョンが返ってきます

エラーになる場合は以下を確認してみてください

  • phpファイルの権限が755になっていることを確認する、もしくは実行するユーザに実行権限が付いていることを確認する
  • zabbixのホスト名やユーザ名パスワードが間違っていないか
  • そもそもphpがインストールされていない

■Tips
PHPのメソッドのコール方法はZabbixAPI名と連動している
例えばホストを取得するAPIは host.get というAPIをコールするが、PHPでは hostGet というメソッドをコールする
ドットで区切られている部分をcamel caseに変換してコールすればPHPで呼ぶことができる
なのでPHPのリファレンスがなくてもZabbixのAPIリファレンスを見るだけで必要なメソッドをコールすることができる
Zabbix 2.0 APIリファレンス

リファレンス内のリクエストパラメータで「query」というTypeが存在している
ここには以下が指定できる
  • shorten - returns just the primary key;
  • refer - returns the primary key and the foreign keys used to link related objects;
  • extend - returns all object properties;
  • count - returns the number of retrieved records; supported only by certain subselects.
基本的にはレスポンス情報に影響するパラメータで、詳細に表示するか簡易的に表示するかのモードが切り替えられる感じかなと思います
指定可能なquery一覧


■参考サイト

0 件のコメント:

コメントを投稿