1、Prometheus特性:
- 基于时间序列模型:时间模型是一系列有序的数据,通常等时间间隔采样数据
- 基于K/V的数据模型:键值对,速度快
- 采样数据使用数学公式:完全基于数学运算而不是其他表达式,并提供查询的窗口
- 采用HTTP pull/push两种对应数据的采集传输方式
- 开源,且有大量的社区插件
- 最精细的数据采样:prometheus理论上可以达到没1秒采集1次(采集间隔越短,采集数据量越大)
2、prometheus不足:
- 目前不支持集群化
- 偶发数据丢失(2.0之前版本)
3、prometheus的数据存储
- prometheus采用时间序列的方式,以一种自定义格式存放在本地磁盘上。
- prometheus的本地时间序列数据库以每小时为间隔来分
块
存储,每一个块
又分为多个chunk
文件,chunk
文件就是用来存储,采集过来的数据,metadata和索引文件。 - prometheus平时采集过来的数据,会先放到内存中,类似缓存的方式用于加快搜索和访问。
- 当出现宕机时,prometheus有一个保护机制叫做
WAL
,可以将数据定时存放到磁盘中,并在重启时,用于恢复数据到内存中。
4、prometheus两种采集方式:
- pull:主动拉取的形式
- push:被动推送的形式
pull: 指被监控端安装已有的exporters
插件,exporters
只负责采集数据,而prometheus服务端主动拉取exporters
采集的数据。
push:指被监控端主动推送数据到服务端,需要安装官方psuhgateway
插件