php-client-zabbix/php-zabbix-api-updated

PhpZabbixApi 库

v2.4.6 2018-06-25 19:33 UTC

This package is auto-updated.

Last update: 2024-09-14 00:39:30 UTC


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 方法调用,您可以简单地

  1. 删除点
  2. 大写动作的第一个字母

示例

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';