1.前言
上一篇文章中,我们使用spring actuator+Prometheus+grafana实现了对一个spring boot应用的可视化监控。
其中对grafana只是打开了一下,都没做什么操作。本文我们来聊一下grafana。
Grafana 是一个开源的数据可视化和监控平台,它提供了丰富的图表、面板和仪表板功能,用于帮助用户轻松地理解、分析和监控其系统的各种指标和数据。聊grafana无非就是两个方面:
连接
图表
2.连接
先说连接,打开我们之前搭建好的grafana,点进新建连接的界面:
可以发现grafana的connection类型几乎涵盖了市面上所有的存储介质。也就是说grafana可以拿到几乎市面上所有存储介质中的数据。怎么做到的喃?来我们回忆一下上一篇文章中Prometheus的架构,注意右下角博主框红的一块儿:
图上已经写了grafana通过PromQL来访问Prometheus的,从而得到其中的数据。那其它数据库喃?那当然也是通过他们各自的SQL或者类SQL之类的指令去与他们进行交互的撒。所以首先grafan第一个厉害的点就在于一个“全”字,有几乎市面上所有数据存储介质(数据库)的driver,可以去操作几乎一切数据存储介质。
3.图表
grafana作为一个可视化工具,用它当然就是冲着它的图表来的。grafana的图表在一张张的面板里面,就像一幅幅画在画布上面。整个dashboard的管理界面很简介,也就是新建按钮、搜索框、dashboard列表组成:
新建的时候给了我们两种选项,要么新建一个,要么导一个模板进来:
add visualization,添加可视化组件:
添加组件之前首先需要确定数据源是什么,这里我们当然选择我们之前添加的Prometheus:
接下来就是在面板上画图了,既然要画图,进面板之后肯定是先选择要哪种图形组件,不同版本选择图形组建的地方不一样,博主当前用的版本是在右上角这个位置。这里我们先选择一个时间序列组件来用用:
选了组件就要配置好组件要怎么去显示数据了,也就是配置一个个的query,query的配置界面还是很简洁易懂的,下面我们配置了一个监控磁盘空间的query:
这里我们先选instance或者application来用,至于job和path,下一个章节我们会讲。
配置好以后,run queries,图表就会显示出来。
当然我们也可以配置一下刷新的时间间隔之类的:
然后就是保存,保存完了之后可以继续在面板上作画,添加其它组件,除了组件还可以添加标题之类的,根据自身需求来慢慢调整就是:
最后就是如何将grafana的dashboard导出来,我们做项目不可能监控界面还要登录进grafan里面来看对吧,还是希望是独立的数据大屏页面,这个时候直接导出dashboard即可,然后将链接复制出来插入你自己的项目中即可:
4.job和path
上面我们还留着一个尾巴没有聊,就是关于job和path。
job
在 Prometheus 中,"job" 是一个用于组织和标识一组相关的监控目标的概念。一个 job 可以包含多个监控目标,这些目标通常具有相似的功能或用途。
例如,对于一个微服务应用程序,你可能会为每个微服务定义一个独立的 job,以便将该微服务的所有实例的指标数据都组织在一起。这样做有助于对整个微服务架构进行统一的监控和分析。
在 Prometheus 的配置文件中,你可以为每个 job 指定一组监控目标(即 targets),这些目标可以是 HTTP 端点、服务发现或其他类型的监控目标。例如:
- job_name: 'my_service' static_configs: - targets: ['localhost:8080', 'localhost:8081']
Path
在 Prometheus 的配置中,"path" 通常用于指定监控目标的路径或端点,以便 Prometheus 可以从这些目标中获取指标数据。
例如,如果你的应用程序暴露了一个 /metrics 端点来提供指标数据,你可以在 Prometheus 的配置中指定该路径作为监控目标的路径。这样 Prometheus 就知道从哪里获取指标数据了。
在配置文件中,路径通常与监控目标的地址一起指定,并用于构造完整的 URL。例如:
- job_name: 'my_service' static_configs: - targets: ['localhost:8080/metrics', 'localhost:8081/metrics']
5.总结
其实到这里有没有发现,grafana和es的kibana在使用上是很像的:
【ES数据可视化】kibana实现数据大屏_怎么把kibana中的图标集成到自己的项目中-CSDN博客
所以说在面对同一个业务场景的时候,开源技术再多,其底层的实现和逻辑都会是相似的,因为打法都是一个路数,掌握这种打法路数,基本上就掌握了监控和可视化相关的所有组件,一通百通。