文章目录
- Zabbix 介绍
-
- Prometheus 介绍
-
- Zabbix vs Prometheus 对比
- 架构与组件
-
- 监控要点与最佳实践
- 告警与可视化
- Zabbix
- Prometheus + Alertmanager + Grafana
- 伸缩与高可用
-
- 运维成本与社区支持
- 其他可选方案
- 选型建议
Zabbix 介绍
概述
Zabbix 是一个开源的企业级分布式监控解决方案,支持对网络设备、服务器、虚拟机、应用程序等进行监控,具备 数据采集、告警、可视化、自动化 等功能。
架构组成
- Zabbix Server:核心组件,负责收集、处理数据并触发告警。
- Zabbix Agent:部署在被监控主机上,采集本地数据。
- Zabbix Proxy:可选组件,适用于分布式部署,减轻主服务器负载。
- 数据库:用于存储监控数据(MySQL、PostgreSQL 等)。
- Web UI:用于配置和展示监控数据的前端界面。
特点
- 强大的 Web 界面,图形展示丰富。
- 支持自动发现、分布式监控。
- 自带报警机制,支持邮件、短信、Webhook 等。
- 支持 SNMP、IPMI、JMX、agent、脚本等多种数据采集方式。
适用场景
- 企业级运维环境。
- 需要复杂告警策略和历史数据分析的场景。
- 对统一平台和图形界面要求较高的组织。
Prometheus 介绍
概述
Prometheus 是由 SoundCloud 开发的开源监控系统,后来加入了 CNCF(云原生计算基金会),与 Kubernetes 紧密集成,主要面向 云原生 和 微服务 场景。
架构组成
- Prometheus Server:核心,定时拉取指标数据(pull 模式),存储和处理时间序列数据。
- Exporter:暴露监控指标的组件,如 node_exporter、mysql_exporter。
- Push Gateway:允许临时性任务推送指标(push 模式)。
- Alertmanager:处理告警逻辑并分发(如邮件、Slack、WebHook)。
- Grafana:通常搭配用于数据展示(Prometheus 本身图表较弱)。
特点
- 原生支持时间序列数据和 PromQL 查询语言。
- 采用 pull 模式,适合服务发现(如 Kubernetes 环境)。
- 轻量、高性能,部署灵活。
- 容器监控和云原生生态集成好(K8s、Docker)。
适用场景
- 云原生、容器化环境。
- 微服务架构监控。
- 对指标数据分析和时序数据库有高要求的系统。
Zabbix vs Prometheus 对比
| 特性 | Zabbix | Prometheus |
|---|
| 数据采集方式 | 主动/被动(agent、SNMP等) | Pull为主(HTTP接口) |
| 存储方式 | 基于关系型数据库(如 MySQL) | 自带时序数据库 |
| 告警机制 | 内建告警系统 | 借助 Alertmanager |
| 可视化 | 自带 Web 界面 | 常与 Grafana 搭配 |
| 集群支持 | 内建支持 Proxy 分布式部署 | 原生不支持 HA(可通过 Thanos、Cortex 实现) |
| 微服务支持 | 一般 | 优秀 |
| 学习曲线 | 较陡峭 | 相对平缓 |
| 部署复杂度 | 相对复杂 | 相对简单(核心组件少) |
架构与组件
Zabbix 架构
- Server–Proxy–Agent
- Zabbix Server:集中处理数据收集、触发告警、存储历史。
- Zabbix Proxy:部署在边缘或远程站点,批量转发指标至 Server,支持水平扩展。
- Zabbix Agent:部署在目标主机,支持主动推送或被动拉取指标,能执行自定义脚本(如 FastDFS、XXL‑Job Admin HTTP 接口、Nacos API)。
- 数据库:配置与历史数据存储于 MySQL/PostgreSQL。超大规模环境(百万 NVPS)需分区表、优化 I/O,并配合主从或 Galera HAciteturn0search12turn0search4。
- Web 界面:支持多前端负载均衡,高可用部署citeturn0search0。
Prometheus 架构
- Prometheus Server:周期性 Pull 各类 Exporter 暴露的
/metrics 接口,存入本地时序数据库。 - 关键 Exporters:
node_exporter:CPU、内存、磁盘、网络等主机级指标mysqld_exporter:MySQL 连接数、QPS、慢查询、InnoDB 缓冲池redis_exporter:Keyspace、命中率、内存使用、持久化延迟citeturn0search5kafka_exporter:Topic 大小、消费延迟、ISR、Under‑replicated partitionsciteturn0search11jmx_exporter:JVM(GC、堆/非堆内存、线程)、ZooKeeper、Nacos、FastDFS、XXL‑Job(通过 JMX 或自定义 bean)citeturn0search1nginx_exporter:连接数、请求速率、状态码分布
- Alertmanager:基于 PromQL 规则的告警去重、分组、抑制与路由。
- Grafana:社区丰富 Dashboard,用于可视化展示与告警面板。
监控要点与最佳实践
| 组件 | 关键指标 | Zabbix 模板/方式 | Prometheus Exporter & Scrape |
|---|
| MySQL | 连接数、QPS、慢查询数、InnoDB Buffer Pool、锁等待 | 官方 MySQL 模板 | mysqld_exporter + scrape_interval: 15s |
| Nacos | 服务注册数、心跳延迟、租约过期、配置发布次数 | 自定义脚本 + Agent | 自建 JMX 或 HTTP Exporter,scrape_interval: 30s |
| Redis | used_memory, evicted_keys, keyspace_hits/misses, latency_usec | 社区 Redis 模板 | redis_exporter;scrape_interval: 15s citeturn0search9turn0search5 |
| Kafka | Broker 数量、Topic 生产/消费速率、ISR、Under‑replicated partitions | 社区 Kafka 模板 | kafka_exporter;scrape_interval: 30s citeturn0search11 |
| ZooKeeper | zookeeper_server_watches, latency, request 延迟 | JMX 模板 | jmx_exporter;scrape_interval: 30s citeturn0search1 |
| FastDFS | Storage 使用率、Tracker 请求量、Client 连接数 | 自定义脚本 + Agent | 自建 HTTP Exporter 或 jmx_exporter + Spring Boot Actuator |
| Nginx/Tengine | 活跃连接数、请求速率、响应状态分布、上游健康状况 | 官方 Nginx 模板 | nginx_exporter;scrape_interval: 15s |
| XXL‑Job Admin | 执行任务数、失败数、耗时分布 | 自定义脚本 + Agent | 自建 Exporter:定时抓取 /job/info 等 Admin API |
| Java/JDK 应用 | GC 次数/耗时、堆/非堆内存、线程状态、ClassLoader 使用 | JMX 模板 | jmx_exporter;scrape_interval: 30s citeturn0search1 |
| Linux 主机 | CPU、内存、磁盘 I/O、网络 I/O | zabbix_agent 默认模板 | node_exporter;scrape_interval: 15s |
告警与可视化
Zabbix
- 触发器表达式:支持宏、运算符,可分级(Info/Warning/Critical)。
- 依赖与抑制:定义触发器依赖,避免洪水告警。
- 可视化:内置图表、Screen、Map、Dashboard。
Prometheus + Alertmanager + Grafana
- Alertmanager:
- 分组(group_by)、抑制(inhibit_rules)、路由(routes)
- 接收器:邮件、Slack、Webhook、钉钉、PagerDuty 等
- PromQL:灵活聚合与函数,如
increase(redis_evicted_keys[5m])>100。 - Grafana:支持告警面板、模板共享,多租户与细粒度权限控制。
伸缩与高可用
Zabbix
- Proxy 扩展:多 Proxy 分担采集。
- DB 分区 & 主从:分区表、主从或 Galera HA。
- 前端 LB:多 Web 节点 + Nginx/LB。
- NVPS 优化:调优
CacheSize、HistoryStoragePeriod、SSD 存储、DB 参数citeturn0search12turn0search10。
Prometheus
- Federation:子集指标由多 Server 负责,顶级只聚合。
- Thanos/Cortex:长期存储、跨集群查询、高可用。
- Service Discovery:K8s、Consul、DNS、文件等自动发现 Exporter。
运维成本与社区支持
| 指标 | Zabbix | Prometheus + Grafana |
|---|
| 学习曲线 | 中等:UI 直观,深入需掌握 DB/Proxy 架构 | 较陡:需理解 PromQL、多组件运维 |
| 生态 & 支持 | 模板齐全、商业支持(Zabbix SIA)、论坛活跃 | CNCF 生态、Exporter 丰富、Grafana Labs 支持 |
| 升级 | 一键升级包,关注 DB Migrations | 多组件兼容需协调升级顺序 |
| 安全 | Agent/Proxy 加密、细粒度权限 | TLS 抓取、Alertmanager 认证、Grafana RBAC |
其他可选方案
| 方案 | 特点 | 适用场景 |
|---|
| Nagios | 主机/服务 UP/DOWN 监控,插件生态;关注可用性 | 基础可用性、简单告警 |
| Grafana Cloud | SaaS 化 Metrics+Logs+Trace,免运维;集成 Loki/Tempo | 快速上线、减轻运维 |
| ELK + Metricbeat | 日志与指标统一,Metricbeat 灵活拓展 | 日志分析与指标同平台 |
| Datadog | 商业 SaaS,APM+Metrics+Logs+RUM 一体化 | 预算充足、全托管需求 |
选型建议
| 需求场景 | 推荐方案 |
|---|
| 快速部署、统一平台 | Zabbix |
| 微服务、K8s、多时序指标分析 | Prometheus + Grafana |
| 跨集群、高可用、长期存储 | Prometheus + Thanos/Cortex |
| 无运维/轻量上云 | Grafana Cloud / Datadog |
| 日志指标统一观测 | ELK/EFK + Metricbeat |