通常情况下如果需要了解DNS服务器的工作状态往往需要telnet或ssh到服务器上以命令的方式来获取。该方式不但麻烦而且不直观。本文介绍一种通过SNMP来对DNS服务器进行图形化监控的方法。
该系统主要是基于Cacti,由于cacti在网络监控中应用很多,这里对其安装配置不做介绍。Cacti本身不支持监控DNS的功能,首先下载Cacti的一个工具包,下载地址如下
http://uversaconsulting.net/download/bind9-stats-1.0.tar.gz
http://forums.cacti.net/download.php?id=167
下载完成后解压该文件包,里面有local和snmp两个文件夹,分别对应本地监控方式和远端snmp监控方式。由于系统管理员安装cacti不仅用于监控DNS服务器,还可以监控网内的其他网络设备和服务器,应当选取snmp方式。首先配置DNS服务器,在named.conf文件的options里面添加以下两行:
statistics-file "/var/named/named.stats"; 
zone-statistics yes;
修改下载文件包里的bind9-genstats.sh中的16和19行,确保named.stats和rndc目录和服务器实际目录一致。修改完成后将该文件传到DNS服务器上并将sh /usr/local/bind9-genstats.sh > /dev/null 2>&1命令加入到Cron 任务调度中,每五分钟自动执行一次。
修改下载包snmp目录中的bind9-stats-snmpd.pl文件的43行,确保named.stats文件的目录和服务器实际目录一致。修改完成后将该文件传到DNS服务器上,比如:/usr/local/bind9/bin/。在snmpd.conf文件加入以下一行:
pass  .1.3.6.1.4.1.2021.55 /usr/bin/perl /usr/local/bind9/bin/bind9-stats-snmpd.pl
修改完成后重新启动snmpd服务,重启完成后进行一个测试,在cacti端输入以下命令:snmpwalk -v 1 -c COM_NAME IP_ADDR .1.3.6.1.4.1.2021.55(COM_NAME为DNS服务器的snmp字符串 ,IP_ADDR为DNS服务器的ip地址),如果有数据显示,说明DNS服务器端的配置成功,需要说明的是这里采用的perl的版本是5.8.*,net-snmp的版本是5.2.*,在FREEBSD6和solaris9上安装测试均没有问题。
接下来在cacti端做一些简单的导入配置,首先将下载文件包 snmp目录下的bind9-stats-snmp.xml文件拷贝到cacti目录下的/resource/snmp_queries内。在浏览器中打开cacti界面,选择Console,点击Import Templates,导入cacti_data_query_bind_9_statistics_snmp.xml文件,保存,即完成操作。
现在需要做的是将DNS服务器加入到cacti监控中。主菜单下点击New Graphs,选择点击Create New Host,在新界面中输入DNS服务器的名称、ip地址、snmp字符串等。如果DNS服务器系统中的区域较多的话,SNMP Timeout这一项的数值设置长一点。点击create键后出现新的界面,在页面的最下端的Add Data Query中选择BIND 9 Statistics(SNMP),选中后点击add。最后点击界面右上角的Create Graphs for this Host。
进入下一步的操作,进入该界面后可以选择需要监控的部分,通常情况下只需要监控总的查询量和部分关键的本地区域,选取太多也将加重系统负载。选取完成以后点击界面右下角的create便完成了全部操作。耐心等待一段时间后,DNS服务器查询数据图形便会出现。参考下图,管理员不但可以很直观的读取到当前DNS服务器每5分钟的查询量,也可以查询历史记录。以昨天中午12时为例:5分钟总成功查询量为3万次。管理员不但可以查询天为单位的图形数据还可以查询周、月、年的图形数据。
通常企业级的应用情况下,利用snmp对DNS服务器进行图形化监控管理无疑是最方便、有效的方法,DNS服务器管理人员不妨使用一下,可以给日常工作带来许多方便。

文章如转载,请注明转载自【网管小王的独立博客】:http://www.5iadmin.com/