监控系统资源以及性能的硬件或软件
Zabbix是由前端、服务器、代理端、客户端、Java监控网关几个组件组成
前端主要是由php写的
服务端、代理端、客户端是由C语言写的
Java监控端是由java写的
Zabbix是一个跨平台的软件,可以在windows、linux、unix等操作系统上部署,他是基于GPL开源软件协议的
Windows系统的任务管理程序
Linux中的top、vmstat、iostat等
Zabbix、open-falcon
通过这些监控系统可以了解系统的繁忙程度、是否有异常的进程占用资源
监控硬件中比较常见的是通过传感器获取设备的监控信息
监控系统是为了给用户提供稳定、高效、安全的服务
收集数据、数据展示、告警策略、告警发送、事件管理、报表管理、认证权限
智能监控发展方向、KPI聚类、瓶颈分析、KPI异常检测定位、故障预测、容量预估
监控任何的设备、系统、应用、服务和资源,无论是监控网络、云、服务器还是应用,服务都可以搞定。可以无限扩展,分布式部署,高可用,并且也注重安全
Agent多平台部署
支持SNMP和IPMI
支持无agent监控
自定义监控
支持监控计算和聚合
Web事务监控
(1)Zabbix可以通过agent客户端来收集数据,客户端是支持多平台的
比如windows、linux、unix、openBSD、AIX、solaris、Mac等操作系统都可以安装。
(2)Zabbix客户端占用系统资源很少,可以获取CPU,内存,网卡,磁盘,日志等信息,可以满足绝大多数的服务器设备的监控需求。
(3)Zabbix支持通过SNMP(简单网络管理协议)获取监控数据,通过SNMP不仅可以监控网络设备,也可以监控打印机、储存、UPS,基本上只要联网的设备都可以通过SNMP监控。
(4)Zabbix也支持通过IPMI获取硬件的温度,风扇,硬盘,电源等,(IPMI是智能平台管理接口是一个开放的硬件管理接口标准),通过IPMI不仅可以获取监控数据、也可以管理硬件设备,重启,关机,获取硬件日志等等。
(5)Zabbix自带检测有TCP,ICMP、SSH、Telnet检测方式
(6)Zabbix支持而自定义监控,通过shell、python、ruby、Perl、powershell任何可执行的脚本收集监控数据(如果对监控开关性能要求很高,那可以通过加载监控模块来实现监控,这种方式只支持unix、linux系统)
(7)默认zabbix提供URL监控,可以使用该功能监控线上的业务是否正常,异常响应或者没有匹配的关键字及时告警
图标及监控大屏
网络拓扑图
幻灯片图标
图片展示插件
故障预警
故障规则和恢复规则独立
多个告警规则组合
与历史数据对比分析告警
支持数据波动规则
告警依赖关系
Zabbix支持8种运算符,29个函数可以任意组合使用,完全可以满足我们的告警阈值设置需求。一般监控系统都是监控数据达到设定的阈值才会触发告警操作,zabbix同样支持该设置,但zabbix更注重故障预警,就是故障发生前通知相关负责人或者进行相关操作,这样就可以有效避免故障发生,zabbix主要通过趋势分析来判断数据未来的走势,若趋势异常则触发告警操作,zabbix还支持和历史数据进行对比分析,比如和上周的现在进行数据对比分析,如果有异常则触发告警操作。线上的监控数据不一定是稳定的,很多时候是由波动的,面对这种情况一般是去一段时间的平均值作为告警的阈值,或者一段时间内触发了阈值的次数,虽然上面的办法都可以降低告警的数量,提高有效性,但是它是以告警的及时性来换取。
发送告警信息
自动修复故障
告警升级
自定义告警信息
告警关联
(1)zabbix当设置了告警策略,当触发告警时,zabbix支持多种告警操作。
比如:发送消息通知负责人、邮件、短信、电话、微信、钉钉等消息通知这只是最基本的功能,zabbix还可以在告警触发时执行命令或者脚本,这样可快速恢复业务,然后再查询问题的原因。
比如:监控到nginx服务宕机,那么最先要做的不是查看他为什宕,而是要快速启动它,让他继续提供服务。Zabbix还可以实现告警升级,这个也可以应用在刚刚的场景中,开始已经发送消息通知负责人,并执行了重启的命令,5分钟后发现业务依然没恢复,这时候就可以进行告警升级,比如通知领导,发送电话语音告警给负责人等,这样时间就升级了,让相关的人都关注到并且及时处理。
@@@很多人都遇到过告警风暴,短时间内几百上千告警信息一起涌来,技术人员想要从这么多信息中找出关键信息需要花费一定的时间,后来就有了告警聚合和关联。
Zabbix提供了告警分析功能,可以有效降低告警风暴,同时让技术人员只关注时间的根本原因。
如果将服务的监控和服务器宕机做个关联,那么当机器宕机时,只有宕机的信息会发送,其他服务的告警信息只会显示在前端页面,当然zabbix的告警功能还有其他的功能。
加密通信
统一认证
权限管理
(1)Zabbix支持多种认证方式,可以是本地用户,HTTP基础认证,LDAP认证
一般企业内部都是通过LADP和域控结合,统一管理用户和密码。
(2)不同用户登录可以设置不同的权限,可以插件那些机器,对哪些机器有读写权限,那些机器有读权限等。
(3)对安全性要求的话,zabbix任意两个组件之间可以通过TLS加密传输数据,这种设置一般是多地域,多机房的情况会用到,避免数据在传输过程中被窃听或者篡改
在这里解释一下SSL和TSL。
(4)TSL全称是Transport Layer Security 传输层安全性协议
而SSL是TSL的前身,SSL 3.0当时被发现可以被攻击,不够安全,所以在SSL3.0的基础上建立了TSL1.0。
网络自动发现
低级别自动发现(LLD)
Agent自动注册
(1)第一个是网络扫描,通过扫描发现网段中满足条件的设备,比如安装了Agent,打开了SNMP,开启了特定服务等,满足条件的设备可以设置操作自动加入监控,应用对应的监控模板,或者是执行某个处理脚本。
(2)第二个是Agent自动注册,只要安装了agent的设备并且配置为主动上报模式,zabbix服务端会根据客户端传过来的信息来执行监控相关操作。
以上的两个功能都可以大幅度的降低认为的操作,提高监控的自动化和完整性。
补充:当监控网卡时,每个网卡的信息都是不一样的,这就用到了zabbix的LLD低级自动发现的功能,该功能可以自动发现并创建监控项,告警策略,图标,例如文件系统,网卡都是通过该功能被zabbix服务端发现并添加至监控了。
自动化配置管理与第三方系统结合
通过zabbix API 可以获取监控数据,自动化配置管理,与第三方系统联动,开发自己的监控app等。
zabbix API 支持多种语言的调用,shell、python、go等
性能提升10%-20%
分布式网络带宽降低80%
历史数据支持ES Hadoop kafka等进行联动
告警处理流程提升,
支持HTTP Agent
Tag多个功能支持
支持单点登录
客户端新增http类型监控,可以获取resstful接口的监控数据
监控系统的组成模块包括数据收集、汇报、储存、展示、告警的分析和发送。
Zabbix Agent:zabbix客户端,负责数据收集上传
Zabbix server:zabbix的服务端,负责数据汇总、处理、告警策略、告警发送等等。
Zabbix web:zabbix前端页面,提供了有好的展示和操作界面,负责数据的展示,监控系统的配置管理,用户权限配置管理等功能
Database:数据和配置存储数据库、zabbix支持多种数据库、包括mysql、oracle、DB2等
Java gateway:java网关,负责通过JMX监控收集java应用性能数据
Zabbix proxy:zabbix代理,分布式部署和架构会用到,主要是收集设备的监控数据并将数据发送给对应的zabbix server
总的一套下来就是这么一个流程:
数据通过zabbix客户端收集并发送给zabbix服务端,zabbix服务端负责存储,分析数据,触发告警等功能用户或者管理员可以通过zabbix前端页面进行数据展示和配置管理,如果设备规模较多、分布在多地域、多机房都可以通过zabbix proxy实现分布式架构部署。
Poller进程是主要负责server主动拉取类型的监控数据
Trapper进程主要负责Agent主动上报的监控数据
HTTP Poller进程主要负责URL监控类型的数据收集
Icmp pinger是负责ping存活监控数据收集
java gateway进程负责和java gateway通信处理数据
java poller进程负责拉取JMX类型数据获取
ipmi poller进程负责IPMI类型数据获取
timer进程负责处理和时间有关的数据以及告警维护等等
vmware collector进行负责收集vmware虚拟化环境监控数据
unreachable poller负责处理无法到达类的监控处理
数据通过上面这些进程从客户端收集过来。
Preprocessing进程会对监控数据进行预处理然后服务端的history syncer进程负责将数据分析并保存到数据库中,housekeeper进程负责定期清理历史数据,数据收集并经过zabbix server处理,那告警是怎么处理的呢,告警是通过alerter进程处理发送的,而alerter manager 是负责管理alerter进程的,escalator进程是负责处理告警过程中的各个步骤的。比如有告警升级之类的。分布式通信是由proxy poller进程负责的,discovery process是负责设备自动发现功能的。Zabbix server进程数较多