kamermans / zabbix-client
Requires
- php: >=5.4.0
- graze/guzzle-jsonrpc: ^3.2
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