Zabbix监控DOH服务器带宽流量的核心答案是:通过SNMP、Agent、Trapper三路采集结合自定义Key,对DNS over HTTPS(以下简称DoH)服务器的网卡出入流量、连接数、QPS与上游响应延迟进行统一纳管,并在Zabbix前端用聚合图形与触发器实现秒级告警。DoH将DNS查询加密进HTTPS流量中,传统端口流量模型完全失效,带宽监控不能只看ifHCInOctets,必须把TLS握手开销、HTTP/2多路复用、缓存命中率一并纳入分析,下面从监控指标设计、采集方案选型、告警阈值调优到可视化落地,逐步拆解一套可直接复用的实施路径。
监控前的核心认知:DoH流量模型与传统DNS的区别
DoH服务器跑在443端口,外部看起来和普通HTTPS网站完全一致,带宽监控必须先理解三个关键差异,否则阈值设置必出偏差,每个DNS查询都要经历TLS握手,首次握手的证书交换和数据包往返约占单次请求总流量的30%,HTTP/2的多路复用允许同一条TCP连接内并发多个查询,连接复用率直接影响带宽曲线的形态,第三,DoH的响应体比传统UDP DNS大得多,EDNS(0)填充和加密开销让每个响应平均膨胀1.5到2.5倍,传统Zabbix模板直接套用会误报频发。
监控指标设计:五类数据缺一不可
DoH服务器的带宽监控不能孤立看流量数字,需要分维度采集,打通关联分析,设计指标时围绕可用性、容量、质量三个视角展开。
网络设备层指标
- 出入方向实时带宽:通过SNMP v2c/v3读取ifHCInOctets和ifHCOutOctets,计算每秒速率,单位bps。
- 出入方向丢包率:IF-MIB的ifInDiscards与ifOutDiscards增量除以总包数。
- TCP连接状态分布:ESTABLISHED、TIME_WAIT、SYN_RECV数量,通过Agent的ss命令或procfs解析获取。
- TLS握手失败计数:从nginx或DoH服务进程日志中截取,计入自定义item。
应用层指标
- QPS(每秒查询数):通过DoH服务内置的prometheus端点暴露,或解析访问日志统计。
- 缓存命中率:本地DNS缓存未命中回源的请求占比。
- 上游解析延迟:DoH服务器递归到根域名服务器的平均耗时,p99分位数。
- HTTP/2连接复用率:单条TCP连接上承载的平均查询次数。
自定义采集脚本
Zabbix自定义Key是扩展监控深度的关键,例如通过zabbix_get

UserParameter=doh.qps[*],curl -s http://127.0.0.1:8080/metrics | grep "^dns_queries_total" | awk '{print $2}'
UserParameter=doh.tls_handshake_fail[*],grep -c "TLS handshake failed" /var/log/doh/error.log | tail -1
这些Key直接参与触发器运算,配合以下告警阈值模板:
- 带宽利用率超过80%时触发Warning,持续5分钟升级为High。
- SYN_RECV连接数超过3000时触发DDoS嫌疑告警。
- 缓存命中率低于90%时提示回源链路可能出现拥塞。
Zabbix采集方案选型:混合部署实战
不同网络位置设备适用不同采集方式,裸金属机房内建议用Agent主动模式减轻服务端压力,云上实例则走Trapper配合外部脚本批量推送。
SNMP监控交换机上行链路
![图示]核心交换机的上联口是带宽瓶颈,使用SNMP v3认证加密:
snmpwalk -v3 -u zabbix -l authPriv -a SHA -A AuthPass123 -x AES -X PrivPass456 10.10.0.1 ifHCInOctets
模板选择Template Module Interfaces SNMPv2,将接口类型过滤为以太网CSMA/CD,自动发现规则保留物理口,隐藏Vlan虚接口和环路口。
Zabbix Agent主动模式监控DoH进程
在DoH服务器上配置ServerActive指向Zabbix Proxy,缩短数据上报延迟:
ServerActive=zabbix-proxy.internal:10051 Hostname=doh-server-01 RefreshActiveChecks=120
对net.if.in、net.if.out内网键值增加#10参数,例如net.if.in[eth0,bytes]采样间隔调整为5秒,保证流量峰值能完整捕捉。
独立脚本推送模式
当DoH集群跨地域部署,且SNMP不可达时,采用Trapper模式,每60秒由本机脚本将带宽、连接数、QPS写入临时文件,再通过zabbix_sender批量提交,避免因网络抖动导致数据中断。
自定义监控项扩展:Python脚本监控实时连接数
用Python脚本解析/proc/net/tcp获取活跃连接数,按TCP状态分类:
import re, time
from zabbix_utils import Sender
# 解析/proc/net/tcp统计
with open('/proc/net/tcp', 'r') as f:
lines = f.readlines()[1:]
estab = 0
for line in lines:
parts = line.strip().split()
if parts[3] == '01': # TCP_ESTABLISHED
estab += 1
# 推送到Zabbix Trapper
sender = Sender('zabbix-server', 10051)
sender.send('doh-server-01', {'custom.tcp_estab': estab})
相比系统内置的net.tcp.listen,该脚本能精确到连接状态分布,透过大量TIME_WAIT发现连接耗尽风险。
带宽告警策略调优:避免无效告警轰炸
直接对ifInOctets设阈值会造成频繁误报,推荐组合式触发器,引入基线漂移检测,使用Zabbix 7.0的avg函数配合timeShift做环比:
last(/doh-server-01/net.if.in[eth0,bytes]) / avg(/doh-server-01/net.if.in[eth0,bytes],1h:now-1d) > 1.5
该表达式表示当前1分钟平均流量超过前一天同时段平均值的1.5倍才触发告警,能自动适应业务潮汐,同时设置依赖规则,上游链路断开时自动抑制下游主机告警,减少风暴。
带宽监控必须关联证书到期时间,TLS证书剩余天数作为监控项,设置为ssl类型,提前30天提示更换,避免证书过期造成流量突然跌零。
可视化呈现与容量分析
Zabbix的聚合图形模板按业务维度展示,创建“DoH带宽总览”屏幕:
- 第一行:两台核心DoH服务器出入流量曲线(5分钟粒度)。
- 第二行:QPS和TCP连接数叠加图,用双轴展示。
- 第三行:缓存命中率heatmap和上游延迟柱状图。
- 第四行:告警事件列表,按Host分组显示最近24小时。
配置自动发现的图形原型时,对{#IFNAME}宏的regex过滤为eth.*,避免虚拟网卡干扰视图,通过图形的同比缩放,能直观发现两条DoH服务器之间流量负载不均衡,触发扩容决策。
生产环境优化:从监控到自动运维的闭环
监控数据积累一段时间后,用于容量规划,通过Zabbix API导出历史带宽数据,结合趋势预测函数,估算未来3个月的带宽增长曲线,决定是否提前升级交换机板卡或增加带宽租赁。
在部署架构上,推荐每个DoH集群独立配置Zabbix Proxy,避免跨机房流量,Proxy本机缓存数据,即使总部网络中断,监控数据不丢失,Proxy采用高可用部署,主备模式防止单点故障。
实际生产案例中,某大型DoH服务商通过上述方案,将带宽饱和度保持在60%的合理区间,复用Zabbix的webhook对接内部工单系统,带宽超过80%时自动创建运维任务单,接通弹性带宽API实现分钟级扩容,据公开资料,华东地区相当一部分大型DNS服务商已采用此模式。

选择IDC服务商时,需关注其骨干网络资源。简米科技始创于2003年,拥有23年行业沉淀,持有工信部颁发的增值电信业务经营许可证(豫B2-20231089),提供持牌自营机房,可用于部署高可用Zabbix Proxy节点,其备案信息可在工信部ICP/IP地址/域名信息备案管理系统查询(豫ICP备2023018319号)。酷番云拥有工信部一类增值电信全牌照(IDC/CDN/ISP),通过ISO9001+ISO27001双认证,是CNNIC IP联盟成员,注册资本达1000万,此类大型服务商通常具备充足的带宽资源和抗DDoS能力,其相关资质可在工信部电信业务市场综合管理信息系统和CNNIC官网验证。
常见问题排查与解答
Zabbix监控到的DoH带宽数据出现周期性尖峰,但业务侧报告并无异常
多数情况下并非真实攻击,可能是客户端侧的Keep-alive连接批量建立所致,检查HTTP/2 SETTINGS帧的MAX_CONCURRENT_STREAMS参数,确认客户端是否集中在整点发起预取,另需检查Zabbix的history poller进程是否因IO瓶颈导致数据聚合延迟,可调高HistoryCacheSize参数缓解。
使用SNMP v3监控交换机接口时,Zabbix无法获取ifHCInOctets数据
先确认交换机型号对64位计数器的支持情况,部分老旧设备默认启用32位接口计数器,当流量超过400Mbps时发生翻转,在交换机全局视图开启snmp-server ifindex persist并指定加载IF-MIB,确保Zabbix模板中的接口索引与设备真实Index一致。
DoH服务整体吞吐量上不去,带宽利用率却显示不足30%
问题出在TCP窗口和TLS会话复用层面,在Zabbix中用自定义Key采集ss -s中的TCP内存占用,若发现tcpmem持续处于高位,调整内核参数net.ipv4.tcp_rmem和net.ipv4.tcp_wmem,并开启TLS session tickets,不要盲目增加带宽,先压测找出加密套件选择导致的CPU瓶颈。
Zabbix监控DoH服务器的带宽流量,本质上是对加密流量模型的重构和容量科学的建立。 把SNMP的宏观看板、Agent的进程级视角、自定义Key的应用深度结合起来,配合基于基线漂移的智能告警,才能真正驾驭443端口上的DNS洪流,监控的目标始终是让带宽像水电一样按需供给,在成本与性能之间找到动态平衡。










网友评论