我已阅读并理解您能否帮助我进行容量规划?,但我不确定我是否了解在 DNS 服务器方案中我的下一步是什么。我认为我的 CPU 负载很高,或者我可能开始放弃查询,但我想在对服务器采取行动之前更好地了解服务器的负载。这对我来说尤其令人担忧,因为众所周知,将您的基础架构扩展到 DDoS 负载正在输掉战斗。
为了了解我的环境,我应该分析什么?
我已阅读并理解您能否帮助我进行容量规划?,但我不确定我是否了解在 DNS 服务器方案中我的下一步是什么。我认为我的 CPU 负载很高,或者我可能开始放弃查询,但我想在对服务器采取行动之前更好地了解服务器的负载。这对我来说尤其令人担忧,因为众所周知,将您的基础架构扩展到 DDoS 负载正在输掉战斗。
为了了解我的环境,我应该分析什么?
在 Serverfault 上,我们通常会告诉您,我们无法帮助您进行容量规划。这是有充分理由的:我们不知道您的环境的具体情况,而关于如何衡量它的答案几乎相同。不幸的是,DNS 容量测量是一个鲜为人知的话题,大多数管理员会认为高 CPU 使用率意味着是时候考虑增加容量了。这是一个非常非常糟糕的主意,并且扩展到 DNS DDoS 将不可避免地导致您的网络设备阻塞。(或者更糟糕的是,人们联系您的法律部门)
大多数管理员首先会尝试利用服务器日志和数据包捕获,但简单的事实是 SNMP 可以告诉您的环境信息远多于日志的功能。不要忽略日志和数据包捕获,但 SNMP 通常可以帮助您更快地发现问题的存在。
除了跟踪 SNMP 监控工具提供的默认系统统计信息(应包括 CPU 负载、每个接口的吞吐量和数据包计数器、磁盘 I/O 等),我建议添加以下 OID:
udpInErrors
强烈推荐愤怒的红色)udpInDatagrams
,udpOutDatagrams
udpNoPorts
tcpInSegs
,tcpOutSegs
解释图表
这些图表可以分为两类:指示问题的指标和帮助您诊断问题的指标。
指标
udpInErrors
是容量问题的主要迹象。每次内核丢弃 UDP 数据报时,此计数器都会增加,因为应用程序处理流量的速度不够快。这意味着您的 DNS 服务已超载,无法跟上传入的流量。如果您无法将这些指标的增加与系统上的其他性能问题相关联,那么恭喜:您合法地接近/超出容量,是时候添加服务器了。认为我印象深刻。:)
诊断
这仅涵盖 DNS 特定项目。在这里用你的头脑,不要指望这是包罗万象的。(例如:磁盘 I/O 饱和不是 DNS 特有的问题)
旁注:
udpNoPorts
并不是真正的容量指标,但它对于识别缓存中毒尝试很有用。每次在意外端口上看到 UDP 数据包时,此计数器都会增加,并且在正常操作期间持续存在这些数据包可能表明有人试图伪造回复。(要么那个,要么你的一个听众没有运行:把它重新打开 foo'!)对于 DNS 服务器(实际上是任何类型的服务器),有时您需要查看和分析由它发出的请求,以防配置错误(可能在其他地方)放大请求量(例如,参见Windows DNS 服务器重复请求区域中的记录当他们得到 SERVFAIL 响应时)。查看查询和响应的比例,然后尝试找到一个比较器来检查是否正常。