- 支持分布式集中管理,有自动发现功能,可以实现自动化监控
- 开放式接口,扩展性强,插件编写容易
- 当监控的 item 比较多服务器队列此较大时可以采用主动状态,被监控客户端主动从server端去下载需要监控的item然后取数据上传到server端。这种方式对服务器的负载比较小。
- Api的支持,方便与其他系统结合
4.Zabbix的缺点
- 需在被监控主机上安装agent,所有数据都存在数据库里,产生的数据据很大,瓶颈主要在数据库。
- 项目批量修改不方便。
- 社区虽然成熟,但是中文资料相对较少,服务支持有限。
- 入门容易,能实现基础的监控,但是深层次需求需要非常熟悉Zabbix并进行大量的二次定制开发难度较大。
- 系统级别报警设置相对比较多,如果不筛选的话报警邮件会很多;且自定义的项目报警需要自己设置,过程比较繁琐。
- 缺少数据汇 总功能,如无法查看-组服务器平均值, 需进行二次开发;
5.Zabbix监控系统的监控对象
类型 | 典型代表服务 | 安装的服务 |
---|---|---|
数据库 | MySQL,MariaDB,Oracle,SQL Server | agent |
应用软件 | Nginx,Apache, PHP,Tomcat | agent |
集群 | LVS,Keepalived,HAproxy,RHCS,F5 | agent |
虚拟化 | VMware,KVM,XEN ,docker ,k8s | agent |
操作系统 | Linux,Unix,Windows性能参数 | agent |
硬件 | 服务器,存储,网络设备 | IPMI |
网络 | 网络环境(内网环境,外网环境) | SNMP |
三.Zabbix的监控架构
在实际监控架构中,zabbix根据网络环境、监控规模等分了三种架构:server-client 、master-node-client、server-proxy-client
1.server-client架构
- zabbix的最简单的架构
- 监控机和被监控机之间不经过任何代理 ,直接由zabbix server和zabbix agentd之间进行数据交互
- 适用于网络比较简单,设备比较少的监控环境
2.server-proxy-client架构
- 其中proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后再提交给server
- 该架构经常是和master-node-client架构做比较的架构 ,一般适用于跨机房、跨网络的中型网络架构的监控
3.master-node-client架构
- 该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境 。
- 每个node同时也是一个server端,node下面可以接proxy,也可以直接接client 。
- node有自已的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master的故障或损坏对node其下架构的完整性
四.Zabbix的程序组件
- Zabbix agent:客户端守护进程,负责部署在被监控主机上,把被监控主机的数据传送给zabbix server,例如:收集 CPU 负载、内存、硬盘使用情况等;
- Zabbix server:服务端守护进程,负责接收agent发送的信息,组织配置信息,统计配置信息和操作数据等
- Zabbix database:存储系统,用于存储zabbix的所有配置信息,监控数据的数据库,例如mysql, pgsq|
- Zabbix web:GUI图形化界面,zabbix的web界面,管理可以通过zabbix的web界面管理zabbix配置以及查看zabbix的监控信息,可以独一部署在一台服务器上
- Zabbix proxy:zabbix分布式代理守护进程,分布式环境中使用,zabbix proxy代表server端管理该区域中的信息收集,最终统一发往zabbix server
- Zabbix get:zabbix 数据接收工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户端信息的命令
- Zabbix sender:zabbix 数据发送工具,用户发送数据给 server 或 proxy 端,通常用户耗时比较长的检查
- Zabbix_ java_ gateway:java网关
五.Zabbix的监控模式
1. 主动模式
- 主动检测: 由agent端主动收集信息发送给server端 工具是zabbix_sender
- 相对于agent而言; agent(active),agent向server请求与自己相关监控项配置, 主动地将server配置的监控项相关的数据发送给server;
- 主动监控能极大节约监控server的资源。
2. 被动模式
- 被动检测:由server端主动拉取信息 工具是zabbix_get
- 相对于agent而言 ; agent, server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server;
六.Zabbix监控有哪些?
- 硬件监控:通过 SNMP 来进行路由器交换机的监控
- 系统监控:如 CPU 的负载,上下文切换、内存使用率、磁盘读写、磁盘使用率、磁盘 inode 节点
- 服务监控:比如公司用 LNMP nginx 自带 Status 模块、 PHP 也有相关的 Status 、 MySQL 的话可以通过 ODBC协议 来进行监控
- 网络监控:如果是云主机又不是跨机房,那么可以选择不监控网络
- 安全监控:如果是云主机可以考虑使用自带的安全防护。当然也可以Zabbix监控 iptables 如果是硬件,那么推荐以Zabbix监控硬件防火墙
- Web 监控:web 监控的话题其实还是很多。比如可以使用自带的 web 监控来监控页面相关的延迟、 js 响应时间、下载时间、等等
- 日志监控:如果是 web 的话可以使用监控 Nginx 的 500x 日志。PHP 的 ERROR 日志
- 流量分析:平时我们分析日志都是拿 awk sed xxx 一堆工具来实现。这样对我们统计 ip 、 pv 、 uv 不是很方便。那么可以使用百度统计、 google 统计、商业,让开发嵌入代码即可 (不想关建议去掉)
- 可视化:通过 screen 以及引入一 些第三方的库来美化界面,同时我们也需要知道、订单量突然增加、 突然减少。或者说突然来了一大波流量,这流量从哪儿来,是不是推广了,还是被攻击了。可以结合监控平台来梳理各个系统之间的业务关系
- 自动化监控:如上我们做了那么多的工作,当然不能是一台一台的来加 key 实现。可以通过Zabbix 的主动模式以及被动模式来实现。当然最好还是通过 API 来实现
七.部署Zabbix服务端(端口:10051)
1. 环境准备
节点 | IP地址 | 安装服务 |
---|---|---|
zabbix-server(内存至少2 |