zoukankan      html  css  js  c++  java
  • 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模板—-监控项—-创建监控项

    填写名称、类型、键值,其他默认即可。创建完成后,点保存。

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

    日志监控

    同样在DNS模板中创建日志的监控项。

    这里需要重点说一下监控项中的:键值(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中,正则表达式只对文件名有效,对文件目录无效。
    

    好,配置好监控项后,我们来配置触发器:

    表达式内容说明:如果监控项获取的数据中出现了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[]中的值对应执行脚本的时候就会变成12.。。,
    这个大家可以根据需求在自定义脚本的时候使用。

    在界面配置items:


    这个就非常简单了。

    添加触发器


    最近三次的值都为0,则触发器成立,触发报警。

  • 相关阅读:
    spring boot单元测试之七:用mockmvc模拟session(spring boot 2.4.3)
    spring boot单元测试之六:用mockmvc模拟cookie(spring boot 2.4.3)
    sql join 注意事项
    见路不走,即见因果
    presto sql 经典sql 应用
    别拿你的职业去拔高你个人的规格, 让人轻看
    《遥远的救世主》经典台词
    《卜算子·自嘲》
    天道连续剧 丁元英语录
    shell diff + kettle = mail 预警
  • 原文地址:https://www.cnblogs.com/yangruizeng/p/7251263.html
Copyright © 2011-2022 走看看