news 2026/7/31 20:55:25

在Zabbix Server使用PHP编译一个扩展模块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在Zabbix Server使用PHP编译一个扩展模块

场景:一次性返回所有在线 Agent 的 CPU 利用率平均值(%)

Zabbix Server的PHP相关目录

# 一台已经跑通的 Zabbix 7.0 实例(Server + Web + Agent)# 参考 CentOS 7 源码编译路径:PHP_PREFIX=/usr/local/zabbix/php# 你的 PHP 安装目录PHP_BIN=${PHP_PREFIX}/bin/phpPHP_CONFIG=${PHP_PREFIX}/bin/php-configPHP_INI=${PHP_PREFIX}/etc/php.iniWEB_ROOT=/usr/local/zabbix/ui# Zabbix 前端目录

1、生成php需要识别的文件结构

mkdir-p /tmp/zbx_iowait&&cd/tmp/zbx_iowait# 用 PHP 自带的 ext_skel 工具${PHP_PREFIX}/bin/php-ext-skel --ext zbx_iowait --dir.# 结果目录结构# zbx_iowait/# ├── config.m4# ├── zbx_iowait.c# ├── php_zbx_iowait.h# └── tests/

2、修改两处文件

文件 1:zbx_iowait.c,把默认函数整块替换为:

PHP_FUNCTION(zbx_iowait){zbx_dc_host_t *hosts;zbx_dc_item_t *items;int host_num=0, item_num=0;doublesum=0, count=0;/* 直接调用 Zabbix Server 内部 DC 缓存 API,0 成本 */ zbx_dc_get_hosts_by_key("system.cpu.util[,avg1]",&hosts,&host_num,&items,&item_num);for(int i=0;i<item_num;i++){sum+=atof(items[i].lastvalue);count++;}zbx_dc_free_hosts(hosts, host_num, items, item_num);if(count)RETURN_DOUBLE(sum / count);RETURN_DOUBLE(0);}

文件 2:php_zbx_iowait.h,把函数声明改成:

PHP_FUNCTION(zbx_iowait);

3、编译

phpize ./configure --with-php-config=$PHP_CONFIGmake-j$(nproc)&&sudomakeinstall

4、加载扩展

echo"extension=zbx_iowait.so">>$PHP_INI# 重启 PHP-FPM(Zabbix Web 依赖的进程)sudosystemctl restart zabbix-php-fpm

5、验证

$PHP_BIN-r'var_dump(zbx_iowait());'# 输出类似:float(123456)

6、在 Zabbix 前端使用

登录 Zabbix → 「配置」→「主机」→ 任意 Agent → 「监控项」→「创建监控项」
字段填写
名称:CPU iowait (by PHP ext)
类型:脚本
键值:php.iowait
脚本内容:
<?phpechozbx_iowait();?>
保存后点「检测」→「最新数据」,即可看到实时 iowait 值。

7、回滚

sudosed-i'/zbx_iowait.so/d'$PHP_INIsudorm$(${PHP_CONFIG}--extension-dir)/zbx_iowait.sosudosystemctl restart zabbix-php-fpm
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/29 14:44:04

还在裸奔发布Agent?立即实施Docker签名以抵御供应链攻击

第一章&#xff1a;Agent发布安全的紧迫性与Docker签名的价值在现代持续交付体系中&#xff0c;Agent作为自动化任务执行的核心组件&#xff0c;其发布的安全性直接影响整个CI/CD链路的可信度。一旦恶意或被篡改的Agent镜像被部署&#xff0c;攻击者可能获得对构建环境、凭证系…

作者头像 李华
网站建设 2026/7/31 17:50:20

新手首次开标注意事项

给首次参与投标会议的新手一点建议~要带好被授权人的身份证检查好标书密封袋上的签字盖章&#xff0c;带上密封袋密封条胶棒&#xff0c;公章之类的东西带到现场&#xff0c;如果密封有问题&#xff0c;在投标截止时间之前是有机会补救的。要早点出发&#xff0c;尽量不要卡点到…

作者头像 李华
网站建设 2026/7/28 20:43:39

揭秘智能Agent日志难题:如何在Docker中实现精准日志收集与监控

第一章&#xff1a;智能Agent日志收集的挑战与演进随着分布式系统和微服务架构的广泛应用&#xff0c;智能Agent在日志收集中的角色愈发关键。传统的集中式日志采集方式已难以应对高并发、多节点、动态伸缩的现代应用环境&#xff0c;智能Agent需具备自适应、低延迟和高可靠的数…

作者头像 李华
网站建设 2026/7/30 11:30:00

【视频帧字幕检索核心技术】:相似度阈值设置的5大黄金法则

第一章&#xff1a;视频帧字幕检索的相似度阈值概述在视频内容分析与检索系统中&#xff0c;视频帧字幕的语义匹配是实现精准搜索的关键环节。相似度阈值作为判断字幕与查询文本是否匹配的核心参数&#xff0c;直接影响系统的召回率与准确率。该阈值通常基于向量空间模型计算&a…

作者头像 李华
网站建设 2026/7/29 10:04:14

传统 Hal 开发笔记6----App 访问硬件服务

目录获取服务调用接口App 访问硬件服务 获取服务调用接口 随便在一个原生应用里调用系统服务 HELLO_SERVICE&#xff0c;调用相关接口即可。 xuejievt-PowerEdge-R740:~/A11a133a12$ git diff frameworks/base/packages/xxxxx/xxxxxoActivity.java diff --git a/frameworks…

作者头像 李华