继续介绍zabbix监控企业应用的实例,本次介绍zabbix监控dns,我监控的dns为bind 9.8.2,本dns为公网dns,是为了解决公司内网服务器自动化所需求的dns解析,比如目前的puppet或者salt软件,如果结合dns,管理起来更方便,对于管理服务器来说,如果搬迁机房或者硬件出现故障,如果有dns解析,那么直接切换域名,30s内生效,这样故障恢复的时间就会更短,总之有dns做解析的好处多多,这里就不多介绍,如何的安装可以参考我的文章http://dl528888.blog.51cto.com/blog/2382721/1249311(centos 6.2安装bind 9.8.2 master、slave与自动修改后更新)

一、客户端操作

1.登陆dns部署的服务器,安装zabbix客户端,然后客户端的配置文件里,比如我的是/usr/loca/zabbix/conf/zabbix_agentd.conf里添加

UserParameter=check_dns[*],/usr/bin/sudo/usr/local/zabbix/bin/zabbix_monitor_dns.sh $1

然后在cd /usr/local/zabbix/bin/

添加一个zabbix_monitor_dns.sh文件,内容为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/bin/bash
named_stats='/tmp/named_stats.txt'
###++ Incoming Requests ++
Incoming_QUERY=`awk '/QUERY/{print $1}' $named_stats`
Incoming_RESERVED9=`awk '/RESERVED9/{print $1}' $named_stats`
###++ Incoming Queries ++
Incoming_A=`grep A $named_stats |awk 'NR==1{print $1}'`
Incoming_SOA=`grep SOA $named_stats |awk 'NR==1{print $1}'`
Incoming_PTR=`grep PTR $named_stats |awk 'NR==1{print $1}'`
Incoming_MX=`grep MX $named_stats |awk 'NR==1{print $1}'`
Incoming_TXT=`grep TXT $named_stats |awk 'NR==1{print $1}'`
Incoming_AAAA=`grep AAAA $named_stats |awk 'NR==1{print $1}'`
Incoming_A6=`grep A6 $named_stats |awk 'NR==1{print $1}'`
Incoming_IXFR=`grep IXFR $named_stats |awk 'NR==1{print $1}'`
Incoming_ANY=`grep ANY $named_stats |awk 'NR==1{print $1}'`
###++ Outgoing Queries ++
Outgoing_A=`grep  "\<A\>" $named_stats |awk 'NR==2{print $1}'`
Outgoing_NS=`grep NS $named_stats |awk 'NR==1{print $1}'`
Outgoing_PTR=`grep PTR $named_stats |awk 'NR==2{print $1}'`
#Outgoing_AAAA=`grep NS $named_stats |awk 'NR==2{print $1}'`
Outgoing_DNSKEY=`grep DNSKEY $named_stats |awk 'NR==1{print $1}'`
Outgoing_ANY=`grep ANY $named_stats |awk 'NR==2{print $1}'`
Outgoing_DLV=`grep DLV $named_stats |awk 'NR==2{print $1}'`
###++ Name Server Statistics ++
Statistics_IPv4_requests=`grep "IPv4 requests received" $named_stats |awk 'NR==1{print $1}'`
Statistics_requests_received=`grep "requests with EDNS(0) received" $named_stats |awk 'NR==1{print $1}'`
Statistics_TCP_requests=`grep "TCP requests received" $named_stats |awk 'NR==1{print $1}'`
Statistics_queries_rejected=`grep "recursive queries rejected" $named_stats |awk 'NR==1{print $1}'`
Statistics_responses_sent=`grep "responses sent" $named_stats |awk 'NR==1{print $1}'`
Statistics_EDNS_sent=`grep "responses with EDNS(0) sent" $named_stats |awk 'NR==1{print $1}'`
Statistics_successful_answer=`grep "queries resulted in successful answer" $named_stats |awk 'NR==1{print $1}'`
Statistics_authoritative_answer=`grep "queries resulted in authoritative answer" $named_stats |awk 'NR==1{print $1}'`
Statistics_non_authoritative_answer=`grep "queries resulted in non authoritative answer" $named_stats |awk 'NR==1{print $1}'`
Statistics_nxrrset=`grep "queries resulted in nxrrset" $named_stats |awk 'NR==1{print $1}'`
Statistics_SERVFAIL=`grep "queries resulted in SERVFAIL" $named_stats |awk 'NR==1{print $1}'`
Statistics_NXDOMAIN=`grep "queries resulted in NXDOMAIN" $named_stats |awk 'NR==1{print $1}'`
Statistics_recursion=`grep "queries resulted in recursion" $named_stats |awk 'NR==1{print $1}'`
Statistics_received=`grep "queries resulted in received" $named_stats |awk 'NR==1{print $1}'`
Statistics_dropped=`grep "queries resulted in dropped" $named_stats |awk 'NR==1{print $1}'`
###++ Resolver Statistics ++
Resolver_sent=`grep "IPv4 queries sent" $named_stats |awk 'NR==1{print $1}'`
Resolver_received=`grep "IPv4 responses received" $named_stats |awk 'NR==1{print $1}'`
#Resolver_NXDOMAIN_received=`grep "" $named_stats |awk 'NR==1{print $1}'`
#Resolver_responses_received=`sed -n '49p' $named_stats |sed 's/^[ \t]*//g'|cut -d ' ' -f 1`
#Resolver_delegations_received=`sed -n '50p' $named_stats |sed 's/^[ \t]*//g'|cut -d ' ' -f 1`
Resolver_query_retries=`grep "query retries" $named_stats |awk 'NR==1{print $1}'`
Resolver_query_timeouts=`grep "query timeouts" $named_stats |awk 'NR==1{print $1}'`
Resolver_fetches=`grep "IPv4 NS address fetches" $named_stats |awk 'NR==1{print $1}'`
#Resolver_fetch_failed=`sed -n '54p' $named_stats |sed 's/^[ \t]*//g'|cut -d ' ' -f 1`
Resolver_validation_attempted=`grep "DNSSEC validation attempted" $named_stats |awk 'NR==1{print $1}'`
Resolver_validation_succeeded=`grep "DNSSEC validation succeeded" $named_stats |awk 'NR==1{print $1}'`
Resolver_NX_validation_succeeded=`grep "DNSSEC NX validation succeeded" $named_stats |awk 'NR==1{print $1}'`
Resolver_RTT_10ms=`grep "queries with RTT < 10ms" $named_stats |awk 'NR==1{print $1}'`
Resolver_RTT_100ms=`grep "queries with RTT 10-100ms" $named_stats |awk 'NR==1{print $1}'`
Resolver_RTT_500ms=`grep "queries with RTT 100-500ms" $named_stats |awk 'NR==1{print $1}'`
Resolver_RTT_800ms=`grep "queries with RTT 500-800ms" $named_stats |awk 'NR==1{print $1}'`
Resolver_RTT_1600ms=`grep "queries with RTT 800-1600ms" $named_stats |awk 'NR==1{print $1}'`
#Resolver_RTT_gt_1600ms=`sed -n '63p' $named_stats |sed 's/^[ \t]*//g'|cut -d ' ' -f 1`
###++ Cache DB RRsets ++
Cache_A=`grep  "\<A\>" $named_stats |awk 'NR==3{print $1}'`
Cache_NS=`grep  "\<NS\>" $named_stats |awk 'NR==3{print $1}'`
#Cache_CNAME=`sed -n '69p' $named_stats |sed 's/^[ \t]*//g'|cut -d ' ' -f 1`
#Cache_SOA=`sed -n '70p' $named_stats |sed 's/^[ \t]*//g'|cut -d ' ' -f 1`
#Cache_PTR=`sed -n '71p' $named_stats |sed 's/^[ \t]*//g'|cut -d ' ' -f 1`
Cache_AAAA=`grep  "\<AAAA\>" $named_stats |awk 'NR==2{print $1}'`
Cache_DS=`grep "DS" $named_stats |awk 'NR==1{print $1}'`
Cache_RRSIG=`grep "RRSIG" $named_stats |awk 'NR==1{print $1}'`
Cache_NSEC=`grep "NSEC" $named_stats |awk 'NR==1{print $1}'`
Cache_DNSKEY=`grep "DNSKEY" $named_stats |awk 'NR==2{print $1}'`
#Cache_AAA=`sed -n '77p' $named_stats |sed 's/^[ \t]*//g'|cut -d ' ' -f 1`
Cache_cDLV=`grep "DLV" $named_stats |awk 'NR==2{print $1}'`
#Cache_NXDOMAIN=`sed -n '79p' $named_stats |sed 's/^[ \t]*//g'|cut -d ' ' -f 1`
###++ Socket I/O Statistics ++
Socket_UDP_opened=`grep "UDP/IPv4 sockets opened" $named_stats |awk 'NR==1{print $1}'`
Socket_TCP_opened=`grep "TCP/IPv4 sockets opened" $named_stats |awk 'NR==1{print $1}'`
Socket_UDP_closed=`grep "UDP/IPv4 sockets closed" $named_stats |awk 'NR==1{print $1}'`
Socket_TCP_closed=`grep " TCP/IPv4 sockets closed" $named_stats |awk 'NR==1{print $1}'`
Socket_UDP_established=`grep "UDP/IPv4 connections established" $named_stats |awk 'NR==1{print $1}'`
Socket_TCP_established=`grep "TCP/IPv4 connections accepted" $named_stats |awk 'NR==1{print $1}'`
Socket_TCP_accepted=`grep "TCP/IPv4 recv errors" $named_stats |awk 'NR==1{print $1}'`
eval echo \$$1

这个脚本的内容就是监控bind管理工具rndc stats产生的一个dns状态信息文件named_stats.txt,这个文件的地址是被/etc/named.conf控制,默认是在/var/named/data目录

此脚本给与755权限,zabbix用户与组

1
2
chmod 755 /usr/bin/sudo /usr/local/zabbix/bin/zabbix_monitor_dns.sh
chown zabbix:zabbix /bin/bash /usr/local/zabbix/bin/zabbix_monitor_dns.sh

然后在crontab里使用root用户添加

1
*/1 * * * * /bin/bash /usr/local/zabbix/bin/monitor_dns.sh

/usr/local/zabbix/bin/monitor_dns.sh的内容为

1
2
3
4
5
6
7
#!/bin/bash
named_stats='/var/named/data/named_stats.txt'
if [ -e $named_stats ];then
   rm -rf $named_stats
fi
/usr/sbin/rndc stats >>/dev/null 2>&1
mv $named_stats /tmp/

这个脚本的作用是每1分钟运行一次rndc status命令,然后把named_stats.txt放到tmp目录下,如果在旧目录里已有这个文件就删除(这样做是因为rndc stats运行后会不断的把信息追加到文件里,而不是覆盖,为了统计方便才删除旧文件,在运行命令生成新文件)

给与脚本755权限

重启zabbix agent服务

1
2
ps -ef|grep zabbix|grep -v grep|awk '{print $2}'|xargs kill -9
/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf

二、zabbix服务端操作

1.在zabbix的web界面里连接监控dns模板

在web里选择配置-模板

然后选择导入

然后把之前下载的dns模板。

然后在选择主机加入这个模板即可。

下面是监控的效果图

1、dns的tcp/udp 53端口的监控

2、Incoming Requests

3、Incoming Queries

4、Outgoing Queries

5、Name Server Statistics

6、Resolver Statistics

7、Cache DB RRsets

8、Socket I/O Statistics

目前监控展示方式为增量变化,所以图上显示的值肯定比named_stats.txt里的少。建议还是大家自己根据需要来修改与优化,我这个只是提供一个样例而已,模拟在附件里。

本文出自 “吟—技术交流” 博客,请务必保留此出处http://dl528888.blog.51cto.com/2382721/1341799

转载于:https://www.cnblogs.com/fatt/p/4383269.html

zabbix企业应用之bind dns监控(转)相关推荐

  1. zabbix企业应用之固定端口监控redis

    本文介绍使用固定端口模式监控redis,先展示效果图,满足你的需求在看然后监控 1.Redis key_6379 2.Redis Last_save_time_6379 3.Redis Port st ...

  2. zabbix企业应用之固定端口监控memcache

    本文介绍使用固定端口模式监控memcache,先展示效果图,满足你的需求在看然后监控 1.Memcached 11211: Auth Status 2.Memcached 11211: CMD Sta ...

  3. Zabbix企业应用之服务器硬件信息监控

    之前介绍的Zabbix监控都是属于监控服务方面,现在介绍一下Zabbix监控服务器硬件信息的. 由于我公司服务器都是使用Dell(我公司是手游方面,服务器全部是Dell),服务器型号有r410.r42 ...

  4. Linux Zabbix——企业监控基于钉钉、企业微信实现自动化报警

    zabbix基于企业微信.钉钉群聊机器人实现自动化报警 在企业中,我们使用zabbix去进行监控,需要时刻关注应用服务的运行情况,这就少不了实时报警,而使用即时通讯软件报警相对就很方便. 监控环境准备 ...

  5. 企业网络翻译官——DNS

    一.DNS简介 (一).DNS原理 DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写.主要提供域名解析服务.将IP地址转换为相对应的 ...

  6. windows如何添加本机dns记录_如何规避Sysmon DNS监控

    译文声明 本文是翻译文章,文章原作者xpnsec,文章来源:http://blog.xpnsec.com 原文地址:https://blog.xpnsec.com/evading-sysmon-dns ...

  7. Zabbix 3.2.6通过ODBC监控MySQLOracle

    一.总览 ODBC的监控和在Zabbix前端配置数据库监控条目类型基本一致. ODBC是用C语言编写的用于连接数据库管理系统的一个中间件,最初有微软公司研发,后来发展到各大平台. 有了ODBC的支持, ...

  8. 关于 OneAPM Cloud Test DNS 监控的几个重要问题

    你注意到了吗?OneAPM Cloud Test 已经全面开启支持 DNS 监控了! CT 产品自上线以来一直致力于产品完善,希望能够尽可能全面地满足用户需求,为您提供完美的用户体验.目前 Cloud ...

  9. 【Zabbix】使用dbforbbix 2.2-beta监控Redhat 7.0上的Oracle、Mysql

    前言 zabbix 3.4 + DBforBIX 2.2-beta 监控 Oracle.Mysql 前置条件:已安装 zabbix 3.4 ([Zabbix]yum方式安装zabbix) 前置条件:能 ...

最新文章

  1. thinkphp-查询数据-基本查询
  2. 【Android 插件化】Hook 插件化框架 ( 创建插件应用 | 拷贝插件 APK | 初始化插件包 | 测试插件 DEX 字节码 )
  3. python的表达式3or5_Python 简明教程 --- 5,Python 表达式与运算符
  4. OPENCV-7 学习笔记
  5. opencv 颜色空间转换、颜色追踪
  6. Java订单交易_Java实现获取105发卡平台的订单信息
  7. 解决sql2008附加不了2005的数据库文件的问题
  8. 如何在C中生成随机int?
  9. 【工大SCIRLab】EMNLP 2019 跨语言机器阅读理解
  10. IIS安装及ASPNet开发环境配置
  11. win10user文件夹迁移_Win10转移系统盘用户文件到非系统盘的详细步骤
  12. C UDR 的内存分配
  13. linux的wifi探针源码,运用在公共安全领域的WiFi探针
  14. 颜色所代表的人的性格
  15. 非视距成像:硬件设备总结
  16. 分享 java 基础 + 进阶精简资料(视频 + 源码 + 就业项目 + 面试报装)
  17. 穆迪将收购GCR Ratings多数股权以拓展非洲业务
  18. Visio画出简单的拓扑图
  19. (一)mysql 运维基础篇(Linux云计算从入门到精通)
  20. R语言绘图—多边树状图

热门文章

  1. win32 调试 API 学习总结
  2. table表格细边框
  3. 51单片机学习笔记(清翔版)(21)——ADDA数模转换
  4. 微信客服系统开发SDK使用教程- 拉取当前微信个人号列表请求(立即)
  5. MySQL xtrabackup之--databases 勿手贱
  6. 深入解读Python的unittest并拓展HTMLTestRunner
  7. Sqoop找不到主类 Error: Could not find or load main class org.apache.sqoop.Sqoop
  8. vijos1774:机器翻译
  9. Java Native Interface 二 JNI中对Java基本类型和引用类型的处理
  10. 【leetcode】3 minstack