九月 24
BIND 9 Statistics for Catci是用来监视bind9的各种统计信息的cacti模板和脚本集合。当前stable版本1.6,已经可以把bind9不同区域的数据分区域收集起来了,看了作者的1.7的计划是分view来收集不同区域的数据,现在离1.6版本的发布已经8个月了,作者还迟迟没有公布1.7版本,这脚本的后继版本估计是黄了,可惜。
不过这东西采集的bind9信息还真是详细,装了cacti之后,如果像我一样有维护bind9服务器的人,实在是应该用一下这个脚本的。
BIND 9 Statistics for Catci的bind9段snmp信息输入工作流程是这样的:
- 执行rndc stats.
- 分析rndc stats的生成结果.
- 把生成的分析结果填到snmp的相关oid节点内.
然后在cacti端的信息采集表现就跟其他的snmp信息采集表现是一样的了:作者已经为此给我们提供了相关的信息采集定义、host 模板,我们只需要按照说明导入cacti就可以工作了。
不过这东西牵扯到了net-snmp的自定义snmp信息,而且我的bind9还是工作在chroot模式,倒是给我带来了不少的麻烦,纪录如下:
- 因为这个脚本对net-snmp的自定义snmp信息添加是通过perl脚本完成的,所以,系统的perl环境一定要仔细检查,特别注意的是net-snmp的perl支持:如果你跟我一样是用rpm安装的net-snmp的话,请记得装上net-snmp-perl包。此外,脚本里面附带的BayourCOM_SNMP.pm记得要拷贝到一个bind9-snmp-stats.pl脚本可以找到的目录里。
- 确定snmpd服务所用的用户帐号是否有权限执行rndc stats、是否有权限读取rndc stats生成的结果文件.在这点上,由于我的bind是工作在chroot模式下,我遇到了大麻烦:
- 先确定snmpd用户能读取/etc/rndc.key,能执行/usr/sbin/rndc
- 让snmpd用户能够读写chroot环境下rndc stats生成的结果文件/var/lib/named/chroot/var/run/named/named.stats。为了达到这个目的,咱修改了named的启动脚本,针对我用的trustix 2.2 bind 9.3.2 版本的diff文件如下:
下载: named.diff
- --- /tmp/init.d.old/named 2006-09-24 14:40:24.000000000 +0800
- +++ /tmp/init.d.new/named 2006-09-24 14:39:40.000000000 +0800
- @@ -94,9 +94,10 @@
- cp /etc/localtime ${JAIL_BASE}/etc/
- # Tightening permissions:
- chown root ${CHROOT_BASE}
- - chmod 700 ${CHROOT_BASE}
- + chmod 755 ${CHROOT_BASE}
- chown ${NAMEDUSER:-named}.${NAMEDGROUP:-named} ${JAIL_BASE}
- - chmod 700 ${JAIL_BASE}
- + chmod 755 ${JAIL_BASE}
- + chmod 777 ${JAIL_BASE}/var/run/named
- # Making time immutable:
- cd ${JAIL_BASE}
- chattr +i etc etc/localtime var
- 然后遇到了个比较莫名其妙的问题:完毕之后,snmpd每次要生成的相关的bind的snmp信息之前,那个named.stats文件(rndc stats的结果文件)必须被删除掉,否则的话,这个脚本的rndc stats执行必定没有返回结果。找了半天rndc的资料,不知道是为什么,不过应该是因为权限的问题,因为如果把snmpd的执行用户换成root,就一切正常了。不过考虑到安全性的问题,还是用snmpd用户来运作snmpd,另外让root每隔个4分钟把那个named.stats删除。先这样吧,看看以后能不能找到标准解决方案了。
为了装这个脚本,前前后后也花费了我差不多半天的时间,还是赶紧把这些关键点纪录下来,省得以后没地方查,是为纪录。