Zabbix监控系统PHP-API开发测试实录

简介: Zabbix监控系统PHP-API开发测试实录

Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问;同时,它基于Web的API,使用JSON-RPC 2.0协议,客户端和API之间的请求和响应使用JSON格式进行编码。


执行请求

完成了前端的安装配置后,向 api_jsonrpc.php 位于前端目录中的文件发送HTTP POST请求,使用远程HTTP请求来调用API。

例如,Zabbix前端安装在 http://test.com/zabbix, 方法如下面:

http://test.com/zabbix/api_jsonrpc.php HTTP/1.1
Content-Type: application/json-rpc
{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}}

其中,请求的 Content-Type 头部必须设置为以下值之一: application/json-rpc, application/json 或 application/jsonrequest。


参数配置

封装函数的类中,使用u s e r 、 user、user、password、$url次数较多,且为了方便和重复使用,此处将常用的三个参数作为常量配置。

//参数配置;
$user = 'Admin';//用户名
$password = 'poleung****';//登录密码
$url = 'http://test.com/zabbix/api_jsonrpc.php';//服务器地址


Curl跨域

/*
 * 爬取Zabbix
 * $url,服务器地址;
 * $header,文件头;
 * $data,数据,array();
*/
function getZabbix($url, $data)
{
    $header = array("Content-type: application/json-rpc");
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $response = curl_exec($ch);
    curl_close($ch);
    return json_decode($response);
}


验证获取token

在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌。这可以使用该 user.login 方法完成。

/*
 * 获取token
 * 爬取Zabbix
 * $url,服务器地址
 * $header,文件头
 * $user,用户名
 * $password,登录密码
*/
function getToken($user, $password, $url)
{
    $token = array(
        'jsonrpc' => '2.0',
        'method' => 'user.login',
        'params' => array(
            'user' => $user,
            'password' => $password,
        ),
        'id' => 1,
        'auth'=> null
    );
    $data = json_encode($token);
    $result = getZabbix($url, $data);
    return $result->result;
}

jsonrpc - API使用的JSON-RPC协议的版本; Zabbix API实现的JSON-RPC版本是2.0;

method - 被调用的API方法名;

params - 将被传递给API方法的参数;

id - 请求的任意标识符;

auth -用户认证令牌; 因为我们还没有一个,它的设置null。

//获取$token
$token = getToken($user, $password, $url);


获取主机列表

// 获取主机信息列表
function get_hostid($token, $url)
{
    $gethostid = array(
        'jsonrpc' => '2.0',
        'method' => 'host.get',
        "params" => array(
            "output" => ["name"],
            // "groupids" => $group_id,
        ),
        "auth" => $token,
        "id" => 1
    );
    $data = json_encode($gethostid);
    $result = getZabbix($url, $data);
    $hostinfo = $result->result;
    if (empty($hostinfo)) {
        $hostid = '';
    } else {
        $hostid = array($hostinfo);
    }
    return json_encode($hostid);
}


项目信息

/*
 * 获取项目信息
 * 获取指定主机,切监控项名称包含 “System uptime” 的监控项,包括触发器
*/
function get_item($token, $url)
{
    $getgroupid = array(
        "jsonrpc" => "2.0",
        "method" => "item.get",
        "params" => array(
            "output" => ["name"],
            "sortfield" => ["itemid"],
            "groupids" => "4",  # 指定主机组id,数组或者单个id
            "hostids" => "10084",  # 指定主机id,数组或者单个id
            "with_triggers" => True,
            "tags" => array(
                [
                    "tag" => "设备归属",
                    "value" => "",
                    "operator" => "4"
                ]
            ),
            "selectItemDiscovery" => "extend",
            "selectHosts" => "extend",
            "selectTriggers" => "extend",
            "selectTags" => "extend"
        ),
        "auth" => $token,
        "id" => 1
    );
    $data = json_encode($getgroupid);
    $result = getZabbix($url, $data);
    $groupinfo = $result->result;
    if (empty($groupinfo)) {
        $groupid = 'null';
    } else {
        $groupid = array($groupinfo);
    }
    return json_encode($groupid);
}


告警信息

/*
 * 获取项目信息
*/
function get_item($token, $url)
{
    $getgroupid = array(
        "jsonrpc" => "2.0",
        "method" => "item.get",
        "params" => array(
            "output" => ["name"],
            "sortfield" => ["itemid"],
            "groupids" => "4",  # 指定主机组id,数组或者单个id
            "hostids" => "10084",  # 指定主机id,数组或者单个id
            "with_triggers" => True,
            "tags" => array(
                [
                    "tag" => "设备归属",
                    "value" => "",
                    "operator" => "4"
                ]
            ),
            "selectItemDiscovery" => "extend",
            "selectHosts" => "extend",
            "selectTriggers" => "extend",
            "selectTags" => "extend"
        ),
        "auth" => $token,
        "id" => 1
    );
    $data = json_encode($getgroupid);
    $result = getZabbix($url, $data);
    $groupinfo = $result->result;
    if (empty($groupinfo)) {
        $groupid = 'null';
    } else {
        $groupid = array($groupinfo);
    }
    return json_encode($groupid);
}


封装API接口

$act = $_GET['act'];
switch ($act) {
    //获取token
    case "getToken";
        $rows = getToken($user, $password, $url);
        die($rows);
        break;
    //获取主机id
    case "getHostid";
        $rows = get_hostid($token, $url);
        die($rows);
        break;
    //获取主机组名和id
    case "getGroupid";
        $rows = get_groupid($token, $url);
        die($rows);
        break;
    //获取项目信息;
    case "getItem";
        @$rows = get_item($token, $url);
        die($rows);
        break;
    //告警信息;
    case "getAlert";
        @$rows = get_alert($token, $url);
        die($rows);
        break;
    //默认数据;
    default:
        echo "";
}


Zabbix API常用方法

1.Item 监控项

item.create - creating new items

item.create - 创建新监控项

item.delete - deleting items

item.delete - 删除监控项

item.get - retrieving items

item.get - 检索监控项

item.update - updating items

item.update - 更新监控项


2.host 主机

host.create - 创建新的主机

host.delete - 删除主机

host.get - 获取主机信息

host.massadd - 给主机添加相关对象

host.massremove - 删除主机相关对象

host.massupdate - 替换或移除主机相关对象

host.update - 更新主机


3.Host group 主机组

hostgroup.create - 创建新的主机组

hostgroup.delete - 删除主机组

hostgroup.get - 获取主机组

hostgroup.massadd - 给主机组添加相关的对象

hostgroup.massremove - 删除主机组相关对象

hostgroup.massupdate - 替换或删除主机组相关对象

hostgroup.update - 更新主机组


4.History(历史)检索由Zabbix监控流程收集的历史值,以便于进行呈现或进一步处理。

history.get - 获取历史数据.


5.Alert-告警

alert.get - 获取告警


@lockdata.cn


相关文章
|
11天前
|
自然语言处理 搜索推荐 数据挖掘
淘宝商品描述 API 接口的开发、应用与收益
淘宝商品描述API接口的开发与应用涵盖注册成为开发者、了解API规范、选择开发工具及语言(如Python)和实现代码调用。该接口可用于优化电商平台商品展示、同步数据、竞品分析、智能客服及个性化推荐,从而提高销售转化率、降低运营成本并拓展业务机会。通过自动化处理和数据分析,企业能更精准地满足消费者需求,提升竞争力。
50 9
|
26天前
|
API 数据安全/隐私保护 UED
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
在掌握了鸿蒙系统的开发基础后,我挑战了蓝牙功能的开发。通过Bluetooth A2DP和Access API,实现了蓝牙音频流传输、设备连接和权限管理。具体步骤包括:理解API作用、配置环境与权限、扫描并连接设备、实现音频流控制及动态切换设备。最终,我构建了一个简单的蓝牙音频播放器,具备设备扫描、连接、音频播放与停止、切换输出设备等功能。这次开发让我对蓝牙技术有了更深的理解,也为未来的复杂项目打下了坚实的基础。
109 58
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
|
5天前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
17天前
|
安全 搜索推荐 数据挖掘
虾皮店铺商品API接口的开发、运用与收益
虾皮(Shopee)作为东南亚领先的电商平台,通过开放API接口为商家和开发者提供了全面的数据支持。本文详细介绍虾皮店铺商品API的开发与运用,涵盖注册认证、API文档解读、请求参数设置、签名生成、HTTP请求发送及响应解析等步骤,并提供Python代码示例。API接口广泛应用于电商导购、价格比较、商品推荐、数据分析等场景,带来提升用户体验、增加流量、提高运营效率等收益。开发者需注意API密钥安全、请求频率控制及遵守使用规则,确保接口稳定可靠。虾皮API推动了电商行业的创新与发展。
89 31
|
29天前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
192 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
5天前
|
Web App开发 JSON 测试技术
API测试工具集合:让接口测试更简单高效
在当今软件开发领域,接口测试工具如Postman、Apifox、Swagger等成为确保API正确性、性能和可靠性的关键。Postman全球闻名但高级功能需付费,Apifox则集成了API文档、调试、Mock与自动化测试,简化工作流并提高团队协作效率,特别适合国内用户。Swagger自动生成文档,YApi开源但功能逐渐落后,Insomnia界面简洁却缺乏团队协作支持,Paw仅限Mac系统。综合来看,Apifox是国内用户的理想选择,提供中文界面和免费高效的功能。
|
5天前
|
API 开发者
通义灵码 API 开发文档自动生成场景DEMO
通义灵码API开发文档自动生成场景DEMO展示了通过自定义指令,大模型能快速根据类代码生成Markdown格式的API文档。文档详细描述API的入参、出参,并可生成测试代码等示例,帮助开发者快速创建美观的API文档。
|
15天前
|
监控 搜索推荐 API
京东JD商品详情原数据API接口的开发、运用与收益
京东商品详情API接口是京东开放平台的重要组成部分,通过程序化方式向第三方提供商品详细信息,涵盖名称、价格、库存等。它促进了京东生态系统的建设,提升了数据利用效率,并推动了企业和商家的数字化转型。开发者可通过注册账号、获取密钥、调用接口并解析返回结果来使用该API。应用场景包括电商平台的价格监控、竞品分析、个性化推荐系统开发、移动应用开发及数据整合与共享等。该接口不仅为企业和开发者带来商业价值提升、用户体验优化,还助力数据资产积累,未来应用前景广阔。
59 9
|
22天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
169 18
|
19天前
|
存储 搜索推荐 API
拼多多根据ID取商品详情原数据API接口的开发、运用与收益
拼多多作为中国电商市场的重要参与者,通过开放平台提供了丰富的API接口,其中根据ID取商品详情原数据的API接口尤为重要。该接口允许开发者通过编程方式获取商品的详细信息,为电商数据分析、竞品分析、价格监测、商品推荐等多个领域带来了丰富的应用场景和显著的收益。
47 10

推荐镜像

更多