zabbix监控DNS服务 2020-06-27 网络 暂无评论 2462 次阅读 为了方便公司内部访问jira、wiki等内网应用服务,我们搭建了DNS服务,为全公司提供域名解析服务,重要性可想而知,因此,有了监控的需求,这里记录下使用zabbix来监控dns的过程。 监控DNS分为三部分 端口监控(53) 日志监控(/var/log/messages中出现named.*fatal) 解析域名监控(脚本定时dig www.baidu.com ) 监控实施: 为了方便迁移,结构清晰,使用创建模板,在模板中定义监控项(Items)、触发器(trigger),然后在主机中链接模板。这样以后再增加或者迁移dns服务,直接套用模板就行了。 端口监控 配置—模板–创建模板—-输入模板名称,然后点保存。 模板创建成功后,开始创建监控项: 配置—模板—DNS模板—-监控项—-创建监控项 ![zabbix-dns-01.png](https://blog.moper.net/usr/uploads/2020/06/1921691457.png) 填写名称、类型、键值,其他默认即可。创建完成后,点保存。 创建监控项,监控项可以去获取数据了。但是想要报警还需要添加触发器(trigger)来触发报警。 配置—-模板—DNS模板—触发器—创建触发器 ![zabbix-dns-02.png](https://blog.moper.net/usr/uploads/2020/06/4118033160.png) 日志监控 同样在DNS模板中创建日志的监控项。 ![zabbix-dns-03.png](https://blog.moper.net/usr/uploads/2020/06/1949400834.png) 这里需要重点说一下监控项中的:键值(key) ``` log[/var/log/messages,named.*fatal,,skip,] ``` zabbix的日志文件监控,它最主要的是监控日志文件中有没有某个字符串的表达式,对应日志轮转与否,zabbix都支持。 在配置Item的时候,类型选择Zabbix agent (active),这里主要需要配置的是键值(Key)。下面是监控日志的两种key——log和logtr。 ``` log[/path/to/some/file,,,,,] logtr[/path/to/some/filename_format,,,,,] ``` regexp:要匹配内容的正则表达式,或者直接写你要检索的内容也可以,例如我想检索带ERROR关键词的记录 ◆ encoding:编码相关,留空即可 ◆ maxlines:一次性最多提交多少行,这个参数覆盖配置文件zabbxi_agentd.conf中的’MaxLinesPerSecond’,我们也可以留空 ◆ mode:默认是all,也可以是skip,skip会跳过老数据 ◆ output:输出给zabbix server的数据。可以是\1、\2一直\9,\1表示第一个正则表达式匹配出得内容,\2表示第二个正则表达式匹配错的内容。 logtr和log唯一的区别是:logtr支持文件名的正则表达式,如日志名位www.a.com_2015-01-01.log、www.a.com_2015-01-02.log等等,log监控不了,这时候就需要用logtr了。 监控原理及注意事项 1、Zabbix Server和Zabbix Agent会追踪日志文件的大小和最后修改时间,并且分别记录在字节计数器和最新的时间计数器中。 2、Agent会从上次读取日志的地方开始读取日志。 3、字节计数器和最新时间计数器的数据会被记录在Zabbix数据库,并且发送给Agent,这样能够保证Agent从上次停止的地方开始读取日志。 4、当日志文件大小小于字节计数器中的数字时,字节计数器会变为0,从头开始读取文件。 5、所有符合配置的文件,都会被监控。 6、一个目录下的多个文件如果修改时间相同,会按照字母顺序来读取。 7、到每个Update interval的时间时,Agent会检查一次目录下的文件。 8、Zabbix Agent每秒发送日志量,有一个日志行数上限,防止网络和CPU负载过高,这个数字在zabbix_agentd.conf中的MaxLinePerSecond。 9、在logtr中,正则表达式只对文件名有效,对文件目录无效。 好,配置好监控项后,我们来配置触发器: ![zabbix-dns-04.png](https://blog.moper.net/usr/uploads/2020/06/1430669707.png) 表达式内容说明:如果监控项获取的数据中出现了fatal则为1(真),如果60s之内没数据,则为0(假),也就是说只有60s内出现了新数据,并且出现了fatal,这个时候触发器表达式成立,才会触发报警。 域名解析监控(dig) 测试DNS解析域名功能,这个zabbix自带的监控项已经无法实现了。这时需要我们来自定义监控项。 自定义监控的配置过程如下: 编写监控脚本,获取监控项的具体值 在zabbix_agentd.conf文件中定义UserParameter 在界面配置item 添加触发器(Trigger) 编写监控脚本 ``` #!/bin/bash URL=`dig www.baidu.com +time=3 +short @10.0.254.113|head -1` # 以10.0.254.113为dns服务器,解析www.baidu.com 超时3s。 if [ $"$URL"x = 'www.a.shifen.com.'x ] then echo 1 else echo 0 fi ``` 判断得到的域名是不是百度的cname,这里要注意后边都有个x,这个是重点,如果dig命令得到的结果为空的话,就是x = 'www.a.shifen.com.x',但如果没有这个x,那么' ' = 'www.a.shifen.com.x' 这样会报错的。 在zabbix_agent.conf.d目录下创建一个zabbix_checkdns.conf的文件 ``` cat /home/ddd/zabbix_agent/etc/zabbix_agentd.conf.d/zabbix_dns.conf UserParameter=chk.dns[*],/bin/bash /home/ddd/zabbix_agent/etc/scripts/zabbix_checkdns.sh ``` chk.dns就是在添加监控项(items)时的键值(key),当zabbix配置chk.dns这个key的时候,就会执行后边配置的命令:/bin/bash /home/ddd/zabbix_agent/etc/scripts/zabbix_checkdns.sh, 而chk.dns[]表示[]可以接受参数,比如chk.dns[www.baidu.com,192.168.30.1],这时候执行脚本的时候就变成了` /bin/bash /home/ddd/zabbix_agent/etc/scripts/zabbix_checkdns.sh www.baidu.com 192.168.30.1,chk.dns[]`中的值对应执行脚本的时候就会变成,1,2.。。, 这个大家可以根据需求在自定义脚本的时候使用。 在界面配置items: ![zabbix-dns-05.png](https://blog.moper.net/usr/uploads/2020/06/811019194.png) 这个就非常简单了。 添加触发器 ![zabbix-dns-06.png](https://blog.moper.net/usr/uploads/2020/06/832662730.png) 最近三次的值都为0,则触发器成立,触发报警。 转自https://www.cnblogs.com/yangruizeng/p/7251263.html 标签: dns, zabbix 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。