前言
- 灵活的时间序列数据库
- 定制各式各样的监控规则
Prometheus
的开发人员和用户社区非常活跃- 独立的开源项目,不依赖于任何公司
- 继
Kurberntes
之后第二个入驻的项目
Prometheus架构
Prometheus监控系统是由多个组件组成
Prometheus架构
如下图所示
采集层
- Exporters:
Prometheus
定期通过HTTP请求从目标资源中拉取数据。目标资源可以是应用程序、系统、服务或其他资源。Prometheus提供大量Exporter(https://prometheus.io/docs/instrumenting/exporters/) - Pushgateway: 用于集中管理临时性或周期性任务的指标数据,并暴露给
Prometheus Server
存储和处理层
数据存储:Prometheus Server
整个架构的核心,负责汇总后来自Exporters
,Pushgateway
以及其他程序提供的指标数据,并将这些数据存储到本地磁盘
上。Prometheus Server
还可以将数据存储到第三方存储系统上,如InfluxDB
,OpenTSDB
,以满足高效的存储需求
**查询和分析:**提供强大的PromQL
查询语言,支持多维数据查询和分析
展示层
**Web UI:**内置的Web页面,可以对Prometheus进行基本管理
**Grafana:**提供对Grafana的支持,为用户呈现更丰富的图表和仪表盘
**API clients:**包含多种编程语言的客户端库,用于与Prometheus API进行交互
,为开发者提供简单易用的编程接口
告警层
**Altermanager:**负责接收来自Prometheus Server
的告警事件
,根据预定义的策略将告警通知发送到不同的通讯软件,如邮箱
,微信
等
Prometheus时间序列数据
什么是序列数据?
时间序列数据(TimeSeries Data
):按照时间顺序记录系统、设备状态变化的数据被称为时序数据
时间序列数据特点
- 性能好:关系型数据库对于大规模数据的处理性能糟糕。
NOSQL
可以比较好的处理大规模数据,依然比不上时间序列数据库。 - 存储成本低:高效的压缩算法,节省存储空间,有效降低 IO。
官方数据:
Prometheus
有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用 3.5byte 左右空间,上百万条时间序列,30 秒间隔,保留60 天
,大概200多G。
Promethues适合场景
间,上百万条时间序列,30 秒间隔,保留 60 天
,大概200多G。
Promethues适合场景
Prometheus
非常适合记录任何纯数字时间序列。它既适合以机器为中心的监控
,也适合监控高度动态的面向服务的体系架构