资讯动态

Zabbix 监控 Unbound 递归 DNS 服务器:模板指标详解、部署流程与采集原理(community-templates)

发布时间:2026/10/15 1:52:35 来源:尧图企业网站定制
【免费下载链接】community-templatesZabbix Community Templates repository项目地址https://gitcode.com/gh_mirrors/co/community-templates点击查看免费下载导读本文围绕 community-templates 仓库中 Unbound 递归 DNS 监控模板 展开系统讲解该模板如何通过 Zabbix Agent 采集 Unbound DNS 服务器的查询总数、缓存命中/未命中、平均递归耗时、应答 RCODE 分布、DNSSEC 校验结果以及各查询类型计数等关键指标。读完本文你将掌握模板完整的指标体系、基于unbound-control stats_noreset的采集链路、Zabbix Agent 端 UserParameter 的配置方式以及模板导入、主机关联与单位口径对齐的完整实战流程。模板概览它监控什么、适用什么场景该模板位于仓库的Applications/DNS/template_unbound_recursive/6.2/目录用于为 Zabbix 增加对 Unbound 递归 DNS 服务器的监控能力。Unbound 是一款广泛使用的开源验证型递归解析器其运行状态直接决定下游用户的域名解析体验因此需要持续观察查询负载总查询数、递归应答数、各类型A/AAAA/PTR/MX/SRV/TXT/NAPTR/TYPE64/TYPE65查询计数缓存效率缓存命中数、缓存未命中数用于评估解析器缓存策略的有效性解析性能平均递归耗时反映上游解析链路与网络状况应答健康度NOERROR、SERVFAIL、NXDOMAIN、REFUSED、FORMERR、NOTIMPL 等 RCODE 应答计数用于快速定位解析故障安全可信度DNSSEC 安全应答数、被判为 bogus校验失败的 RRset 数。从模板导出文件看template_unbound_recursive.yaml 中模板名称为Unbound-DNS归入Templates模板组并带有DNS: Unbound标签便于在 Zabbix 前端检索与归类。指标体系全景UserParameter 与监控项一览模板在 Zabbix Agent 端定义了一组 UserParameter每个 Key 对应一条采集命令。完整指标清单如下与 unbound-control.conf 中的 22 条配置一一对应全局查询与性能指标| Key | 说明 | |-|-| | unbound.total.num.queries | 查询总数。 | | unbound.total.num.cachehits | 缓存命中总数。 | | unbound.total.num.cachemiss | 缓存未命中总数。 | | unbound.total.num.recursivereplies | 递归应答总数。 | | unbound.total.recursion.time.avg | 平均递归耗时。 |应答 RCODE 分布指标| Key | 说明 | |-|-| | unbound.num.answer.rcode.NOERROR | NOERROR RCODE 应答数。 | | unbound.num.answer.rcode.FORMERR | FORMERR RCODE 应答数。 | | unbound.num.answer.rcode.SERVFAIL | SERVFAIL RCODE 应答数。 | | unbound.num.answer.rcode.NXDOMAIN | NXDOMAIN RCODE 应答数。 | | unbound.num.answer.rcode.NOTIMPL | NOTIMPL RCODE 应答数。 | | unbound.num.answer.rcode.REFUSED | REFUSED RCODE 应答数。 |DNSSEC 安全指标| Key | 说明 | |-|-| | unbound.num.answer.secure | 安全通过 DNSSEC 验证应答数。 | | unbound.num.rrset.bogus | bogusDNSSEC 校验失败被丢弃RRset 数。 |按查询类型统计指标| Key | 说明 | |-|-| | unbound.num.query.type.A | A 记录查询数。 | | unbound.num.query.type.PTR | PTR 记录查询数。 | | unbound.num.query.type.MX | MX 记录查询数。 | | unbound.num.query.type.TXT | TXT 记录查询数。 | | unbound.num.query.type.AAAA | AAAA 记录查询数。 | | unbound.num.query.type.SRV | SRV 记录查询数。 | | unbound.num.query.type.NAPTR | NAPTR 记录查询数。 | | unbound.num.query.type.TYPE64 | TYPE64 记录查询数。 | | unbound.num.query.type.TYPE65 | TYPE65 记录查询数。 |说明从当前仓库的 YAML 导出文件看模板中实际定义了 18 个监控项value_type 均为 FLOAT而 conf 文件覆盖了上表全部 22 个 Key。NOERROR、FORMERR、AAAA、NAPTR 四个 Key 已在 Agent 端定义好采集命令如需在前端展示可在导入模板后按同名 Key 补充对应监控项。采集链路解析unbound-control grep cut模板采集的核心机制在 README 中已有交代通过sudo执行unbound-control的stats_noreset选项获取统计输出再用grep过滤、用cut提取出对应指标值。以 unbound-control.conf 中的两条为例UserParameterunbound.total.num.queries, sudo unbound-control stats_noreset | grep total.num.queries | cut -d -f2 UserParameterunbound.total.recursion.time.avg, sudo unbound-control stats_noreset | grep total.recursion.time.avg | cut -d -f2整个命令链路可以拆解为三步sudo unbound-control stats_noreset调用 Unbound 自带的控制工具输出完整统计信息。stats_noreset表示输出统计但不重置计数器因此每次采集拿到的都是自上次统计周期由 Unbound 的statistics-interval决定以来的累计值grep total.num.queries从多行统计输出中精确匹配目标指标行cut -d -f2以为分隔符取第 2 段即右侧的数值作为 Zabbix 监控项的最终值。从工作原理看unbound-control依赖于 Unbound 主配置中启用的 remote-control 通道如control-enable: yes并配置控制接口否则控制命令无法连接解析器进程采集将返回失败。部署时应确保该通道已正确开放。部署前置要求根据 README 的 Requirements 章节使用该模板前需要满足以下条件目标主机已安装 Unbound DNS 服务器并且unbound-control可用sudo 已配置为允许 Zabbix Agent 用户通常为zabbix执行unbound-control的stats_noreset选项否则采集命令会因权限不足而失败。sudoers 配置可参考如下形式需按实际unbound-control路径调整例如使用visudo或/etc/sudoers.d/下的独立文件zabbix ALL(root) NOPASSWD: /usr/sbin/unbound-control stats_noreset部署步骤从 Agent 配置到前端出图1. 放置 UserParameter 配置文件在运行 Zabbix Agent 的主机上将本模板目录下的 unbound-control.conf 复制到/etc/zabbix/zabbix_agentd.conf.d/目录cp unbound-control.conf /etc/zabbix/zabbix_agentd.conf.d/需确认 Zabbix Agent 主配置zabbix_agentd.conf已包含对该目录的 Include 引用例如Include/etc/zabbix/zabbix_agentd.conf.d/*.conf2. 重启 Zabbix Agent配置文件放置完成后重启 Agent 使 UserParameter 生效systemctl restart zabbix-agent3. 导入模板并关联主机将 template_unbound_recursive.yaml 导入 Zabbix 前端Configuration → Templates → Import导入后模板即出现在Templates组中名为Unbound-DNS。随后将其关联到运行 Unbound DNS 服务器的主机Host上模板中的监控项便会通过 Zabbix Agent 自动采集并在前端展示。既有的 18 个监控项均可在 Monitoring → Latest data 中直接查询Queries by type图形则聚合展示了各查询类型的实时分布。模板源码结构剖析YAML 导出文件里有什么深入阅读 template_unbound_recursive.yaml可以还原模板的完整定义模板元信息zabbix_export版本为6.2模板Unbound-DNS归属于Templates组整体标签为DNS: unbound监控项定义18 个 item 的value_type均为FLOAT便于表示耗时如平均递归时间这类浮点数值也兼容累计计数的浮点展示监控项描述每个 item 都附有详细的语义说明例如unbound.num.rrset.bogus用于统计因 DNSSEC 校验失败而被判为 bogus 并丢弃的 RRset 数量可用于发现配置错误的 DNSSEC 区域或缺失的信任锚trust anchor从而防范缓存投毒等安全风险图形定义模板内置一张名为Queries by type的聚合图按ALL聚合方式绘制 7 个查询类型指标A、MX、PTR、SRV、TXT、TYPE64、TYPE65并为每条线分配了不同颜色便于在多类型流量并存时快速区分。一个值得注意的细节YAML 中的监控项均未定义预处理preprocessing。由于stats_noreset输出的是累计计数直接展示的是自统计周期以来的累计值如需观察每秒速率或每周期增量可在前端为该监控项自行添加 change/derivative 类预处理或在触发器中使用差值函数这属于使用层面的可选优化模板本身未做内置。关键监控项的语义与排障价值结合 YAML 中每个 item 的描述可进一步理解这些指标的业务含义缓存命中与未命中cachehits / cachemiss命中代表答案直接来自 Unbound 缓存未命中则需向上游递归获取。二者的比值即缓存命中率直接反映缓存配置与流量特征是否匹配是评估缓存策略有效性的核心依据平均递归耗时recursion.time.avg衡量解析器完成递归查询的平均时间数值上升通常意味着上游权威服务器响应变慢、网络抖动或根/权威服务器可达性恶化SERVFAIL表示服务器临时性故障的应答其激增往往是上游解析链路异常或 DNSSEC 验证失败的表征NXDOMAIN表示域名不存在的应答其异常升高可能源于拼写错误、僵尸域名大量被查询或本地 zone 配置错误REFUSED表示服务器拒绝处理查询通常与访问控制、防火墙规则或配置限制相关secure安全应答Unbound 支持 DNSSEC该指标统计通过密码学验证的应答数量可反映 DNSSEC 覆盖比例bogus RRset因 DNSSEC 验证失败被丢弃的资源记录集合。持续出现 bogus 说明相关区域签名配置或信任链存在问题应优先排查TYPE64 / TYPE65RFC 3597 定义的扩展记录类型用于让 DNS 客户端接收未知记录类型其计数可反映特殊业务查询如某些 CDN 或自定义服务的流量特征。单位口径说明与 statistics-interval 注意事项README 特别强调模板内未指定计量单位units。原因在于指标的实际时间口径由 Unbound 服务端配置决定——Unbound 通过statistics-interval参数控制统计数据的累计与重置周期。因此在部署前必须确认Unbound 侧statistics-interval的设置它决定了stats_noreset输出值所覆盖的时间窗口该口径与 Zabbix 监控项采集频率的匹配关系。例如若statistics-interval设置为 300 秒而 Agent 每 60 秒采集一次两次采集之间计数器可能被重置得到的数值将无法直接反映最近一个采集周期的真实增量前后端单位保持一致以确保数据解读的准确性。若需要按固定时间窗口呈现速率建议在 Zabbix 前端结合预处理或触发器函数将累计值换算为增量/速率同时保持 Unbound 的统计周期稳定。常见问题排查思路监控项无数据Not supported优先在 Agent 主机上手动执行sudo unbound-control stats_noreset确认命令本身可运行且输出包含total.num.queries等行若提示权限问题检查 sudoers 配置命令报错但手动可执行确认 Zabbix Agent 进程的用户与 sudoers 中授权用户一致且NOPASSWD已配置Agent 非交互式执行无法输入密码数值始终为 0检查 Unbound 是否已启用并正确配置 remote-control 通道同时核对statistics-interval与采集频率的口径数值持续偏大stats_noreset为累计计数若想观察周期增量需结合 Zabbix 前端的差值计算或调整采集与统计周期的一致性Key 与模板不匹配若需要监控 NOERROR、FORMERR、AAAA、NAPTR 等 conf 中已定义但 YAML 未导出的 Key可手动在主机上添加同名监控项复用现有 UserParameter无需改动 Agent 配置。结语该模板以最精简的 Agent 端 UserParameter 组合将 Unbound 内置的unbound-control stats_noreset统计能力完整接入 Zabbix覆盖了负载、缓存、性能、RCODE 健康度、DNSSEC 安全与查询类型分布六大维度的可观测性。其实现思路控制命令 grep 过滤 cut 取值简洁可靠适合作为理解如何为自带 CLI 统计接口的服务编写 Zabbix 模板的参考范本。相关文件均可在仓库的 6.2 模板目录 中查阅README 说明文档、UserParameter 配置 与 模板导出文件。赞分享【免费下载链接】community-templatesZabbix Community Templates repository项目地址https://gitcode.com/gh_mirrors/co/community-templates点击查看免费下载相关推荐Zabbix 监控 BIND DNS 服务器community-templates 中 DNS-bind 模板5.0的部署与原理全解Zabbix 监控 BIND DNS 服务器community templates 中 DNS bind 模板5.0的部署与原理全解 本文围绕 commuZabbix 监控 BIND 递归查询负载Bind queries 模板community-templates的安装部署与采集原理全解Zabbix 监控 BIND 递归查询负载Bind queries 模板community templates的安装部署与采集原理全解 本文以 ZabbiZabbix 监控 BackupPC 备份服务器community-templates 中 App BackupPC by Zabbix agent 模板详解Zabbix 监控 BackupPC 备份服务器community templates 中 App BackupPC by Zabbix agent 模板上一篇Go SCAN 3D 扫描器安装与使用教程下一篇TinyVT 开源项目教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑