首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
宝塔
V2EX  ›  Linux

关于 prometheus HA 架构的方案

  •  
  •   plko345 · 58 天前 · 2225 次点击
    这是一个创建于 58 天前的主题,其中的信息可能已经有所发展或是发生改变。

    当前方案

    现在使用的是两个 prometheus 节点(配置完全相同), 存储 influxdb, 前端 nginx 负载均衡

    存在的问题

    1. 两个节点的数据不完全一样, 图表展示的时候, 刷新前后的趋势图有点差别, 有点差别还挺明显
    2. 当我尝试弄挂掉一个节点, 重启时(节点还没完全可用), dashboard 中的图表中, 有的有数据, 有的显示 请求失败

    本以为存储在 influxdb 读的数据是一致的, 但现在看来并不是

    其它方案

    1. nginx 的 upstream 中设置 ip_hash 之类的, 用来解决问题 1, 但感觉也不靠谱
    2. Thanos 方案, 但了解的还不够多, 感觉能解决问题 2, 但不确定能否解决问题 1

    请问各位公司里是怎么处理这两个问题的?

    25 回复  |  直到 2019-10-14 20:34:47 +08:00
        1
    derek80   58 天前
    两台 prometheus 无法保证采集时间同步,可以尝试开启 黏性 Session,或者查询时混合数据。
        2
    phantomzz   58 天前 via Android
    你这个规模,thanos 可以解决问题,thanos 会对两个 sidecar 传来的数据进行汇聚。
        3
    Takamine   58 天前 via Android
    最近搞不好也有这个需求,插眼学习。
        4
    plko345   58 天前 via Android
    @derek80 黏性 session 是参数吗,我了解看看。查询混合数据。。。
        5
    zhoulouzi   58 天前
    Thanos 在你的环境能落地吗,Thanos 就现在的方案,感觉带来的问题,比解决的问题多
        6
    plko345   58 天前
    @zhoulouzi 还在看, 初步了解还不错, 坑什么的还没发现
        7
    yeya24   58 天前
    @zhoulouzi 能不能说说大概为什么现在的方案问题比较大?如果只需要保证 grafana 查询的话,只需要用到 querier 和 sidecar,目前基本是没有问题的,这两个组件比较稳定了。目前的坑主要是在对象存储上,thanos store 占用的 memory 非常高。
        8
    avastms   58 天前
    HA 和 LB 还是有点区别的,传统上来讲 HA 的话,keepalived 虚 IP 就能行了
        9
    yeya24   58 天前
    @plko345 他说的 session affinity 是 k8s service 的那个吧?我看你好像不是 k8s 环境
        10
    zhoulouzi   58 天前
    @plko345 @yeya24 个人觉得 m3db 是最适合国内的环境,可以持续关注下。
        11
    phantomzz   58 天前
    @zhoulouzi m3db 性能一般,我们团队压过,如果规模小可以上。
        12
    scukmh   58 天前
    插眼学习一下,搞不好最近也得搞这个
        13
    plko345   58 天前
    @yeya24 对, 不在 K8S 环境, 不过也要考虑下
        14
    plko345   44 天前
    @derek80
    @phantomzz
    @scukmh

    请问下, 你们的公司内部有写一些适合开发接入 Prometheus 的类似中间件的吗? 有同事说要写个工具方便他们接入, 要不每次都要写个 exporter, 可是我开发个工具不是也是要制定一些规范吗, Prometheus 已经都做好了
        15
    phantomzz   42 天前
    @plko345 官方提供的 client lib 已经非常方便了,我们自己写的 exporter 也都是基于 client-java 和 client-go,基本我们用的中间件,官方和社区都已经提供了 prometheus metrics。
        16
    phantomzz   42 天前
    @plko345 不是很理解你们的场景,但是有个思路是用 client-go 写一个脚本执行器,让它去调用比如 python 脚本,约定好脚本输出,由脚本执行器解析为 prometheus metrics,这样每次定义新型的 metrics 只需要写脚本就可以了。
        17
    nobody123123   39 天前
    thanos 有没有人用过的?
        18
    nobody123123   39 天前
    @nobody123123 目前的开源的高可用方案中,感觉 thanos 算是比较靠谱的啊。 尝试过 remote write 到 es, 然后再从 es 中 remote read,效率太低了,数据存储效率下降 1-2 个数量级
        19
    plko345   38 天前 via Android
    @nobody123123 我们用阿里云的 influxdb, 不过阿里云的读写限制让人头疼
        20
    nobody123123   38 天前
    @plko345 influxdb 集群版貌似不开源的吧。 昨天对比了 thanos 和 cortex。 貌似 cortex 对多租户的支持比较理想。grafana cloud 的 sass 版的 prometheus 应该用的就是这个。thanos 还是更适合用作集团内部的 prometheus 方案。目前这两者不知道国内有没有公司在用的
        21
    nobody123123   38 天前
    Thanos
        22
    plko345   35 天前
    @nobody123123
    @phantomzz

    你们用的 thanos 的存储方案是什么? 好像 thanos 不支持管理写入 influxdb 等时序数据库, 如果它管理存储好像是存到对象存储的(如 s3, oss 等)

    这是我了解到的, 你们是这样吗?
        23
    phantomzz   34 天前
    @plko345 就是 prometheus,thanos 只是 prometheus 的 query 层,初期我们调研了很多时间序列数据库,influxdb(集群收费),TimescaleDB, FiloDB,cortex
        24
    plko345   34 天前 via Android
    @phantomzz 可是官方文档并不建议使用 prometheus 本地存储,而且我们之前使用也遇到了不少问题,才买了阿里的 influxdb,但是有读写限制,用的也难受
        25
    phantomzz   33 天前
    @plko345 能买的起阿里云说明你们规模应该不太大吧,我觉得只要规模没大到一定程度,用哪种数据库区别应该不会太大…我们现在接近 100W 的 scrape targets...上不起云,哈哈
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2258 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 10:06 · PVG 18:06 · LAX 02:06 · JFK 05:06
    ♥ Do have faith in what you're doing.