php-client-zabbix / php-zabbix-api-updated
PhpZabbixApi 库
Requires
- php: >=5.3.0
README
我正在寻找贡献者,点击此处获取更多信息
关于
PhpZabbixApi 是一个开源的 PHP 类库,用于与 Zabbix™ JSON-RPC API 进行通信。
由于 PhpZabbixApi 是直接从原始 Zabbix™ 2.0 PHP 前端源代码 / 文件生成的,因此每个实际的 Zabbix™ JSON-RPC API 方法都直接作为自己的 PHP 方法实现(硬编码)。这意味着 PhpZabbixApi 对 IDE 友好,因为您有一个针对每个 API 方法的 PHP 方法,并且没有 PHP 魔法函数或类似的东西。
许可证
PhpZabbixApi 在 MIT 许可证下授权。
获取方法
您可以通过以下三种方式获取 PhpZabbixApi:
请确保库的版本与 Zabbix™ PHP 前端 / API 版本相匹配。
构建
如果您想自己构建库,请查看配置文件 inc/config.inc.php
。您可能需要将 PATH_ZABBIX
指向您的 Zabbix™ 安装目录。
如果您设置正确,您应该能够通过执行以下操作来创建库
php build.php
如果不想自己构建,build/
目录中也有可用的预构建库。
下载
下载发行版 并从 build/
目录中提取预构建 PHP 库。
请确保您已下载以下文件并将它们存储在相同目录中
ZabbixApi.class.php
ZabbixApiAbstract.class.php
例如
my_application
├── index.php
└── lib
├── ZabbixApiAbstract.class.php
└── ZabbixApi.class.php
Composer
如果您使用 PHP Composer,您可以直接通过以下方式加载库
composer require confirm-it-solutions/php-zabbix-api:<version>
所有 标记 版本都可以安装,例如
composer require 'confirm-it-solutions/php-zabbix-api:2.2.2'
composer require 'confirm-it-solutions/php-zabbix-api:2.4.2'
如果您正在寻找更多“前沿”版本(例如测试),则也可以使用 分支
composer require 'confirm-it-solutions/php-zabbix-api:2.2.*@dev'
composer require 'confirm-it-solutions/php-zabbix-api:2.4.*@dev'
使用方法
命名概念
要将 Zabbix™ API 调用转换为 PHP 方法调用,您可以简单地
- 删除点
- 大写动作的第一个字母
示例
Zabbix™ API PHP API
----------- -------
graph.get graphGet()
host.massUpdate hostMassUpdate()
dcheck.isWritable dcheckIsWritable()
自定义 API 类
默认情况下,只有两个类被定义
ZabbixApiAbstract
└── ZabbixApi
如果您想自定义或扩展库,您可能想在 ZabbixApi
类中这样做。开箱即用,ZabbixApi
是从 ZabbixApiAbstract
继承的空类。
仅通过自定义 ZabbixApi
,您就可以在任何时候更新 ZabbixApiAbstract
(构建),而无需手动合并您的自定义。
基本用法
要使用 PhpZabbixApi,只需加载 ZabbixApi.class.php
,创建一个新的 ZabbixApi
实例,然后您就可以开始使用了
<?php // load ZabbixApi require_once 'lib/ZabbixApi.class.php'; use ZabbixApi\ZabbixApi; try { // connect to Zabbix API $api = new ZabbixApi('http://zabbix.confirm.ch/api_jsonrpc.php', 'zabbix_user', 'zabbix_password'); /* ... do your stuff here ... */ } catch(Exception $e) { // Exception in ZabbixApi catched echo $e->getMessage(); } ?>
API 还可以使用 HTTP Basic 认证,您只需在构造函数中调用额外的参数即可
// connect to Zabbix API with HTTP basic auth $api = new ZabbixApi('http://zabbix.confirm.ch/api_jsonrpc.php', 'zabbix_user', 'zabbix_password', 'http_user', 'http_password');
示例
简单请求
以下是一个简单的请求,用于通过graph.get API方法获取所有定义的图表。
// get all graphs $graphs = $api->graphGet(); // print all graph IDs foreach($graphs as $graph) echo $graph->graphid."\n";
带参数的请求
通常您需要定义一些特定的参数。以下是一个示例,用于通过graph.get API方法获取所有CPU图表。
// get all graphs named "CPU" $cpuGraphs = $api->graphGet(array( 'output' => 'extend', 'search' => array('name' => 'CPU') )); // print graph ID with graph name foreach($cpuGraphs as $graph) printf("id:%d name:%s\n", $graph->graphid, $graph->name);
定义默认参数
有时您需要定义默认参数,这些参数将被包含在每次API请求中。您可以通过在setDefaultParams()
中定义参数来实现,这些参数在一个数组中。
// use extended output for all further requests $api->setDefaultParams(array( 'output' => 'extend' )); // get all graphs named "CPU" $cpuGraphs = $api->graphGet(array( 'search' => array('name' => 'CPU') )); // print graph ID with graph name foreach($cpuGraphs as $graph) printf("id:%d name:%s\n", $graph->graphid, $graph->name);
获取关联数组/非索引数组
默认情况下,所有API响应都将返回为索引数组。
因此,如果您正在寻找一个特定名称的图表,您必须遍历索引数组并比较每个元素的name
属性。这可能会有些麻烦,因此有一个简单的方法可以获取关联数组而不是索引数组。您只需要定义API方法的第二个参数,即您希望用作数组键的属性名称。
以下是一个示例,用于以关联数组的形式获取所有图表,其中图表的name
用作数组键
// get all graphs in an associative array (key=name) $graphs = $api->graphGet(array(), 'name'); // print graph ID with graph name if(array_key_exists('CPU Load Zabbix Server', $graphs)) echo 'CPU Load graph exists'; else echo 'Could not find CPU Load graph';