现在使用的是两个 prometheus 节点(配置完全相同), 存储 influxdb, 前端 nginx 负载均衡
本以为存储在 influxdb 读的数据是一致的, 但现在看来并不是
1
derek80 2019-09-19 21:19:00 +08:00
两台 prometheus 无法保证采集时间同步,可以尝试开启 黏性 Session,或者查询时混合数据。
|
2
0NF09LJPS51k57uH 2019-09-19 21:30:18 +08:00 via Android
你这个规模,thanos 可以解决问题,thanos 会对两个 sidecar 传来的数据进行汇聚。
|
3
Takamine 2019-09-19 21:37:50 +08:00 via Android
最近搞不好也有这个需求,插眼学习。
|
5
zhoulouzi 2019-09-19 23:24:24 +08:00
Thanos 在你的环境能落地吗,Thanos 就现在的方案,感觉带来的问题,比解决的问题多
|
7
yeya24 2019-09-19 23:49:03 +08:00
@zhoulouzi 能不能说说大概为什么现在的方案问题比较大?如果只需要保证 grafana 查询的话,只需要用到 querier 和 sidecar,目前基本是没有问题的,这两个组件比较稳定了。目前的坑主要是在对象存储上,thanos store 占用的 memory 非常高。
|
8
EPr2hh6LADQWqRVH 2019-09-19 23:49:09 +08:00
HA 和 LB 还是有点区别的,传统上来讲 HA 的话,keepalived 虚 IP 就能行了
|
11
0NF09LJPS51k57uH 2019-09-20 08:28:49 +08:00
@zhoulouzi m3db 性能一般,我们团队压过,如果规模小可以上。
|
12
scukmh 2019-09-20 09:03:43 +08:00
插眼学习一下,搞不好最近也得搞这个
|
14
plko345 OP |
15
0NF09LJPS51k57uH 2019-10-06 08:17:43 +08:00
@plko345 官方提供的 client lib 已经非常方便了,我们自己写的 exporter 也都是基于 client-java 和 client-go,基本我们用的中间件,官方和社区都已经提供了 prometheus metrics。
|
16
0NF09LJPS51k57uH 2019-10-06 08:20:24 +08:00
@plko345 不是很理解你们的场景,但是有个思路是用 client-go 写一个脚本执行器,让它去调用比如 python 脚本,约定好脚本输出,由脚本执行器解析为 prometheus metrics,这样每次定义新型的 metrics 只需要写脚本就可以了。
|
17
nobody123123 2019-10-09 13:47:07 +08:00
thanos 有没有人用过的?
|
18
nobody123123 2019-10-09 13:49:07 +08:00
@nobody123123 目前的开源的高可用方案中,感觉 thanos 算是比较靠谱的啊。 尝试过 remote write 到 es, 然后再从 es 中 remote read,效率太低了,数据存储效率下降 1-2 个数量级
|
19
plko345 OP @nobody123123 我们用阿里云的 influxdb, 不过阿里云的读写限制让人头疼
|
20
nobody123123 2019-10-10 09:30:29 +08:00
@plko345 influxdb 集群版貌似不开源的吧。 昨天对比了 thanos 和 cortex。 貌似 cortex 对多租户的支持比较理想。grafana cloud 的 sass 版的 prometheus 应该用的就是这个。thanos 还是更适合用作集团内部的 prometheus 方案。目前这两者不知道国内有没有公司在用的
|
21
nobody123123 2019-10-10 09:36:48 +08:00
Thanos
|
22
plko345 OP @nobody123123
@phantomzz 你们用的 thanos 的存储方案是什么? 好像 thanos 不支持管理写入 influxdb 等时序数据库, 如果它管理存储好像是存到对象存储的(如 s3, oss 等) 这是我了解到的, 你们是这样吗? |
23
0NF09LJPS51k57uH 2019-10-14 08:38:55 +08:00
@plko345 就是 prometheus,thanos 只是 prometheus 的 query 层,初期我们调研了很多时间序列数据库,influxdb(集群收费),TimescaleDB, FiloDB,cortex
|
24
plko345 OP @phantomzz 可是官方文档并不建议使用 prometheus 本地存储,而且我们之前使用也遇到了不少问题,才买了阿里的 influxdb,但是有读写限制,用的也难受
|
25
0NF09LJPS51k57uH 2019-10-14 20:34:47 +08:00
@plko345 能买的起阿里云说明你们规模应该不太大吧,我觉得只要规模没大到一定程度,用哪种数据库区别应该不会太大…我们现在接近 100W 的 scrape targets...上不起云,哈哈
|
27
plko345 OP @derek80 @phantomzz 你好, 使用黏性会话解决了数据一致的问题, grafana 请求的时候始终会去访问其中一台 prometheus, 但有两个问题
1. grafana 上所有图表都会去这台 prom 上查询, 但如果出现大查询, 负载都在这台 prom 上, 内存占用很高, 会出现 OOM 危险 2. grafana 的所有查询请求都是以 grafana server 的 cookie 为准, 而用户是通过 grafana server 间接的请求, 因此 cookie 始终只有一个, 所有用户的查询都会发往一台 prom, 这也很危险... 请问你们是否遇到类似的问题, 我搜索了相关的情况, 但都没有比较好的解决方案, 目前做了限制查询量来防止比较大的查询导致的 OOM PS: 我目前还不太想使用 thanos |
28
0NF09LJPS51k57uH 2020-01-21 19:19:50 +08:00
@plko345 我们现在存储已经不再用 prometheus 了,prometheus 只作为采集节点,remote storage victoriametrics。
|