cinexpert / php-zabbix-api
PhpZabbixApi 库
Requires
- php: ^5.6 || ^7.0 || ^8.0
- ext-json: *
- ext-openssl: *
- guzzlehttp/guzzle: ^6.5 || ^7.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.19
- symfony/phpunit-bridge: ^5.2
Suggests
- ext-posix: Used to get the real user ID of the current process.
README
我正在寻找贡献者,点击此处获取更多信息
关于
PhpZabbixApi 是一个开源的 PHP 类库,用于与 Zabbix™ JSON-RPC API 通信。
因为 PhpZabbixApi 是直接从原始 Zabbix™ 2.0 PHP 前端源代码 / 文件生成的,所以每个真实的 Zabbix™ JSON-RPC API 方法都直接作为独立的 PHP 方法实现(硬编码)。这意味着 PhpZabbixApi 对 IDE 友好,因为每个 API 方法都有一个 PHP 方法,没有 PHP 魔术函数或其他类似功能。
许可证
PhpZabbixApi 在 MIT 许可证下授权。
获取方法
您可以通过以下 3 种方式获取 PhpZabbixApi:
确保库的版本与 Zabbix™ PHP 前端 / API 版本匹配。
构建
如果您想自己构建库,请查看配置文件 inc/config.inc.php。您可能需要将 PATH_ZABBIX 指向您的 Zabbix™ 安装目录。
如果您设置正确,应该可以通过执行以下操作创建库
php build.php
如果不想自己构建,build/ 目录中也有可用的预构建库。
下载
下载发行版 并从 build/ 目录中提取预构建的 PHP 库。
请确保已下载以下文件,并将它们存储在同一个目录中
ZabbixApi.class.phpZabbixApiAbstract.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';