prometheus高可用解决方案(VictoriaMetrics )

1、方案选型

prometheus常见的高可用方案有两种:

VictoriaMetrics

(VM) 相比 Thanos (灭霸) 。这里我选择了VictoriaMetrics ,因为它更加轻量,性能更好。

详细对比如下:

对比项VictoriaMetricsThanos
架构复杂度轻量:单体架构,核心功能都封装在一个二进制文件中;资源消耗低复杂:模块化架构,功能被拆分成多个组件
查询效率高:直接对存储的数据进行查询,路径较短,延迟低,采用了高效的索引机制和预计算缓存,可以快速响应查询请求低: 在进行全局查询时,需要聚合来自多个 Prometheus 实例的数据,这种分布式查询需要协调和汇总,增加了复杂性和延迟

选型: 综合考虑选择VictoriaMetrics 作为prometheus高可用方案

2、实现原理

VictoriaMetrics 可以从多个 Prometheus 实例接收数据,并根据配置进行去重,确保数据的一致性;

在使用 VictoriaMetrics 时,数据去重通常是在查询时进行的,而不是在写入时。VictoriaMetrics 支持通过配置标签的方式来实现数据去重,从而保证在从多个 Prometheus 实例收集数据时,查询结果不会出现重复数据。这种数据去重的配置方式类似于 Thanos 的去重机制。

数据去重的目的是处理多个 Prometheus 实例同时采集同一组指标数据的情况,防止在查询时出现重复的时间序列。通常,我们会为每个 Prometheus 实例添加一个唯一的标签(如 replica 标签),以区分来自不同实例的数据。然后,在查询时,VictoriaMetrics 可以忽略这些标签,从而实现去重

3、配置说明

例如,如果有两个 Prometheus 实例,分别命名为 prometheus-A 和 prometheus-B,您可以在每个实例的配置文件中这样设置:

global:
  scrape_interval: 15s
  external_labels:
    replica: prometheus-A  # 对于 Prometheus A 实例
------------------------------------------------
global:
  scrape_interval: 15s
  external_labels:
    replica: prometheus-B  # 对于 Prometheus B 实例

配置远程写入(两个节点都要配置)

remote_write:
  - url: "http://victoriametrics:8428/api/v1/write"
    queue_config:
      max_samples_per_send: 10000
      capacity: 25000

VictoriaMetrics配置查询去重

deduplication.label=replica

重启服务

vmalert配置告警:vmalert去对接alertmanager

./vmalert \
  -rule=/path/to/rules.yml \
  -datasource.url=http://victoriametrics:8428 \
  -notifier.url=http://alertmanager:9093 \
  -remoteWrite.url=http://victoriametrics:8428/api/v1/write
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值