手动部署thanos 0.12.2
前言 Prometheus不支持集群部署,在大规模场景下,Prometheus本身的性能和存储都有限(并发量过大,IO,Mem,CPU等很容易耗尽),比如通过降低采集速率,丢弃不重要指标,缩短数据保存天数等解决,不仅给运维带来了一定的麻烦,服务本身运行也带来了挑战
解决方案: (1) 对服务进行分散采集: 比如部署多个Prometheus,每个Prometheus仅采集和存储某一个或某一部分服务的指标, Pa1 ---> Sa1 ,Pa2 ---> Sa2 (2) 对服务进行分片: 将服务拆分成多个group,让一个Prometheus仅采集该服务的某一个group数据,Pa2 ---> Group1(Sa1), Pa2 ---> Group2(Sa1) (3) 使用thanos管理: 相同的 Prometheus 部署多个副本(都附带 Sidecar),然后Thanos Query去所有Sidecar查数据(下面会详解) 方案一: 联邦方式, 使用多个Prometheus分散监控服务, 一般规模足矣,若单个服务指标过多, 且副本数较高,则不适合
架构如下:
也可以使用独立存储来解决数据共享问题, OpenTSDB 或 InfluxDB 等支持集群部署的时序数据库(独立存储虽好,但不能使用PromQL)
remote_write: - url: http://server:8888/write 语法示例:
InfluxDB: SELECT mean("value") FROM "disk_io_time" WHERE $timeFilter GROUP BY time($interval), "instance" fill(null)
Prometheus: disk_io_time