首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
Zabbix 模板 speedtestX 实战解析:用 Zabbix trapper + JSONPath 构建互联网测速监控
📅 2026/10/16 1:49:58
✍️ 爱科研究院
👁 阅读 3,247
【免费下载链接】community-templatesZabbix Community Templates repository项目地址https://gitcode.com/gh_mirrors/co/community-templates点击查看免费下载导读SpeedTest模板内部标识SpeedTest目录名为template_internet_speed_test是 Zabbix 社区模板库中一个轻量级互联网带宽测速监控模板。它以一条Zabbix trapper类型的原始数据通道key 为speedtestX接收外部脚本投递的 Ookla Speedtest JSON 结果再通过 6 个Dependent item配合 JSONPath 预处理将下载/上传速率、延迟、丢包、ISP 与结果 URL 拆解为独立监控项。读完本文你将掌握该模板的完整数据流、全部监控项与 JSONPath 解析细节并能结合采集脚本与 Docker 方案将其落地部署、二次扩展。模板概述一个描述待补却结构完整的 trapper 模板模板的官方描述非常简短原文为葡萄牙语 Descrição em breve意为描述即将补充作者为 Fabricio Guiamraes。但从仓库中随附的导出文件可以确认其完整定义Zabbix 5.0 版本template_internet_speed_test.xmlzabbix_exportversion 5.0导出日期 2021-11-21Zabbix 5.4 版本template_internet_speed_test.yamlZabbix 6.0 版本template_internet_speed_test.yaml。三个版本导出内容一致模板归属于Templates组不含宏macros、不含模板链接template links、不含发现规则discovery rules这与 README 中的声明完全吻合。同时模板在 5.0 XML 中定义了名为Internet X SpeedTest的 application应用集5.4/6.0 YAML 中则用tags: Application Internet X SpeedTest表达同一语义。也就是说这是一个零配置依赖的模板导入即用所有能力都集中在 7 个监控项上数据来源完全依赖外部投递。核心数据流trapper 接收原始 JSONDependent item 分层解析从 XML 的items定义可以清晰还原模板的设计思路其数据流如下外部采集端例如 cron 定时任务或 Docker 容器调用 OoklaspeedtestCLI以-f json输出 JSON采集脚本用zabbix_sender将完整 JSON 文本投递到 trapper 监控项speedtestX主机上该模板的X SpeedTest RAWZabbix Server/Proxy 每收到一份新 JSON立即触发 6 个依赖项通过 JSONPath 提取各自字段——由于delay: 0依赖项不按时间轮询而是主项有数据就立刻跟随更新保证各指标与原始数据严格同步数值型指标按原始 JSON 单位直接入库Bps、ms、%文本型指标ISP、URL关闭趋势存储trends: 0。主从关系在导出文件中明确可见例如 Download Speed 的定义item nameDownload Speed/name typeDEPENDENT/type keyXspeedtest_download/key delay0/delay unitsBps/units preprocessing steptypeJSONPATH/typeparams$.download.bytes/params/step /preprocessing master_itemkeyspeedtestX/key/master_item /item关键点master_item.key指向speedtestX预处理步骤使用 JSONPath 表达式$.download.bytes。注意这里取的是bytes字节字段并配以Bps单位与另一套常见做法取bandwidth再乘 8 得到 bps不同——本模板直接以每秒字节数上报配置更简单但展示数值是字节/秒而非比特/秒落地时需留意单位换算。监控项全解析Items collectedREADME 给出的监控项表格是模板的内容骨架下表完整继承并补充了导出文件中的类型、键值、单位与 JSONPath 细节监控项名称类型Key值类型/单位JSONPath 预处理说明X SpeedTest RAWZabbix trapperspeedtestXTEXTtrends: 0—原始 JSON 入口delay: 0由zabbix_sender外部投递Download SpeedDependent itemXspeedtest_download数值 /Bps$.download.bytes下载速率字节/秒Upload SpeedDependent itemXspeedtest_upload数值 /Bps$.upload.bytes上传速率字节/秒LatencyDependent itemXspeedtest_latencyFLOAT /ms$.ping.latencyPing 平均延迟Packet LossDependent itemXspeedtest_packetlossFLOAT /%$.packetLoss丢包率百分比ISP ProviderDependent itemXspeedtest_ispTEXTtrends: 0$.isp当前接入的 ISP 名称URL ResultDependent itemXspeedtest_urlresultTEXTtrends: 0$.result.urlspeedtest.net 结果页 URL以上表格即为 README Items collected 章节的完整继承并补充了 XML/YAML 中定义的值类型、单位与 JSONPath 参数。逐项技术要点X SpeedTest RAW类型TRAP、delay: 0、value_type: TEXT、trends: 0。TEXT 类型意味着每次收到的整份 JSON 都会作为最新值保存可用于事后排查原始数据关闭趋势存储则避免大文本占用趋势表空间。5.4/6.0 版本中该 item 位于tags: Application Internet X SpeedTest下。Download / Upload Speed均为数值型依赖项无value_type显式声明时默认UNSIGNED整数。JSONPath 直接取$.download.bytes/$.upload.bytes。这是 Ookla CLI JSON 输出中的顶层字段含义是本次测试传输的字节数注新版 Ookla CLI 同时输出bandwidth字段以 bps 计本模板选择 bytes 口径。Latencyvalue_type: FLOAT、单位ms取$.ping.latency。Ookla JSON 中ping.latency本身就是毫秒值因此无需乘法换算。Packet Lossvalue_type: FLOAT、单位%取$.packetLoss数值即丢包百分比如0表示无丢包。ISP ProviderTEXT、trends: 0取$.isp保存测速时所用连接对应的 ISP 名称。URL ResultTEXT、trends: 0取$.result.url即 speedtest.net 结果分享链接方便核对每次测试的服务端记录。由于依赖项delay: 0且全部挂在同一个 master item 上一次投递即可同步刷新 6 个指标非常契合低频周期测速如每 6 小时一次的场景。采集端配套如何把 JSON 送进speedtestX模板本身不含采集逻辑README 也未给出投递脚本。仓库中同主题的姊妹模板 Template_App_Speedtest_Wan作者 Todd Blake提供了完整可参考的采集实现其数据投递方式与speedtestX的 trapper 模型完全一致可直接借鉴核心脚本 record_speedtest.sh 的关键流程前置校验通过which定位speedtest、timeout、zabbix_sender、date、mktemp、stat等工具任一缺失即报错退出并用speedtest -V | egrep Speedtest by Ookla校验 CLI 必须是 Ookla 官方版本而非 PyPI 上的第三方包。执行测速timeout 300 speedtest $SPEEDTESTPARAMS -f json将 JSON 写入临时文件若输出文件小于 100 字节判定为失败并给出排查提示-f json手动复跑、检查文件内容。投递数据通过zabbix_sender发送两条数据-k custom.speedtest[json]投递完整 JSON对应本模板的speedtestXtrapper-k custom.speedtest[runtime]投递执行时间戳对应最近测速时间类监控项。加密支持若设置PSKID与PSKFILE则改用--tls-connect psk --tls-psk-identity ... --tls-psk-file ...建立 PSK 加密连接投递否则明文投递。脚本顶部需配置三个变量ZABSRVZabbix Server/Proxy 地址、SPDHOST模板所挂主机的显示名称必须与 Zabbix Web UI 中的主机名一致否则zabbix_sender找不到主机、SPEEDTESTPARAMS可选的额外 CLI 参数如--accept-license、指定服务器-s id。将其套用到本模板时只需把投递 key 从custom.speedtest[json]改为speedtestX即可。Docker 化采集同目录的 Dockerfile 与 record_speedtest_docker.sh 提供了容器化方案多阶段构建——先用alpine拉取并解压 Ookla speedtest 1.2.0 二进制再在运行镜像中安装zabbix-utils提供zabbix_sender以非 root 用户speedtest运行ENTRYPOINT指向采集脚本。运行方式docker run --rm \ -e ZABBIX_SERVER123.123.123.123 \ -e SPEEDTEST_HOSTmy-speedtest-host \ -e SPEEDTESTPARAMS--accept-license \ siegy22/speedtest-cli-zabbix其中ZABBIX_SERVER与SPEEDTEST_HOST为必填环境变量脚本第 4–5 行做了显式校验PSKID/PSKFILE可选用作加密。定时调度无论脚本还是容器都需要周期性触发。README 建议用 cron例如每 6 小时执行一次0 */6 * * * /usr/local/bin/record_speedtest.sh # feed speedtest info into zabbix every 6 hours对应到本模板只要将脚本内的投递 key 指向speedtestXcron 触达后 Zabbix 侧 6 个依赖项即会同步刷新。部署步骤从导入到出数导入模板在 Zabbix Web UI 中进入 Configuration → Templates → Import按版本选择对应文件Zabbix 5.0Applications/template_internet_speed_test/5.0/template_internet_speed_test.xmlZabbix 5.4Applications/template_internet_speed_test/5.4/template_internet_speed_test.yamlZabbix 6.0Applications/template_internet_speed_test/6.0/template_internet_speed_test.yaml挂载主机将该模板链接到目标主机链路本身即主机名监控的是该主机所在网络的互联网出口质量。配置采集端部署 Ookla speedtest CLI 投递脚本参考上文record_speedtest.sh脚本中SPDHOST设为步骤 2 的主机名投递 key 设为speedtestX。验证数据手动执行一次脚本后在 Latest data 中查看X SpeedTest RAW是否出现 JSON 文本以及 6 个依赖项是否解析出数值若依赖项显示不支持或空白优先排查 JSONPath 与投递 JSON 结构的匹配。扩展建议从有数据到能告警模板刻意保持最小化无宏、无触发器因此告警需自行补充。可参考姊妹模板 Template_App_Speedtest_Wan 中已被实践验证的三类触发器与宏模式数据中断告警nodata(/Template_App_Speedtest_Wan/custom.speedtest[json],{$NO_SPDTST_DATA_SECS})1配合宏{$NO_SPDTST_DATA_SECS}默认 21900 秒即 6 小时 5 分钟缓冲——含义是超过设定时长未收到新测速数据则告警可映射到本模板的speedtestX带宽劣化告警max(/Template_App_Speedtest_Wan/speedtest[download.bandwidth],#3){$BWIDTH_DL_ALERT}默认阈值{$BWIDTH_DL_ALERT}209715200200 Mbps、{$BWIDTH_UL_ALERT}1048576010 Mbps即最近 3 次测试均值低于阈值触发 Warning7.0 版本进一步引入{$BWIDTH_LOW_COUNT}宏控制连续几次低于阈值才告警可视化模板自带的Internet Bandwidth Latency仪表盘与两张经典图下载/上传带宽曲线、延迟/抖动曲线可直接移植——本模板的Xspeedtest_download、Xspeedtest_upload、Xspeedtest_latency与之语义对应。将上述表达式中custom.speedtest[json]替换为speedtestX、speedtest[download.bandwidth]替换为Xspeedtest_download即可为本模板补齐断流告警 带宽劣化告警 趋势图的完整监控闭环。版本差异与使用限制5.0 XML vs 5.4/6.0 YAML三者 item 定义、键值、JSONPath 完全一致差异仅在格式与元数据——5.4/6.0 引入uuid模板92f95573c18c49f799f6e32f4b60d19c、各 item 独立 uuid与tags标签体系5.0 使用applications应用集。导入时按目标 Zabbix 大版本选择对应文件即可。单位口径下载/上传速率以Bps字节/秒存储若要与其他以 bps 统计的数据对比需自行换算×8。依赖外部投递模板是被动接收模型speedtestX不会自行采集若脚本/容器未运行数据即中断这也正是断流告警存在的意义。README 状态README 中 Descrição em breve描述待补充与无宏/无链接/无发现规则/无触发器的声明与导出文件内容核对无误——该模板当前是纯监控项集合告警与可视化能力需要使用者按需叠加。小结template_internet_speed_test用 1 个 trapper 入口 6 个 JSONPath 依赖项把 Ookla speedtest CLI 的 JSON 输出转化为 7 个可直接查询的监控指标结构简洁、零配置依赖。理解speedtestX主从关系与各项 JSONPath 映射是使用它的关键结合仓库姊妹模板的record_speedtest.sh、Dockerfile、宏与触发器定义即可快速构建一套测速数据入库 → 断流/带宽告警 → 趋势可视化的互联网出口质量监控方案。赞分享【免费下载链接】community-templatesZabbix Community Templates repository项目地址https://gitcode.com/gh_mirrors/co/community-templates点击查看免费下载相关推荐Zabbix Community 模板实战基于 SMTP 邮件通知的 Veeam Backup Replication 监控模板VEEAM SMTP trapperZabbix Community 模板实战基于 SMTP 邮件通知的 Veeam Backup Replication 监控模板VEEAM SMTP t用 SMTP 邮件实现 Veeam Backup Replication 监控Zabbix 社区模板 VEEAM SMTP trapper 深度解析用 SMTP 邮件实现 Veeam Backup Replication 监控Zabbix 社区模板 VEEAM SMTP trapper 深度解析Zabbix MongoDB 监控实战指南MongoDB node by Zabbix agent 2 模板全解析Zabbix MongoDB 监控实战指南MongoDB node by Zabbix agent 2 模板全解析 导读 本文围绕 Zabbix 官方提供的指标监控可观测性告警运维上一篇Vue3中的emits类型定义Naive Ui Admin事件类型安全下一篇Blazored.Modal高级配置掌握模态框动画、定位与尺寸控制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/16 1:49:58
python 打包单个文件
2026/10/16 1:49:58
基于MP2642GR-Z与MK24FN1M0的两串锂电池主动均衡设计
2026/10/16 1:44:57
高考数学导数压轴题解析:函数单调性与参数范围求解策略
2026/10/16 2:40:01
Vibe Coding 生成网站去 AI 味完整实战指南:三步治理法
2026/10/16 2:40:01
AI写作软件如何辅助撰写研究方法:从框架到定稿的实操指南
2026/10/16 2:40:01
instagram-private-api 数据模型解析:PostsInsightsFeedResponseUser 接口与帖子洞察(Posts Insights)数据链路
2026/10/16 2:40:01
Windows 文件被锁定删不掉?PowerToys File Locksmith 1 分钟快速定位占用进程
2026/10/16 2:40:01
LAMMPS pair_style lambda/zone/apip 完全指南:APIP 自适应精度势的空间过渡区计算
2026/10/16 2:35:01
Impeller 颜色混合(Color Blending)机制解析:从 BlendMode 枚举到 Pipeline / Advanced 双路径实现
2026/10/16 0:04:49
HCIA-AI V3.5 模拟题库从零搭建:知识点标签、组卷算法与错题分析
2026/10/16 0:04:49
游戏项目Shader清理实战:静态扫描与动态验证双轨并行
2026/10/16 0:04:49
比特币白皮书深度拆解:从双重支付到共识机制的核心设计
2026/10/16 1:17:36
流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南
2026/10/16 1:17:35
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别
2026/10/16 1:17:35
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容
2026/10/16 1:17:35
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/15 5:07:59
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/15 8:10:01
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)