我正在尝试准确估计我的 DNS 服务器针对特定区域子集处理多少个查询/{day,week,month}。我运行了“rndc stats”并从交易中获取了一个统计文件,但它包含所有区域的查询,而我只需要子集的统计信息。我认为这可以通过在区域文件的 zone{ } 部分添加“zone-statistics no”来实现,但我不敢尝试看看会发生什么。这是正确的程序吗,还是还有其他方法?
操作系统:OpenSuSE 11.2 BIND:9.5
谢谢,
肯德尔
答案1
zone-statistics
就是这样。
您可以全局设置yes
(在“选项”中)并no
为不感兴趣的区域设置,反之亦然 -no
全局设置并yes
为感兴趣的区域设置。
- 剪这里 -
实际上,有三种方法可以获取统计数据:
- rndc 统计数据
- HTTP(统计通道)
- 查询日志(将记录所有区域的所有查询)
显然,如果您需要的只是统计数据,那么 1 和 2 是正确的方法。要按区域控制它们,请使用zone-statistics
语句。日志记录 (3) 无法在 BIND 内按区域控制。
答案2
这不是特别优雅,但还是这么做。
在您的配置中(与您放置zone{}
块的位置相同,但不在块内部),添加如下内容:
logging {
channel query_log {
file "/var/log/named.queries"; // or somewhere else
print-time yes;
};
category queries { query_log; };
};
您将负责grep ... | wc
自己分析该文件(或其他内容)。
如果您不希望文件永远增长,您可能还需要考虑日志轮换。Bind 有一些内置支持,可以根据文件大小或named
重新启动来轮换日志,或者您可以使用外部工具,例如 logrotate。Bind 的日志记录选项详情如下http://www.zytrax.com/books/dns/ch7/logging.html
答案3
绑定支持统计信息。查看Bind 9 配置参考。我认为您需要将 zone-statistics 设置为 yes 才能执行您想要的操作。