grafana使用中遇到的一些坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grafana使用中遇到的一些坑相关的知识,希望对你有一定的参考价值。

参考技术A prometheus+grafana 的系统监控方式用起来很不错,最近开始使用它来监控 haipproxy 和 weibospider 。由于网上相关的中文资料比较少,所以在使用它们的时候还是遇到很多坑。这篇文章主要提一下自己遇到的几个小坑。

1.如何显示对人类友好的时间?

有这么一个场景,我想对定时任务调度器下次调度任务的时间进行监控, Prometheus 中存储了下次调度的时间戳,数据类型是 Gauge ,但是到了 grafana 中通过 options 中的 unit 选项使用 date&time 展示出来就是 1970-01-01 xxxx 了,这个时间明显不对。后来在 github 上找到了work around的方法: 如果用的 Graphite 作为数据源,那么可以直接进行使用 scale 函数让时间戳扩大1000倍,就可以显示出正确的时间;但是 prometheus 作为数据源没这个函数,还好 prometheus 自带有一个 time() 函数,可以返回表达式计算时的时间戳,因此我显示的是举例下次任务运行的倒计时,表达式为 time()-(process_start_time_seconds) 。注意对于 Gauge 的值的选择,应该选择 current ,默认是 average

2.通过非本机访问grafana,数据一直加载失败?

这个问题困扰了我一个中午。我通过非grafana服务器访问grafana的服务的时候,prometheus的数据一直渲染不出来,如下图所示

但是通过直接在本机访问prormetheus和查询prometheus又没问题,手足无措的时候突然想到使用f12看看浏览器的资源加载情况,发现了一个问题

从上图可以看出,这里取prometheus的数据是去的 localhost:9090 ,所以问题就出在这里,我们应该在grafana的配置面板配置 data source 的时候,填写prometheus对外暴露的ip

这样就可以访问了。注意,这个过程我还遇到一个坑,就是 URL 路径末尾不能加 / ,即不能写成 http://192.168.1.11:9090/ ,否则还是无法加载数据,通过追踪它的网络请求可以发现已经被301重定向了,并且会抛出 blocked by CORS policy 错误

以上是关于grafana使用中遇到的一些坑的主要内容,如果未能解决你的问题,请参考以下文章

MySQL将时间转换为字符串(Grafana)

AWS Timestream / Grafana 查询

grafana集群配置

如何在 Grafana 7.4 中定义标签/值查询?

关于高度和宽度的 Grafana 面板错误

Grafana 条宽度太小