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


相关文章
|
1月前
|
数据采集 算法 测试技术
【硬件测试】基于FPGA的1024QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的1024QAM基带通信系统的硬件测试版本,包含testbench、高斯信道模块和误码率统计模块。系统新增ila在线数据采集和vio在线SNR设置模块,支持不同SNR条件下的性能测试。1024QAM调制将10比特映射到复平面上的1024个星座点之一,实现高效数据传输。硬件测试结果表明,在SNR=32dB和40dB时,系统表现出良好的性能。Verilog核心程序展示了各模块的连接与功能实现。
54 7
|
11天前
|
机器学习/深度学习 人工智能 并行计算
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
|
2月前
|
人工智能 自然语言处理 测试技术
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
Potpie.ai 是一个基于 AI 技术的开源平台,能够为代码库创建定制化的工程代理,自动化代码分析、测试和开发任务。
239 19
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
|
2月前
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
76 10
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
1月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4ASK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的4ASK调制解调系统的硬件测试版本,该系统包括testbench、高斯信道模块和误码率统计模块,并新增了ILA在线数据采集和VIO在线SNR设置功能。通过VIO设置不同SNR(如15dB和25dB),实现了对系统性能的实时监测与调整。4ASK是一种通过改变载波幅度表示数据的数字调制方式,适用于多种通信场景。FPGA平台的高效性和灵活性使其成为构建高性能通信系统的理想选择。
77 17
|
1月前
|
数据可视化 JavaScript 前端开发
利用Postman和Apipost进行API测试的实践与优化-动态参数
在API测试中,Postman和Apipost是常用的工具。Postman内置变量功能有限,面对复杂场景时需编写JavaScript脚本,增加了维护成本。而Apipost提供丰富的内置变量、可视化动态值配置和低代码操作,支持生成真实随机数据,如邮箱、手机号等,显著提升测试效率和灵活性。对于复杂测试场景,Apipost是更好的选择,能有效降低开发与维护成本,提高测试工作的便捷性和可维护性。
|
1月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4FSK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于之前的文章《基于FPGA的4FSK调制解调系统》,增加了ILA在线数据采集模块和VIO在线SNR设置模块,实现了硬件测试版本。通过VIO设置不同SNR(如10dB和20dB),并展示了ILA采集的数据结果。四频移键控(4FSK)是一种数字调制方法,利用四个不同频率传输二进制数据,具有较高的频带利用率和抗干扰性能。输入的二进制数据分为两组,每组两个比特,对应四个频率f1、f2、f3、f4,分别代表二进制组合00、01、10、11。调制过程中选择相应频率输出,并进行幅度调制以增强抗干扰能力。接收端通过带通滤波器提取信号并还原为原始二进制数据。
50 7
|
1月前
|
存储 监控 算法
关于员工上网监控系统中 PHP 关联数组算法的学术解析
在当代企业管理中,员工上网监控系统是维护信息安全和提升工作效率的关键工具。PHP 中的关联数组凭借其灵活的键值对存储方式,在记录员工网络活动、管理访问规则及分析上网行为等方面发挥重要作用。通过关联数组,系统能高效记录每位员工的上网历史,设定网站访问权限,并统计不同类型的网站访问频率,帮助企业洞察员工上网模式,发现潜在问题并采取相应管理措施,从而保障信息安全和提高工作效率。
38 7
|
1月前
|
人工智能 测试技术 API
Windows用户必备:Postman v11详细安装指南与API测试入门教程(附官网下载
Postman是全球领先的API开发与测试工具,支持REST、SOAP、GraphQL等协议调试。2025年最新版v11新增AI智能生成测试用例、多环境变量同步等功能,适用于前后端分离开发、自动化测试、接口文档自动生成及团队协作共享API资源。本文详细介绍Postman的软件定位、核心功能、安装步骤、首次配置、基础使用及常见问题解答,帮助用户快速上手并高效利用该工具进行API开发与测试。
|
1月前
|
数据采集 算法 数据处理
【硬件测试】基于FPGA的256QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的256QAM基带通信系统的硬件测试版本,包含testbench、高斯信道模块和误码率统计模块。系统新增ila在线数据采集和vio在线SNR设置模块,支持不同信噪比(如30dB和40dB)的仿真测试,并提供配套操作视频。256QAM调制方案每个符号携带8比特信息,通过复数值星座图映射实现高效传输。Verilog代码展示了核心模块设计,包括SNR设置、数据处理和ILA测试分析,确保系统在实际硬件环境中的稳定性和性能。
28 2

热门文章

最新文章

推荐镜像

更多