当前位置: 首页 > news >正文

在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
http://www.cnnetsun.cn/news/91277.html

相关文章:

  • R Shiny模块热加载技术揭秘:实现无缝更新,用户零感知(企业级方案曝光)
  • 【加密PDF解析终极指南】:Dify密钥管理核心技术揭秘与实战应用
  • 节能又达标!基于Linux的污水自动控制方案
  • 企微 SCRM 服务天花板:微伴四级支持,AI 陪跑至盈利
  • PyTorch训练损失异常?LobeChat给出诊断建议
  • 医药类电商系统开发公司有哪些?
  • 为什么90%的企业还没意识到Dify解密算法对文档安全的颠覆性威胁?
  • 为什么你的Vercel AI SDK在Docker中无法读取环境变量?深度剖析加载机制盲区
  • Dify权限验证系统解析:3步完成PDF加密与访问控制
  • 找不到符号
  • 300套伺服电机步进调速电机SolidWorks三维3D模型图结构库合集
  • 模温机企业排名:2025
  • Qwen3-VL-8B:轻量级多模态Embedding新选择
  • 本地部署EmotiVoice多音色情感TTS
  • LobeChat能否实现代码注释生成?文档完整性保障工具
  • 12.16 脚本网页 Golang标准库
  • 【LInux】进程程序替换与shell实现:从fork到exec的完整闭环
  • Github 9.6k Star!一款开源的超强大数据可视化神器!
  • 空间转录组+R语言=发刊利器?5个高分论文常用富集策略首次系统披露
  • 逆变器DC-AC拓扑全解析:从基础到专用,实战选型指南
  • 一文讲清楚Spring Bean的生命周期(附详细流程图)
  • 【Dify与Spring AI兼容性深度解析】:掌握版本匹配的5大核心原则
  • LobeChat能否支持引力波探测?宇宙事件捕捉与信号解读
  • 基于Next.js的LobeChat为何成为开发者新宠?
  • LobeChat压力测试报告:每秒可承受多少并发请求?
  • LobeChat能否对接IFTTT?事件驱动型AI助手构建
  • 10 个降AI率工具,研究生高效避坑指南
  • 从0到1构建智能检索系统,Dify结果融合实战全指南
  • 【混合检索优化实战】:Dify响应时间降低50%的三大核心技术揭秘
  • 版本失控怎么办?Dify工作流回滚全攻略,保障系统稳定性