grafana使用中遇到的一些坑

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

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的数据一直渲染不出来,如下图所示


grafana无法加载数据

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


prometheus路径不对

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

正确配置示意图

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Prometheus 是什么? Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由Soun...
    上弦月Tt阅读 10,855评论 1 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 宋燕珠阅读 213评论 0 1
  • 你有看到一匹马吗? 一匹全身雪白的马 那是我的白马 我要骑着他去童话镇 迎娶我的姑娘 你知道,蒲公英的家吗? 就是...
    镜愚阅读 314评论 2 5
  • 一月,我离开了 ...
    Mr丶千枭阅读 249评论 0 0