关于 prometheus HA 架构的方案

2019-09-19 21:10:02 +08:00
 plko345

当前方案

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

存在的问题

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

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

其它方案

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

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

6271 次点击
所在节点    Linux
29 条回复
derek80
2019-09-19 21:19:00 +08:00
两台 prometheus 无法保证采集时间同步,可以尝试开启 黏性 Session,或者查询时混合数据。
0NF09LJPS51k57uH
2019-09-19 21:30:18 +08:00
你这个规模,thanos 可以解决问题,thanos 会对两个 sidecar 传来的数据进行汇聚。
Takamine
2019-09-19 21:37:50 +08:00
最近搞不好也有这个需求,插眼学习。
plko345
2019-09-19 21:48:11 +08:00
@derek80 黏性 session 是参数吗,我了解看看。查询混合数据。。。
zhoulouzi
2019-09-19 23:24:24 +08:00
Thanos 在你的环境能落地吗,Thanos 就现在的方案,感觉带来的问题,比解决的问题多
plko345
2019-09-19 23:36:35 +08:00
@zhoulouzi 还在看, 初步了解还不错, 坑什么的还没发现
yeya24
2019-09-19 23:49:03 +08:00
@zhoulouzi 能不能说说大概为什么现在的方案问题比较大?如果只需要保证 grafana 查询的话,只需要用到 querier 和 sidecar,目前基本是没有问题的,这两个组件比较稳定了。目前的坑主要是在对象存储上,thanos store 占用的 memory 非常高。
EPr2hh6LADQWqRVH
2019-09-19 23:49:09 +08:00
HA 和 LB 还是有点区别的,传统上来讲 HA 的话,keepalived 虚 IP 就能行了
yeya24
2019-09-19 23:50:31 +08:00
@plko345 他说的 session affinity 是 k8s service 的那个吧?我看你好像不是 k8s 环境
zhoulouzi
2019-09-20 00:51:53 +08:00
@plko345 @yeya24 个人觉得 m3db 是最适合国内的环境,可以持续关注下。
0NF09LJPS51k57uH
2019-09-20 08:28:49 +08:00
@zhoulouzi m3db 性能一般,我们团队压过,如果规模小可以上。
scukmh
2019-09-20 09:03:43 +08:00
插眼学习一下,搞不好最近也得搞这个
plko345
2019-09-20 17:41:42 +08:00
@yeya24 对, 不在 K8S 环境, 不过也要考虑下
plko345
2019-10-04 10:39:06 +08:00
@derek80
@phantomzz
@scukmh

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/602307

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX