前文我们了解了zabbix的宏,自定义item和模板的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14013331.html;今天我们来了解下zabbix的网络发现功能;

  1、为什么要使用网络发现功能呢?

  我们知道使用zabbix监控系统去监控一个集群,通常我们会使用各种信道去对应server上采集数据,这意味着每台server上必须能够支持zabbix上定义的信道去采集数据;比如我们使用zabbix agent这种信道去server上采集数据,那么对应server上就必须安装好zabbix agent;其次配置zabbix agent告诉它zabbix server是谁;然后我们才可以在zabbix 的web界面上配置添加对应主机使用zabbix agent信道去采集数据;在集群环境节点和server数量不多的情况下我们手动添加也到不是什么难事,试想一下,如果我们监控的server有20台,甚至更多,这意味着我们手动去添加主机,然后链接模板需要重复做20次,甚至更多;很显然这不是我们想要的方式;那有没有什么方式能够帮助我们去自动添加主机,并链接模板呢?这就是我们使用zabbix网络发现功能的目的;简单说zabbix的网络发现功能,它能帮助我们在我们指定的网段内扫描主机,当扫描到对应网段有符合我们定义的扫描规则时,它就会触发一个discovery事件,而对应action监听到对应的事件发生后,就能触发action的操作,比如把某主机添加到zabbix,然后链接指定的模板等等;这样一来我们要想去监控一个集群,我们只需要定义怎么去发现主机的规则和监听对应discovery事件的action,就能够完成一个集群的快速监控;

  2、zabbix网络发现它是怎么去发现主机的呢?

  zabbix的网络发现功能是通过扫描我们指定的网段,当然扫描肯定是有判断条件的,不是说在指定网段里的所有主机都能满足;那它是怎么判断的呢?我们知道要想被zabbix所监控,必须满足对应server支持指定的信道和zabbix server进行通信,将指定的指标数据响应或发送给zabbix server;如果说zabbix使用一种机制给指定的主机发送指定信道的某种请求,如果对应server能够正常响应,那么我们就可以理解为对应server支持该信道和zabbix server进行通信,这样一来zabbix server 就可以把对应的server添加进来进行监控;简单讲zabbix discovery功能是通过zabbix server 向指定网段中的所有主机发送某种信道的某种请求,如果对应server能够正常响应,那么zabbix server 就认为对应server满足加入zabbix监控系统,此时zabbix server 就会触发一个discovery事件;对于该事件发生后该采取什么措施,这取决于我们定义的action的操作;

  示例:配置使用zabbix 网络发现功能发现指定网段内的主机

  创建网络发现规则

  提示:在zabbix web 界面的configuration--->discovery菜单找到create discovery rule,点击进入创建discovery rule界面;

  提示:以上配置表示在192.168.0.44-50这个网段进行ICMP ping操作,如果有主机响应,则触发discovery 事件;当然checks可以配置多个,比如zabbix agent,snmp,ssh ,telnet,ftp等等;使用zabbix agent去check,如果对应主机能够给予响应,则表示对应主机上安装的有zabbix agent,如果使用snmp去check,如果对应主机能够响应,这表示对应主机支持使用snmp信道去采集数据;总之使用什么方式去扫描,就意味着对应主机上必须支持对应方式和zabbix server通信;zabbix server才会触发一个discovery事件;意思就是根据某种check去扫描指定网段内的主机发现了某某主机支持这种方式;至于后续该怎么处理这个事件,则由对应的action来处理就好;

  验证:看看对应网段是否有符合icmp ping的主机呢?

  提示:在monitoring--->discovery菜单下选择我们刚才定义的test_discovery规则,然后点击apply,就能够查看对应符合test_discovery规则的主机;从上面结果可以看到符合test_discovery规则的主机有4台;

  更改test_discovery规则使用zabbix agent方式来扫描指定网段的主机

  提示:以上配置表示使用zabbix agent的方式来扫描指定网段主机;向指定网段内的主机发送请求zabbix 内建的key system.uname,如果对应主机能够给予响应,则zabbix server 就触发discovery事件;

  现在看看test_discovery 是否能够发现主机呢?

  提示:现在看就只有node04被发现了,其他的主机都没有发现,这说明node04上安装的有zabbix agent ;同理我们在node05上如果安装上zabbix agent,是不是node05也会被发现呢?

  复制zabbix.repo文件到node05

[root@node03 ~]# scp /etc/yum.repos.d/zabbix.repo node05:/etc/yum.repos.d/
zabbix.repo 100% 242 205.5KB/s 00:00
[root@node03 ~]#

  在node05上安装zabbix agent

[root@node05 ~]# yum install -y zabbix-agent

  启动zabbix-agent

[root@node05 ~]# systemctl start zabbix-agent.service
[root@node05 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::10050 :::*
[root@node05 ~]#

  再次查看zabbix server是否发现了node05呢?

  提示:很显然没有发现node05;

  手动在zabbix server上使用zabbix_get命令来获取node05上的system.uname看看是否能够正常获取?

[root@node03 ~]# zabbix_get -s node05.test.org -k 'system.uname'
zabbix_get [1902]: Check access restrictions in Zabbix agent configuration
[root@node03 ~]#

  提示:它这里提示我们检查对应agent的配置;

  在node05上配置zabbix agent,将server指向zabbix server ,然后重启zabbix agent

[root@node05 ~]# grep ^Server /etc/zabbix/zabbix_agentd.conf
Server=192.168.0.43
ServerActive=127.0.0.1
[root@node05 ~]# systemctl restart zabbix-agent.service
[root@node05 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::10050 :::*
[root@node05 ~]#

  看看在node3上使用zabbix_get命令获取node05上的system.uname是否能够获取到数据?

[root@node03 ~]# zabbix_get -s node05.test.org -k 'system.uname'
Linux node05.test.org 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64
[root@node03 ~]#

  提示:现在能够获取到数据了;

  再次查看node05是否被发现了呢?

  提示:可以看到node05已经被发现了;从上面实验可以总结,使用zabbix agent 来check,对应主机必须要安装zabbix agent并配置其Server的地址才能够被发现;

  配置zabbix action监听discovery事件

  提示:在configuration--->actions页面选择discovery事件源,然后点击create action进入新建discovery事件源的action;

  填写action名称,以及触发条件

  提示:以上添加了3个条件,第一个条件是discovery check必须是test_discovery:zabbix agent "system.uname";第二个是发现的主机状态必须是up,第三个条件是对应主机响应中包含Linux字串;通过上述三个条件,我们发现的主机一定是一个linux主机;那么接下来我们就可以将发现的主机添加到host,然后链接针对监控Linux主机的模板进行监控;

  添加执行的操作

  提示:以上添加了两个操作,第一个操作上将对应主机添加为zabbix监控的主机;第二个操作上将对应主机链接至template os linux模板;当然如果还有其他操作可以继续添加;这里的操作有很多,比如发邮件,远程执行命令,添加/移除主机,添加/移除主机到某个主机组,链接/取消链接某个模板等等操作;

  验证:查看是否将node05添加至host并链接了Template OS Linux模板呢?

  提示:可以看到node05已经加入到zabbix 的hosts中,并链接了Template OS Linux 模板;同时我们也可以发现node04也链接了Template OS Linux;这说明只要符合dicovery事件监听的action都会执行对应action定义的操作;

  以上就是zabbix的网络发现功能的使用演示,在大规模网络环境中使用,需要注意扫描时间间隔,如果网段特别大,此时如果扫描的间隔时间密集可能造成网络拥堵,对集群网络有一定的影响;其次选择zabbix agent 做判断条件,需要在各个server上安装zabbix agent 并配置server指向zabbix server ;这个安装和配置可以使用自动化运维工具去搞,比如ansible ,puppet等等;当然也可以提前规划好,在装系统时直接安装并启动好;

分布式监控系统之Zabbix网络发现的更多相关文章

  1. Zabbix分布式监控系统实践

    https://www.zabbix.com/wiki/howto/install/Ubuntu/ubuntuinstall 环境介绍OS: Ubuntu 10.10 Server 64-bitSer ...

  2. 分布式监控系统Zabbix-3.0.3-完整安装记录(1)

    分布式监控系统Zabbix-3.0.3的安装记录 环境说明zabbix-server:192.168.1.30     #zabbix的服务端(若要监控本机,则需要配置本机的Zabbix agent, ...

  3. 分布式监控系统Zabbix-3.0.3-新版微信报警(企业微信取代企业号)

    一般来说,Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是现在越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信息推送到接收人 ...

  4. 分布式监控系统Zabbix-3.0.3-完整安装记录(0)

    一.Linux下开源监控系统简单介绍1)cacti:存储数据能力强,报警性能差2)nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中.比如,连续采样数据存 ...

  5. 开源监控系统中 Zabbix 和 Nagios 哪个更好?

    监控平台的话,各有优劣,但基本都可以满足需求.等达到一定监控指标后,发现,最困难的是监控项目的管理. CMDB中小规模(服务器<=1k):Zabbix大规模(1k>=服务器<=10k ...

  6. 分布式监控系统Zabbix-3.0.3-完整安装记录(7)-使用percona监控MySQL

    前面已经介绍了分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳.要想更加仔细的监控Mysql,业内同学们都会选择 ...

  7. Python之路,Day20 - 分布式监控系统开发

    Python之路,Day20 - 分布式监控系统开发   本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个 ...

  8. 分布式监控系统Zabbix3.2给异常添加邮件报警

    在前一篇 分布式监控系统Zabbix3.2跳坑指南 中已安装好服务端和客户端,此处客户端是被监控的服务器,可能有上百台服务器.监控的目的一个是可以查看历史状态,可以对比零晨和工作区间数据的对比,以便后 ...

  9. 分布式监控系统Zabbix3.2监控数据库的连接数

    在 分布式监控系统Zabbix3.2跳坑指南 和 分布式监控系统Zabbix3.2给异常添加邮件报警 已经介绍了如何安装以及报警.此篇通过介绍监控数据库的3306端口连接数来了解如何监控其它端口和配置 ...

  10. 分布式监控系统Zabbix3.2对数据库的连接数预警

    在前篇分布式监控系统Zabbix3.2监控数据库的连接数 中已经对数据库的端口3306进行了监控,可以看到数据库的连接数历史变化有高有低,那如果达到了数据库连接数的阀值是不是主动通知给运维人员去检查问 ...

随机推荐

  1. 关于MVC中Start.cs文件的作用

    当我们建立默认的 .NET Framework4.5.2框架下的Web  MVC 应用程序后,调试过程中我发现在程序启动页面加载完成会执行一段代码,这段代码让人有点摸不着头脑,因为之前完全没见过,调试 ...

  2. HTML5画布实现方法:

    我们可以在HTML中使用属性width和height来定义Canvas.但是实现Canvas的相关功能主要还依赖于Javascript实现,即HTML5 Canvas API.我们使用javascri ...

  3. (转)深入理解flash重绘

    深入理解Flash Player重绘 Flash Player 会以SWF内容的帧频速度来刷新需要变化的内容,而这个刷新的过程,我们通常称为“重绘(redraw)”,相信即便是初级的菜鸟也知道,只要使 ...

  4. 团队项目作业:利用NABCD模型进行竞争性需求分析

    NABC正是这样的一套框架,当你试图提出一项崭新的提案之际,它能够提供四个思维基点,令你的商业策划具备天马行空的基础. 具体来说,NABC是四个关键词的首字母缩写- Need(需求)-现在市场上未被满 ...

  5. [转]Android dex分包方案

    转载自:https://m.oschina.net/blog/308583 当一个app的功能越来越复杂,代码量越来越多,也许有一天便会突然遇到下列现象: 1. 生成的apk在2.3以前的机器无法安装 ...

  6. 用CSS border相关属性画三角形

    效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2l3aV9jb2Rlcg==/font/5a6L5L2T/fontsize/400/fill/I0J ...

  7. java生成字符串md5函数类(javaSE)

    //实现生成MD5值 import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.B ...

  8. ui原则

    http://www.niushe.com/news/show-3683.html 设计师Joshua Porter发表了一篇文章——<Principles of User Interface ...

  9. AnimatorController动画融合树

    通过Unity动画状态机,能帮我们轻松处理转换各个动画片断,达到想要的效果,但是如果仅仅是一个个动画的硬生生的切换,那么看起来就非常突然,而不真实了,在质量要求比较高的游戏中,特别是动作游戏,我们就不 ...

  10. MCDownloader(iOS下载器)说明书

    示例 前言 很多iOS应用中都需要下载数据,并对这些下载的过程和结果进行管理,因此我才有了写这个MCDownloader的想法.在IOS 文件下载器-MCDownloadManager这篇文章中,我使 ...