zabbix监控DNS服务

为了方便公司内部访问jira、wiki等内网应用服务,我们搭建了DNS服务,为全公司提供域名解析服务,重要性可想而知,因此,有了监控的需求,这里记录下使用zabbix来监控dns的过程。

监控DNS分为三部分

    1. 端口监控(53)
    1. 日志监控(/var/log/messages中出现named.*fatal)
    1. 解析域名监控(脚本定时dig www.baidu.com)

监控实施:

为了方便迁移,结构清晰,使用创建模板,在模板中定义监控项(Items)、触发器(trigger),然后在主机中链接模板。这样以后再增加或者迁移dns服务,直接套用模板就行了。

端口监控

配置—模板–创建模板—-输入模板名称,然后点保存。
模板创建成功后,开始创建监控项:
配置—模板—DNS模板—-监控项—-创建监控项
867091-20170728165931758-1283175388.png
填写名称、类型、键值,其他默认即可。创建完成后,点保存。

创建监控项,监控项可以去获取数据了。但是想要报警还需要添加触发器(trigger)来触发报警。
配置—-模板—DNS模板—触发器—创建触发器
867091-20170728165934758-991127255.png

日志监控

同样在DNS模板中创建日志的监控项。
867091-20170728165935915-1550839044.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中,正则表达式只对文件名有效,对文件目录无效。

好,配置好监控项后,我们来配置触发器:
867091-20170728165937149-322675247.png

表达式内容说明:如果监控项获取的数据中出现了fatal则为1(真),如果60s之内没数据,则为0(假),也就是说只有60s内出现了新数据,并且出现了fatal,这个时候触发器表达式成立,才会触发报警。

域名解析监控(dig)

测试DNS解析域名功能,这个zabbix自带的监控项已经无法实现了。这时需要我们来自定义监控项。
自定义监控的配置过程如下:

  1. 编写监控脚本,获取监控项的具体值
  2. 在zabbix_agentd.conf文件中定义UserParameter
  3. 在界面配置item
    4.添加触发器(Trigger)

编写监控脚本

 
 
  1. #!/bin/bash
  2. URL=`dig www.baidu.com +time=3 +short @10.0.254.113|head -1`
  3. # 以10.0.254.113为dns服务器,解析www.baidu.com 超时3s。
  4. if [ $"$URL"x = 'www.a.shifen.com.'x ]
  5. then
  6. echo 1
  7. else
  8. echo 0
  9. fi

判断得到的域名是不是百度的cname,这里要注意后边都有个x,这个是重点,如果dig命令得到的结果为空的话,就是x = 'www.a.shifen.com.x',但如果没有这个x,那么' ' = 'www.a.shifen.com.x' 这样会报错的。

在zabbix_agent.conf.d目录下创建一个zabbix_checkdns.conf的文件

 
 
  1. cat /home/ddd/zabbix_agent/etc/zabbix_agentd.conf.d/zabbix_dns.conf
  2. 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:

867091-20170728165938243-276462899.png
这个就非常简单了。

添加触发器

867091-20170728165939665-66676582.png
最近三次的值都为0,则触发器成立,触发报警。

转载于:https://www.cnblogs.com/yangruizeng/p/7251263.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值