利用promwrite对prometheus进行remote-write写入
内容提要
Prometheus 2.30版本增加了remote write能力,可以通过这种方式上报指标。腾讯云的cls也支持这种写入方式。文章介绍了基于go语言的remote write上报实践,使用了一个开源包。如果集群包含认证,可以使用相应代码。
延伸解读
remote write 的适用场景
文章指出,remote write 是 Prometheus 2.30 版本左右引入的指标上报方式,不同于 exporter 的拉取和 pushgateway 的推送。它可用于直接上报指标,也可将多个集群的指标汇聚到一个集群。腾讯云 CLS 的指标主题类型也支持这种写入方式,说明该能力在云服务中已有落地。
认证支持与代码选择
作者在实践中发现 castai/promwrite 包未支持认证场景,而腾讯云 CLS 默认开启认证,因此对包进行了功能扩展并提交 PR,但源仓库维护者未理会,于是作者重置了 mod,使用自己的修改版。如果集群包含认证,需使用带认证的代码,通过 BasicAuth 提供用户名和密码。
指标标签的注意事项
示例代码显示,__name__ 是保留字段,会自动作为记录的指标名,其他补充字段可在 []promwrite.Label 中添加。这意味着在构造写入请求时,需正确设置 __name__ 以指定指标名称,避免将其用作普通标签。
Q&A
Prometheus的remote write功能是什么?
Prometheus的remote write功能允许用户通过上报指标的方式,将多个集群的指标汇聚到一个集群中。
如何在Go语言中使用promwrite进行指标上报?
可以使用promwrite包创建客户端,并调用Write方法上报指标,示例代码已在文章中提供。
腾讯云的cls如何支持remote write?
腾讯云的cls支持remote write写入方式,允许用户通过该方式上报指标。
promwrite包的主要问题是什么?
promwrite包未支持认证场景,而腾讯云cls默认开启认证,因此需要进行功能扩展。
如何处理包含认证的集群的指标上报?
可以使用带认证的代码,通过HttpClientWithAuth配置用户名和密码进行上报。
__name__字段在promwrite中有什么作用?
__name__是保留字段,自动作为记录的指标名,其他字段可在[]promwrite.Label中补充。