Monitor Prometheus 容量存储
Prometheus 的缺点 : 单机存储不好扩展
Prometheus 单机容量上限 : 每秒接收 80 万个数据点
- 当每台机器的每个周期采集 200 个系统级指标。若采集频率是 10 秒,平均每秒上报 20 个数据点,就能同时监控 4 万台
- 800000 / 20 = 40000
联邦机制
联邦机制 : Prometheus 内置的集群方式,Prometheus 数据的能通过级联抓取
联邦机制的中心端的 Prometheus 只会抓取做聚合计算或关注的指标,大部分数据都在各 Prometheus 内部
中心 Prometheus 的抓取规则 :
- metrics_path : 从 Prometheus 在 /federate 接口暴露监控数据
- honor_labels=true : 标签重复时,以源数据的标签为准
- 过滤条件中的正则匹配 : 过滤所有
aggr:
的指标
scrape_configs:
- job_name: 'federate'
scrape_interval: 30s
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
- '{__name__=~"aggr:.*"}'
static_configs:
- targets:
- '10.1.2.3:9090'
- '10.1.2.4:9090'
远程存储
Prometheus 建立了统一的 Remote Read、Remote Write 接口协议
- 只要实现该接口协议的时序库都能对接进来
- 远程存储 : VictoriaMetrics , Thanos
VictoriaMetrics
VM : 作时序库,核心组件 :
- vmstorage : 存储时序数据
- vminsert : 接收时序数据并写入到后端的 vmstorage,用 Remote Write 对接 vminsert 的地址
- vmselect : 查询时序数据,没有实现 Remote Read 接口,而实现了 Prometheus 的 Querier 接口
- n9e-webapi 通过负载均衡 , 向 vmselect 水平查询时序数据
- n9e-server 通过 Remote Write 协议 , 写数据到 vminsert 的负载均衡
- vmstorage : 存储模块,能组成集群
VM 采用 merge read 方案读取数据 :
- 过程 : 查询请求发给 vmselect 后,vmselect 向所有 vmstorage 发起查询请求,再合并结果 , 并返回给前端
- 缺点 : vmstorage 不能过大 , 10-20 台就够了
Prometheus 集群
三个 Prometheus 进程
- 两个作存储
- 一个作查询器,Remote Read 读取后端多个 Prometheus 的数据
配置实现 :
remote_read:
- url: "http://prometheus01:9090/api/v1/read"
read_recent: true
- url: "http://prometheus02:9090/api/v1/read"
read_recent: true