这张图提纲挈领,要结合流程反复观看。
1. 组件及其作用
sidecar
- StoreAPI连接Prometheus(grpc),做实时查询;
- Shipper连接object storeage(http),存储长期指标;
querier
- 实现了Prometheus API;
- StoreAPI连接sidecar,通过grpc进行短期数据查询;
- StoreAPI连接storage-gateway,通过grpc进行历史数据查询;
- 提供了一个类似prometheus的WEB UI;
store-gateway
- 暴露StoreAPI,查询object storage中的历史数据;
compactor
- 对object storage中的block数据做压缩(compactor);
- 对object storage中的指标数据做降采样(downSampling);
ruler
- 监控数据进行rule evaluation和push alert;
2. 指标写入流程
- Prometheus拉取指标数据,存储在本地的TSDB中,2hour==>1个block;
- sidecar嗅探到Prometheus的Pod在/data生成新的block,将block数据上传到object storage;
ruler:
- 根据recording rule定期向querier查询指标值,生成新的指标存储在本地的TSDB中;
- 当本地产生新的block时,将block上传到object storage;
compactor:
- 定期对ojbect storage中的block进行compact和downsampling;
- 压缩和降采样的结果,生成新的block,写入到object storage;
3. 指标查询流程
- 客户端通过QueryAPI向Querier发起查询;
- Querier将请求通过StoreAPI发送给sidecar、ruler和store;
- sidecar收到StoreAPI,发送给本地的Prometheus,返回短期的本地采集数据;
- ruler收到StoreAPI,返回rule evalation的数据;
- store收到StoreAPI,返回长期的历史数据;
4. 发送报警的流程
- prometheus实例:根据配置的alert rule进行评估,告警条件满足时发送到alertmanager;
- ruler实例:根据配置的alert rule,定期向querier发送查询请求,做告警判断,若触发告警,则发送至alertmanager;
- alertmanager实例:接收到prometheus和ruler的告警消息后,进行分组/合并,发送告警通知;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。