1.Prometheus简介
Prometheus 架构 如下:
![](https://img.haomeiwen.com/i11017946/4e06eabf52eab422.png)
Prometheus的基本原理是通过HTTP周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口并且符合Prometheus定义的数据格式,就可以接入Prometheus监控。它的的整个工作流程大致分为收集数据,存储数据,展示监控数据,监控告警;核心组件包括:Exporters,Prometheus Server,AlertManager,PushGateway;
-
Exporters:监控数据采集器,将数据通过Http的方式暴露给Prometheus Server;
各种Exporter -
Prometheus Server:负责对监控数据的获取,存储以及查询;获取的监控数据需要是指定的Metrics格式,这样才能处理监控数据;对于查询Prometheus提供了PromQL方便对数据进行查询汇总,当然Prometheus本身也提供了Web UI;
-
AlertManager:Prometheus支持通过PromQL来创建告警规则,如果满足规则则创建一条告警,后续的告警流程就交给AlertManager,其提供了多种告警方式包括email,webhook等方式;
-
PushGateway:正常情况下Prometheus Server能够直接与Exporter进行通信,然后pull数据;当网络需求无法满足时就可以使用PushGateway作为中转站了;
2.Zabbix
Zabbix 架构
![](https://img.haomeiwen.com/i11017946/8bda856705ae722b.png)
Zabbix 核心组件主要是Agent和Server。
- Agent主要负责采集数据并通过主动或者被动的方式采集数据发送到Server/Proxy,除此之外,为了扩展监控项,Agent还支持执行自定义脚本。
- Server主要负责接收Agent发送的监控信息,并进行汇总存储,触发告警等。Zabbix Server将收集的监控数据存储到Zabbix Database中。
- Zabbix Database支持常用的关系型数据库,如果MySQL、PostgreSQL、Oracle等,默认是MySQL。
- Zabbix Web : zabbix的GUI接口,通常与server运行在同一台机器上
- Proxy:可选组件,常用于分布式监控环境中,代理Server收集部分被监控数据并统一发往Server端
3.Prometheus与zabbix对比
对比项 | Prometheus | Zabbix | Prometheus优势 | Zabbix优势 |
---|---|---|---|---|
管理 | 二进制文件启动 | LNMP+编译 | 轻量级Server,便于迁移和维护 | - |
配置 | 配置文件 | 图形化 | 更好的支持自动化配置 | 学习成本低 |
Client | 丰富的Client库 | Zabbix、Agent自定义脚本 | 为各种中间件、应用提供专业的exporter,监控项更全面 | 支持自定义监控项,对监控设计者的格局要求较高 |
数据存储方式 | Prometheus TSDB | MySQL | 监控数据以时间为维度统计情况较多,时序数据库更适用于监控数据的存储,按时间索引性能更高 | MySQL较常用,学习成本低 |
数据处理 | PromQL | MySQL | PromQL计算函数丰富,统计维度广 | 同上 |
二次开发 | 丰富的sdk | API | 提供了GO、Java/Scala、Python、Ruby等SDK,二次开发更便捷 | API适配较为常用,学习成本低 |
对云环境的支持 | 原生支持容器监控 | 更适合物理机监控 | 自动发现容器,更好的适配k8x | - |
告警方式 | 可按照标签分组,收敛 | 在次数上收敛 | 告警收敛方式更多样化 | - |
监控项值 | 支持数字 | 支持数字字符串 | - | 可做日志监控 |
网友评论