备份并查看⼀段时间的Prometheus数据
在 TiDB ⾥⾯,我们使⽤ Prometheus 作为我们 Monitor ⼯具,然后使⽤ Grafana 展⽰,这套解决⽅案应该是现在⾮常流⾏的,功能也很强⼤,很多问题,我们不需要登录到问题机器,直接看 metric 就能够定位。⼀切都很美好,直到我们发现了⼀个严重的问题 - 有些⽤户,只有内⽹环境,我们看不到监控。。。
因为我们没法看到监控,所以如果⽤户那边出现了问题,就会⾮常的⿇烦,通常我们会使⽤ TeamViewer,但 TeamViewer 有⼏个问题,⼀个就是⽹速有时候会很慢,操作⼏次之后,⼤家都会崩溃的。另外就是客户不能⽤这台机器⼲事情了,有时候他们不愿意。
另⼀种⽅案,就是使⽤,然后直接指导⽤户,『 ⿇烦帮我把这个 metric 给截图⼀下,⿇烦再给那个 metric 给截图下』不⽤说,让⽤户这么⼲⼏次,如果我是⽤户,我也会发飙了。
所以我们需要有⼀套机制,能⾮常好的帮我们⾃动收集所有的 metrics。
PDF Exporter
最开始,我们使⽤的是直接将 Grafana 上⾯的⾯板按照 PDF 格式直接导出,譬如使⽤ Reporter,不过这个库需要安装 pdflatex,但这在⽤户那边是不可能的,所以我们稍微做了改进,⽤了 gopdf 来⽣成 PD
F,⼤概样⼦类似这样:
使⽤这种⽅式虽然能快速的⽣成 metrics 的 PDF,但有⼀个问题就是展⽰的 metrics 是静态的,我们不能⽤选择某⼀个曲线进⾏⾼亮展⽰,或者是重新选择⼀段区间进⾏更细化的展⽰。
teamviewer
为了解决这个问题,我们其实需要考虑的是将 Prometheus 的数据给拿出来,重新导⼊到我们本地的 Prometheus ⾥⾯,然后⽤ Grafana 展⽰。Prometheus 提供了 snapshot 的功能,能⽀持将 Prometheus 的数据给 dump 出来,但这个功能会 dump 所有的 Prometheus 数据,⽽我们的数据通常都⾄少保留 15 天,所以这个 dump 出来的数据实在是太⼤了,根本不可能这么做。
Remote Storage
对于我们来说,其实是不需要 dump 出来 Prometheus 所有的数据的。因为我们只需要是排查错误,通常只会关⼼⼀段时间的 metrics 变化,所以只需要将那⼀段时间的 metrics 数据给弄出来就可以了,⽽且因为时间不会很长,数据量不会特别⼤。但不幸的是,Prometheus 并不提供这样的机制。
虽然 Prometheus 不提供,但不代表我们不能做。Prometheus 提供了⼀套 Remote Storage API,能让 Prometheus 对 remote storage 进⾏读写,参考官⽹:
⽰出来,不过因为只有⼀段时间的数据,所以超过这段时间的范围了,就不能查询了。
⼩结
上⾯只是我的⼀个简单尝试,如果有更好的办法,欢迎联系我,我的邮箱 **************

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。