zabbix是一个基于WEB界面的提供分布式系统监控以及网络监控功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
当系统构建时的正常流程中,通常是不允许未被监控的系统或应用上线的,因为来被监控的系统存在不可预知性,故障未知等不确定因素,且无法及时被发现并排除的,这时整个架构或系统来说都是非常大的风险因患,所以我们在原则上是要对整个的架构或系统进行监控,随时监控各个方面的指标是否正常,以提高系统的稳定性。
一个完整的监控系统所需的指标:
1、采样:周期性的获取某个被检测指标的相关数据
2、存储:将采样的数据存储在指定的存储系统中,Zabbix默认是MySQL对于数据的监控可分为两大类:历史数据:可理解为过去某一时间点的数据趋势数据:可理解为过去某一段时间的数据
3、展示:采集完数据后,为了使数据能更直观的展现在用户面前,可将采集的数据进行二次处理,做成图像,Zabbix就是使用PHP程序将采集的数据通过Web Gui直观的展示给用户。
4、报警:当监控的指标出现异常时需要金控能自动的发出警报信息,甚至警报后能自动完成修复。
agent安装在被监控的主机上,agent负责定期收集客户端本地各项数据,并发送至ZabbixServer端,ZabbixServer收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。
当Zabbix监控某个具体的项目,该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)。
PS:
agent收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy。
被动:server向agent请求获取监控项的数据,agent返回数据。
1、SNMP(Simple Network Managerment Protocol),这是一个非常古老的且通用的监控协议,几乎任何设备都支持用此方式进行系统的监控。
2、Agent:在监控端安装专门的监控程序,将数据采集后通过Agent发送至Server.
3、IPMI:智能平台管理接口,可在常用的服务器上看到类似的以太网口的接口。
4、JMX: Java Managerment Exlensions
1、Zabbix Web Gui: 提供Web界面
2、Zabbix Databases:提供数据库存储功能并用于存储配置信息。以及采集到的数据。
3、Zabbix Server : 接收来自Agent采集数据的核心组件
4、Zabbix Agent :部署在被监控的主机上,用于采集本地的数据。
5、Zabbix Proxy: 当监控节点较多时,用于减轻Server压力组件,也可用于分布式监控系统由Proxy接收数据后统一发送给Server.
1、zabbix_agentd:客户端守护进程,负责收集客户端数据,例如cpu负载、内存、硬盘使用情况等。
2、zabbix_get:zabbix数据接收工具,单独使用的命令,通常在Server或者Proxy端执行获取远端客户信息的命令。通常客户排错。例如在Server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。
3、zabbix_sender:zabbix数据发送工具,用于发送数据给Server或者Proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。
4、zabbix_proxy:zabbix代理守护进程。功能类似Server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到Server里。
5、zabbix_java_gateway:Java网关,类似agentd,但是只用于Java方面。它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到Server或者proxy。
主机组(host groups)
主机(hosts)
应用(application)
监控项(items)
触发器(triggers)
事件(event)
动作(actions) : 条件(conditions) 和操作(operations)
媒介(media):发送通知的通道,短信,邮件等。
通知(notiflcation)
远程命令(remoto command)
报警升级(escalation)
摸版(template)
图形(graph)
屏幕(screens)
幻灯(slide show)
支持自定义监控脚本,提供需要输出的值即可
zabbix存 储的数据库表结构稍有复杂但是逻辑清晰
zabbix存在模板的概念,可以方便的将一 组监控项进行部署
zabbix每一个item也就是监控项,都可以看到历史记录,且web界面友好
zabbix有 强大的Trigger(触发器)定义规则,可以定义复杂的报警逻辑
zabbix提供 了ack报警确认机制
zabbix支持邮件,短信,微信等告警
zabbix在触发告警后,可以远程执行系统命令
zabbix有原生的PHP绘图模块