文章目录
- 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 |