kamermans/zabbix-client

v1.0.0 2016-06-06 15:05 UTC

This package is auto-updated.

Last update: 2024-09-07 04:46:57 UTC


README

这是一个简单而强大的Zabbix API客户端,用于PHP。我没有尝试将Zabbix API建模成PHP函数,而是使接口极容易使用,以便查询Zabbix JSON-RPC API。

examples/中提供了几个示例,应该非常有用。您甚至可以复制zabbix_auth.php并命名为zabbix_auth_local.php,然后该文件将由示例使用,这样您就不需要污染git仓库。

兼容性

此库是为Zabbix 2.2设计和测试的,可能与其他版本存在问题。如果您想添加对2.4(或任何其他版本)的支持,非常欢迎:)

认证

初始连接时,Zabbix使用用户名和密码,然后使用认证令牌进行后续请求。

以下是如何连接和认证的示例

$client = new ZabbixClient(
    "http://myzabbixserver/zabbix/api_jsonrpc.php",
    "myusername",
    "mypassword"
);

调用Zabbix端点

所有Zabbix端点都在Zabbix文档中描述。

要调用端点,请使用$client->request(string endpoint, array params=[])方法

$response = $client->request('apiinfo.version');
echo "Server is running Zabbix $response\n";

请注意,$response是一个kamermans\ZabbixClient\ApiResponse对象,具有一些神奇属性。在上面的示例中,Zabbix端点apiinfo.version返回一个单独的字符串,因此您可以将$response用作字符串。

大多数端点都返回一个关联数组作为响应

$hosts = $client->request('host.get', [
    'output' => [
        'host_id',
        'host',
    ],
]);

foreach ($hosts as $host) {
    echo "{$host['hostid']}: {$host['host']}\n";
}

如你所见,你可以遍历响应对象(尽管它仍然是kamermans\ZabbixClient\ApiResponse)。

在这个示例中,我们还传递了一个参数数组作为第二个参数。

错误处理

当Zabbix API返回错误时,它会包装成适当的异常并抛出。

kamermans\ZabbixClient命名空间内可以捕获三种类型的异常

  • Exception:用于通用异常的基类。所有异常都扩展自该类。
  • ApiException:所有返回可解析JSON响应的API调用都由该异常包装,它为您提供了来自Zabbix的格式良好的错误消息,并通过ApiException::getResponse()访问原始响应。
  • AuthException:这是ApiException的扩展,仅在认证错误时抛出,以便可以不同处理。

实用函数

响应转储

为了轻松故障排除响应,您可以使用ApiResponse::dump()函数将响应输出到屏幕,或者使用ApiResponse::dd()转储并退出。

$response = $client->request('apiinfo.version');
$response->dd(); // '2.2.8'

服务器ping

有一个实用函数可以检查到Zabbix服务器API的延迟(以毫秒为单位)。

$time = $client->ping();
echo "Pinged Zabbix Server in {$time}ms\n";

完整示例

此示例列出Zabbix服务器中的所有系统项

<?php

require __DIR__.'/../vendor/autoload.php';

use kamermans\ZabbixClient\ZabbixClient;

$client = new ZabbixClient(
    "http://myzabbixserver/zabbix/api_jsonrpc.php",
    "myusername",
    "mypassword"
);

$host = 'Zabbix server';
$key = 'system';

echo "Showing $key items for $host\n\n";

$response = $client->request('item.get', [
    'host' => $host,
    'search' => [
        'key_' => $key,
    ],
    'sortfield' => 'name',
]);

foreach ($response as $item) {
    echo "{$item['name']}: {$item['lastvalue']}\n";
}

输出

Showing system items for Zabbix server

Context switches per second: 715
CPU $2 time: 98.3452
CPU $2 time: 0.0000
CPU $2 time: 0.0000
CPU $2 time: 0.0000
CPU $2 time: 0.0042
CPU $2 time: 0.4585
CPU $2 time: 0.4960
CPU $2 time: 0.6961
Free swap space: 2207690752
Free swap space in %: 84.8960
Host boot time: 1427393569
Host local time: 1429251462
Host name: zabbix
Interrupts per second: 481
Number of logged in users: 1
Processor load (1 min average per core): 0.0000
Processor load (15 min average per core): 0.0125
Processor load (5 min average per core): 0.0075
System information: Linux zabbix 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64
System uptime: 1857561
Total swap space: 2600464384