zabbix介绍
引自网络: zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix构成:zabbix server与可选组件zabbix agent、zabbix proxy,当然还有java_gateway。zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上
agent端:主机通过安装agent方式采集数据。
server端:通过收集agent发送的数据,写入数据库(MySQL,ORACLE等)再通过php+apache在web前端展示
proxy端: 如果需要的监控主机很多,则可以使用proxy代理端来接收agent发送来的数据暂存在数据库中,然后由proxy来把这些数据发送给server端,减少server端的压力
zabbix可监控对象:
- 设备:服务器,路由器,交换机
- 软件:OS,网络,应用程序
- 主机性能指标监控
- 故障监控: down机,服务不可用,主机不可达
- 网络流量
zabbix原理
大概流程: zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端(或者proxy端),zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agent收集数据分为主动和被动两种模式:
- 主动: agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
- 被动: server向agent请求获取监控项的数据,agent返回数据
下图是从网络找到的比较直观的zabbix流程图:
zabbix主要组件及进程
zabbix主要组件
- Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行
- Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端
- Proxy: 可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端
- Web interface: zabbix的GUI接口,通常与Server运行在同一台主机上
- Database Storage: 专用于存储所有配置信息,以及由zabbix收集的数据,基本支持所有常见数据库
zabbix进程
- zabbix_server: zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交(主动)/被提交(被动)到server
- zabbix_agentd: 客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等
- zabbix_proxy: zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里,主要是为了减少server端压力
- zabbix_get: 通常在server或者proxy端执行获取远程客户端信息的命令
- zabbix_sender: 用于发送数据给server或者proxy,通常用于耗时比较长的检查,使用sender主动提交数据
- java_gateway: 使用JMX协议来获取java开发的程序相关数据,通常用来监控weblogic/apache/tomcat中间件,需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy
zabbix常用架构
server
这是最简单的架构,只有一个server端,然后使用其它简单协议如ICMP,Ping,ODBC等获取数据,这适合出于安全原因无法在主机安装agent的情况下
server-agent
这算是标配的架构了
server-proxy-agent
server-node-agent
这个最复杂,本人也没使用过