searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

通过gzip协议上报prometheus监控数据,实现网络传输优化

2023-08-11 10:11:11
113
0

项目背景:

项目上有一个agent,负责归集局域网中各类exporter的数据,再统一被prometheus拉取。

统一归集后,简化了局域网的暴露面,但同时暴露了一个问题:prometheus单次拉取数据量过大。每次拉取的数据量都在100M左右,占用了宝贵的带宽资源。

 

思路:

通过cpu资源置换带宽资源。在发送http包数据前,利用agent所在机器的cpu,对发送数据进行压缩。到达prometheus后,再利用prometheus所在机器的cpu进行解压。这样,带宽资源得到了明显的释放。

 

试验数据比对与整理:

1.通过直接curl agent,知道指标量大小为138M
 
2.观测prometheus拉agent的用时,大概为30秒
 
3..通过对prometheus的指标监控,得到prometheus的网络流入量为325K/s。
 
4.计算得出:prometheus30秒内流入量为325k/s*30s=9.75M流量。(忽略机器的其他数据流入量。如果考虑其他数据流入量,其真实压缩率会更高)
 

通过以上步骤得到giz压缩比:138M/9.75M=14.14倍

(prometheus pull exporter的时候,header会设置为:Accept-Encoding: gzip, deflate)

 
数据从agent到prometheus wal的完整链路:
 
agent-->http/https(gzip)-->prometheus解码-->prometheus wal压缩
138M            9.75M             138M                        小于9.75M(prometheus自身拥有更高的压缩率)
 
gzip协议说明:
1.gzip的压缩率是可以设置等级的,但并不是等级越高,压缩效果就越好。如果不是有苛刻要求,用默认等级即可;
 
2.gzip的压缩效果,也和文本内容相关。如果文本中相似内容越多,压缩率会越高。
 
0条评论
0 / 1000
邓****烨
4文章数
0粉丝数
邓****烨
4 文章 | 0 粉丝
原创

通过gzip协议上报prometheus监控数据,实现网络传输优化

2023-08-11 10:11:11
113
0

项目背景:

项目上有一个agent,负责归集局域网中各类exporter的数据,再统一被prometheus拉取。

统一归集后,简化了局域网的暴露面,但同时暴露了一个问题:prometheus单次拉取数据量过大。每次拉取的数据量都在100M左右,占用了宝贵的带宽资源。

 

思路:

通过cpu资源置换带宽资源。在发送http包数据前,利用agent所在机器的cpu,对发送数据进行压缩。到达prometheus后,再利用prometheus所在机器的cpu进行解压。这样,带宽资源得到了明显的释放。

 

试验数据比对与整理:

1.通过直接curl agent,知道指标量大小为138M
 
2.观测prometheus拉agent的用时,大概为30秒
 
3..通过对prometheus的指标监控,得到prometheus的网络流入量为325K/s。
 
4.计算得出:prometheus30秒内流入量为325k/s*30s=9.75M流量。(忽略机器的其他数据流入量。如果考虑其他数据流入量,其真实压缩率会更高)
 

通过以上步骤得到giz压缩比:138M/9.75M=14.14倍

(prometheus pull exporter的时候,header会设置为:Accept-Encoding: gzip, deflate)

 
数据从agent到prometheus wal的完整链路:
 
agent-->http/https(gzip)-->prometheus解码-->prometheus wal压缩
138M            9.75M             138M                        小于9.75M(prometheus自身拥有更高的压缩率)
 
gzip协议说明:
1.gzip的压缩率是可以设置等级的,但并不是等级越高,压缩效果就越好。如果不是有苛刻要求,用默认等级即可;
 
2.gzip的压缩效果,也和文本内容相关。如果文本中相似内容越多,压缩率会越高。
 
文章来自个人专栏
alogic
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0