Advertisement

prometheus丢数据调试与处理

阅读量:

背景:

influxdb数据旁路一份到prometheus后,prometheus的图有时延时很大,主要是在业务忙的时候,闲的时候是可以处理到数据的。而influxdb的数据是可以正常显示的。而且这时牛逼的google并帮不了忙,各种关键字去搜索都找不到相关的问题。

架构

调试过程

  1. 先去prometheus的web控制台看图。初看这个图感觉是没有问题的,数据是连续的。
    prometheus_pic
    仔细看,其实直线那段是没有数据有。用grafana配到同一个prometheus来看一下grafana的图长这样
    grafana_pic
    在grafana是可以明显看到中间是丢了一段时间的。而且prometheus的图却是连续的。最开始我没有看出来。

  2. 把生产环境的docker部到自己的电脑,看控制台是没有问题的。所以猜想是生产环境的数据量过大,prometheus没处理过来引起的。
    上去生产环境抓包,
    先找一下prometheus和influxdb_exporter的ip。

复制代码
    docker exec -it prometheus ip addr show

输出如下:

prometheus用了eth0端口,ip:172.17.0.102

同样找出influxdb_exporter的ip:172.17.0.99

我们只抓这两台机器的包,免得其他的干扰:

复制代码
    tcpdump -i docker0 host 172.17.0.102 and 172.17.0.99

在13:32:28.162的时候prometheus发起握手,完了之后,发请求到influxdb_exporter拉数据
在13:32:32.112的时候influxdb_exporter发了数据包。然后prometheus接着就回了一下rst的包了。后面influxdb_exporter应该是还没收到prometheus的rst包,继续发第二段包。所以这个包prometheus是没有收到的。

找到prometheus的配置:

scrape_configs:
- job_name: ‘prometheus’
scrape_interval: 5s
static_configs:
- targets:
- “influxdb_exporter:9122”

配置了5s去influxdb_exporter抓一次数据。而prometheus发rst包的时候,差不多在4s的时间隔上。prometheus的5s配置包括了收包前后的处理和收包的过程,在13:32:32.112的时候就回rst,以免雪崩。
把配置改成10s,重新拉起服务。可以看数据正常了。

全部评论 (0)

还没有任何评论哟~