分布式监控系统之Zabbix网络发现
前文我们了解了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网络发现的更多相关文章
- 分布式监控系统之Zabbix基础
1.为什么要使用监控系统? 我们知道一个系统不管怎么讲它都会出故障,我们为了保证线上业务的最大化的可用性,通常我们要给关键业务做高可用:做高可用的目的是为了让故障发生时,能够有一个备用的解决方案,将故 ...
- 分布式监控系统之Zabbix基础使用
前文我们了解了分布式监控系统zabbix的相关组件的作用和zabbix的部署,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13997582.html:今天我们 ...
- 分布式监控系统之Zabbix主动、被动及web监控
前文我们了解了zabbix的网络发现功能,以及结合action实现自动发现主机并将主机添加到zabbix hosts中,链接指定模板进行监控:回顾请参考https://www.cnblogs.com/ ...
- 分布式监控系统之Zabbix 使用SNMP、JMX信道采集数据
前文我们了解了zabbix的被动.主动以及web监控相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14024212.html:今天我们来了解下zabb ...
- 分布式监控系统之Zabbix宏、模板和自定义item
前文我们聊了下zabbix的基础使用,包括主机的添加.监控项.触发器.action以及告警通知的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/140073 ...
- 分布式监控系统之Zabbix proxy
前文我们了解了zabbix 使用snmp和jmx信道采集数据的相关使用配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14029864.html:今天我们来 ...
- Zabbix分布式监控系统实践
https://www.zabbix.com/wiki/howto/install/Ubuntu/ubuntuinstall 环境介绍OS: Ubuntu 10.10 Server 64-bitSer ...
- 分布式监控系统Zabbix-3.0.3-完整安装记录(1)
分布式监控系统Zabbix-3.0.3的安装记录 环境说明zabbix-server:192.168.1.30 #zabbix的服务端(若要监控本机,则需要配置本机的Zabbix agent, ...
- 分布式监控系统Zabbix-3.0.3-新版微信报警(企业微信取代企业号)
一般来说,Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是现在越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信息推送到接收人 ...
随机推荐
- Linux命令的内部命令执行
一个命令可能既是内部命令也是外部命令 因为内部命令优先级高,先执行内部命令 [04:21:44 root@C8[ ~]#type -a echo echo is a shell builtin ech ...
- Vue内容
vue中的过滤器 moeths点击 过滤器的含义 过滤器就是把原有的数据过一遍 放到页面中 不会改变原有的数据 只是在原有的数据上增加新的数据
- OpenCV计算机视觉学习(8)——图像轮廓处理(轮廓绘制,轮廓检索,轮廓填充,轮廓近似)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1, ...
- Java nio Server端示例
public class ServerNio { public static void main(String[] args) throws IOException, InterruptedExcep ...
- 基于Python与命令行人脸识别项目(系列一)
Face Recognition 人脸识别 摘要:本项目face_recognition是一个强大.简单.易上手的人脸识别开源项目,并且配备了完整的开发文档和应用案例,方便大家使用.对于本项目可以使用 ...
- 常用的实现Javaweb页面跳转的方式
我们有两大种方式来实现页面跳转:1.JS(javascript):2.jsp跳转 先说jsp(金j三s胖p):1.转发:request.getRequestDispatcher("1.jsp ...
- js 小数点失精度
解决方法思路:将小数化成整数后再作运算.具体代码如下: /*** 加法运算,避免数据相加小数点后产生多位数和计算精度损失.** @param num1加数1 | num2加数2*/function ...
- ansible-hoc命令行
ansible一种开源的自动化工具 ansible: hoc命令行: 是一款开源的自动化运维工具 python paramiko #模拟ssh协议批量管理主机 jinja2 #模板语言,主要用来传递变 ...
- python引用方法赋值问题探究
python脚本编写中,经常会遇到引用一个模块的方法的场景.引用的方法里到底赋不赋值曾经困扰了我好久. 最近利用python写了一个接口自动化测试脚本,在查阅观看多篇博文和视频后解决了封装方法引用的问 ...
- 【DeepLearning】基本概念:卷积、池化、Backpropagation
终于有了2个月的空闲时间,给自己消化沉淀,希望别有太多的杂事打扰.在很多课程中,我都学过卷积.池化.dropout等基本内容,但目前在脑海中还都是零散的概念,缺乏整体性框架,本系列博客就希望进行一定的 ...