目录
一.Zabbix介绍
- zabbix是由Alexei Vladishev开发的一种网络监视、管理系统,基于Server-Client架构。可以用于监视各种网络服务、服务器和网络机器等状态。
- zabbix是一个基于web页面的提供分布式系统监视以及网络监视功能的企业的开源解决方案。
- zabbix能够监视各种网络参数,保证服务器系统的安全运营;并且提供柔软的通知机制让系统管理员快速定位/解决存在的各种问题.
- zabbix的官网:https://www.zabbix.com/
二.Zabbix、Cacti、nagios比较
- cacti官网:https://www.cacti.net/
- cacti是一款数据采集,数据存储,外加web界面展示的工具,它负责阈值范围内的实时变化,但是对超过阈值的告警功能很薄弱。
优点:实时监控数据变化,以web页面的方式呈现,更直接
缺点:告警不及时
-
nagios官网:https://www.nagios.org/
-
nagios是一款功能很强大的工具,他不关心阈值范围内的变化,只关心状态变化(超过阈值),然后报警。报警方式通过邮件、短信等。
优点:告警反映迅速
缺点:监控主机数量有限,承载低
-
zabbix=cacti + nagios
优点:基于两款优点于一身并且更加强大,实现了企业分布式监控。
缺点:2.2版本带宽占用大但是升级到2.4版本后节省了带宽资源,其它再无发现,目前zabbix以更新到4.4
zabbix的主要功能:
监控cpu负荷、内存使用、磁盘使用、网络状况、端口监视、日志监视
三.Zabbix架构中的组件
- zabbix由zabbix server(c语言开发)、可选组件zabbix agent(c语言开发)、zabbix-web(用于实现zabbix设定和展示,PHP开发)、zabbix-proxy(分布式监控环境中的专用组件)、zabbix Database(提供数据存储供,专用于存储配置信息,以及采集到的数据)
- zabbix server可以通过SNMP、zabbix agent、ping、端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux、Solaris、Free BSD、Open BSD。
- zabbix server可以单独监视远程服务器的服务状态;同时也可以与zabbix agent配合使用,可以轮询
- zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或者与操作系统有管的内存、cpu等信息收集。zabbix agent可以运行在Linux、windows、OS X等系统上。
- zabbix agent主动接受监视数据(trapping方式,同时还可被动接受zabbix agent发送的数据)
zabbix的主要特点:安装配置简单、支持多语言(包括中文)、免费开源、自动发现服务器与网络设备、分布式监视以及web集中管理功能、可以无agent监视、用户安全认证和柔软的授权方式、通过web界面设置或者查看监视结果、email等通知功能
-
zabbix-web中主要有5个主菜单栏:Monting、Lnventory、reports、configuration、adminstration每个主菜单栏下面又有多个二级菜单。
monitong:主要是对监控对象的一些相关展示,比如说对应用的展示。
Inventory:类似于公司里的资产管理,比如一个硬件设备,这里可能会标识设备的名称,操作系统,mac地址,资产编号等
Reports:这里主要展示了zabbix服务的状态,比如主机数,报警数。还有就是展示了一些设备的可用性报表等相关信息。
Configuration:这里主要用来对系统的配置,比如创建主机,创建报警,创建流量图片等相关应用基本应用的配置主要通过这里来实现。
Adminstration:这里也是用了对系统进行配置,可configuration相比,这里的配置主要实现对zabbix本身的一些相关配置工具,比如登录zabbix的用户的创建等工作主要通过这里配置。
四.Zabbix的监控流程
zabbix监控系统的运行流程
- agentd需要安装到被监控的主机上,它负责定期收集各项数据,并且发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix根据数据在前端进行展示和绘图。
- 这里agentd收集数据分为主动和被动两种模式
主动:agent请求server获取主动的监控项列表,并且主动将监控内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据库,agent返回数据。
主动监测通信过程如下
- zabbix首先向ServerActive配置的IP请求获取Active items,获取并且提交active tiems数据值server或者proxy。
- zabbix多久获取一次active items呢?它会根据配置文件中refreshActivechecks的频率,如果获取失败,那么将在60秒之后重试。
- 获取ACTIVE ITEMS列表
1.agent打开TCP连接(主动检测变成agent打开)
2.agent请求ittems检测列表
3.server返回ittems列表
4.agent处理响应
5.关闭TCP连接
6.agent开始收集数据
-
主动检测提交数据过程如下
1.agent建立TCP连接
2.agent提交items列表收集的数据
3.Server处理数据,并且返回相应状态
4.关闭TCP连接
被动监测通信过程如下
- Server打开一个tcp连接
- server发送请求agent.ping\n
- Agent接受到请求并且响应<HEADER><DATALEN>1
- Server 处理接受到的数据1
- 关闭TCP连接
这里,被动模式每次都需要打开一个TCP连接,这样当监控项越来越多时,就会出现server端口性能问题了。
那么实际监控中使用主动还是被动的呢?这里主要涉及两个地方:
1.新建监控项目时,选择的是zabbix代理还是zabbix端点代理程式(主动式),前者是被动模式,后者是主动模式。
2.agnetd配置文件中StartAgents参数的设置,如果为0,表示禁止模式,否则开启。一般建议不要设置为0,因为监控项目很多时,可以部分使用主动,部分使用被动模式。
五.Zabbix常用的监控架构平台
server-agentd模式
- 这个属于最简单的架构,监控机和被监控机直接不经过任何代理,直接由zabbix server和zabbix agentd之间数据交互。适用于网络比较简单,设备比较少的监控环境
server-proxy-agentd模式
- proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存储数据,只是将agentd发来的数据暂时存储,而后再提交给server。该架构经常是和master-node-client架构做比较的架构,一般适用于跨机房、跨网络的中型网络架构监控
master-node-client模式
- 该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境。每个node同时也是一个server端,node下面可以接proxy,也可以直接接client。node有自己的配置文件和数据库,其要做的是将配置信息和监控数据向master同步
六.Zabbix的逻辑架构
- 定义一个template模板,里面包含items、trigger、graphs套用给host或者hostgroups。
- server监控项目items通过zabbix poller进程(可以有多个进程实现并发处理)包括snmp、agent协议收集被监控主机信息。
- 如果阈值超过triggers触发器规定,就是形成一个events事件,然后actions处理动作(包括运行预先定制的脚本,不成功发送email或者SMS)。
- 在服务器升级的时候,提前设置maintence维护模式不对服务器产生告警通知
zabbix的监控范围
硬件监控:zabbix IPMI interface
系统监控:zabbix Agent interface
java监控:zabbix JMX interface
网络设备监控:zabbix SNMP interface
应用服务监控:zabbix agent UserParameter
MySQL数据库监控:percona-monitoring-pldlgins
URL监控:zabbix web监控