Zabbix的功能介绍和常用术语
1. Zabbix 介绍
Zabbix 是一种企业级的分布式开源监控解决方案。
Zabbix 是一款能够监控众多网络参数和服务器的健康度和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的警报。这样可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报告和数据可视化。这些功能使得 Zabbix 成为容量规划的理想选择。
Zabbix 支持轮询和被动捕获。所有的 Zabbix 报告、统计信息和配置参数都可以通过基于 Web 的前端页面进行访问。在经过适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。
2. Zabbix 功能
数据采集
- 可用性和性能采集;
- 支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;
- 自定义检查;
- 按照自定义的时间间隔采集需要的数据;
- 通过 Server/Proxy 和 Agents 来执行数据采集。
灵活的阈值定义
- 可以定义非常灵活的告警阈值,称之为触发器,触发器从后端数据库获得参考值。
高度可配置化的告警
- 可以根据递增计划、接收者、媒介类型自定义发送告警通知;
- 使用宏变量可以使告警通知变得更加高效有益;
- 自动动作包含远程命令。
实时图形
- 使用内置图形功能可实时将监控项绘制成图形。
Web 监控功能
- Zabbix 可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。
丰富的可视化选项
- 能够创建可以将多个监控项组合到单个视图中的自定义图形;
- 网络拓扑图;
- 以仪表盘样式展示自定义聚合图形和幻灯片演示;
- 报表;
- 监控资源的高层次(业务)视图。
历史数据存储
- 存储在数据库中的数据;
- 可配置的历史数据;
- 内置数据管理机制(housekeeping)。
配置简单
- 将被监控设备添加为主机;
- 主机一旦添加到数据库中,就会采集主机数据用于监控;
- 将模板用于监控设备。
套用模板
- 在模板中分组检查;
- 模板可以关联其他模板,获得继承。
网络发现
- 自动发现网络设备;
- Zabbix Agent 发现设备后自动注册;
- 自动发现文件系统、网络接口和 SNMP OIDs 值。
快捷的 Web 界面
- 基于 PHP 的 Web 前端;
- 可以从任何地方访问;
- 您可以定制自己的操作方式;
- 审计日志。
Zabbix API
- Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途。
权限管理系统
- 安全的用户身份验证;
- 将特定用户限制于访问特定的视图。
功能强大且易于扩展的 Zabbix Agent
- 部署于被监控对象上;
- 完美支持 Linux 和 Windows ;
二进制守护进程
- 为了更好的性能和更少的内存占用,采用 C 语言编写;
- 便于移植。
适应更复杂的环境
- 使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控。
3. zabbix常见监控参数
不管是zabbix,还是其他的开源监控,说到底都是在做五件事:
- 数据的采集
- 把采集过来的数据存储
- 把存储起来的数据进行分析
- 把分析的结果使用图标展示
- 把有问题的地方采用各种方式告警。
zabbix常见监控参数
1.监控web服务
- web服务是否正常
- 业务(网页是否能访问、是否可以完成下订单、注册用户)
- 服务的响应时间
- 服务的并发量(活动用户、非活动用户)
2.监控数据库
- 监控磁盘使用情况
- 监控内存使用情况
- 查看并发连接数量
- 检查数据库执行增删改查的频率
- 检查主从状态
- 检查数据库的备份情况
3.服务器监控
- 磁盘
- 使用率
- inode数
- block数
- 读写速率
- CPU
- 监控cpu负载
- 监控使用cpu资源最多的进程
- 内存
- 使用率
- 缓冲区
- 缓存区
- 交换分区大小
- 网络
- 监控每个网卡的上先行速率
- 监控占用网络带宽见多的进程
- 监控数据包的丢包
- 监控网络数据包的阻塞情况
- 进程
- 当前系统中的总进程数
- 监控特定的程序的进程数
4. 监控的分类
1.硬件监控——路由器、交换机、防火墙
2.系统监控——cpu、内存、磁盘、网络、进程、tcp
3.服务监控——nginx、php、tomcat、redis、memcache、mysql
4.web监控——响应时间、加载时间、渲染时间、页面是不是200
5.日志监控——ELK、(收集、存储、分析、展示)日志
6.安全监控——firewalld、WAF(nginx+lua)、安全宝、牛盾云、安全狗
5. Zabbix常用的术语
- 主机(host): 要监控的网络设备,可由IP或DNS名称指定。
- 主机组(host group): 主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模版不能互相链接,主机组通常在给用户或用户组指派监控权限时使用。
- 监控项(item): 一个特定监控指标的相关的数据,这些数据来自于被监控对象,item是zabbix进行数据收集的核心,没有item,就没有数据,每个item都由“key”进行标识。
- 触发器(trigger): 一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在合理范围内,即阈值;接收到的数据量大于阈值时,触发器状态将从“OK”转变为“Problem”,当数据量再次回到合理范围时,其状态将从“Problem”转换回“OK”。
- 事件(event): 即发生的一个值得关注的事件,如触发器的状态转变,新的agent或重新上线的agent的自动注册等。
- 动作(action): 指对于特定事件事先定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作)。
- 报警升级(escalation): 发送警报或执行远程命令的自定方案,如每隔多长时间发送一次警报,共发送多少次。
- 媒介(media): 发送通知的手段或通道,如Email,Jabber或SMS等。
- 通知(motification): 通过选定的媒介向用户发送的有关某事件的信息。
- 远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行。
- 模版(template): 用于快速定义被监控主机的预设条目集合,通常包含了item,trigger,graph,screen,application,low-level discovery rule,模板可以直接链接到单个主机。
- 应用(application): 一组item的集合
- web场景(web scenario): 用于检测web站点可用性的一个或多个HTTP请求。
- 前端(frontend): zabbix的web接口。
6. zabbix的组件
Zabbix_server:服务端守护进程
- Zabbix监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等。负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据均由其组织进行
Zabbix_agentd:agent守护进程
- 部署在监控对象上的,能够主动监控本地资源和应用的程序,部署在被监控主机上,负责收集本地数据并发往Server端或者Proxy端
Zabbix_proxy:代理服务器,可选
- 一个帮助Zabbix Server收集数据,分担Zabbix Server的负载的程序,可选组件,常用于分布式监控环境中,代理Server收集部分被监控数据并统一发往Server端
Zabbix_database:存储系统,MySQL/PGSQL
- 专用于存储所有配置信息,以及有zabbix收集的数据
Zabbix_web:Web GUI
- zabbix的GUI接口,通常与server运行在同一台机器上
Zabbix_get:命令行工具,测试向agent端发起数据采集请求
Zabbix_sender:命令行工具,测试向server端发送数据
Zabbix_java_gateway:java网关
7. zabbix的两种监控模式
Zabbix_agent检测分为两种模式:主动模式和被动模式
被动模式,也是默认的Zabbix监控模式,被动模式是相对于proxy来说的。proxy主动发送数据就是主动模式,proxy等待server的请求再发送数据就是被动模式。
使用zabbix主动模式的好处:可以监控不可达的远程设备;监控本地网络不稳定区域;当监控项目数以万计的时候使用代理可以有效分担zabbix server的压力;简化zabbix分布式监控的维护。
被动模式:由server向agent发出指令获取数据, 即agent被动的去获取数据并返回给server,server周期性的向agent 索取数据, 这总模式的最大问题就是会加大server的工作量, 在数百台服务器的环境下server不能及时获取到最新数据, 但这也是默认的工作方式。
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
被动模式:默认为zabbix_agent被动模式
主动模式与被动模式主要是站在zabbix_agent身份来说
1.被动模式(zabbix-server轮询检测zabbix-agent)
2.主动模式(zabbix-agent主动上报给zabbix-server)
zabbix主动模式与被动模式选择
1.当(Queue)队列中有大量的延迟监控项
2.当监控主机超过300+ ,建议使用主动模式
8. Zabbix和Prometheus的区别
Prometheus | Zabbix | |
发行时间 | 2016 | 2012 |
开发语言 | go | c+php |
性能 | 支持万为单位 | 上限约10000节点 |
社区支持 | 相对不如zabbix,但人数与日俱增 | 应用广泛,支持较成熟,遇到的问题都能搜索到 |
容器支持 | 不仅支持swarm原生集群,还支持kubernetes容器集群的监控,是目前容器监控最好的解决方案 | Zabbix出现得比较早,当时容器还没有诞生,自然对容器的支持也比较差 |
企业使用 | 基本上使用kubernetes与容器的企业,Prometheus是最好的选择 | 在传统监控系统中,尤其是在服务器相关监控方面,占据绝对优势 |
部署难度 | 只有一个核心Server组件,一条命令便可以启动 | 多种系统,多种监控信息采集方式 |