上一篇(https://www.toutiao.com/i6872347945635676683/),我们简单介绍了Grafana的基本特性,基本概念和使用。这一篇我们来讲讲如何自定义一个仪表盘(Dashboard)
一、Dashboard的组成
上一篇我们已经简单介绍了下dashboard的组成,由General、Annotations、Variables、Links、Versions、Permissions、JSON Model、Pannels等组成。
二、自定义一个Dashboard(服务器内存使用趋势图)
2.1 基本信息
点击左侧的 + 号 新建 dashboard,先点击右上角的 setting按钮进行基本信息的编辑。
这里我们可以看到一个dashboard的组成,General是基本信息:
- Name:填上 第一个自定义仪表盘
- Description:描述
- Tag:标签,方便查询
- Folder:默认值General文件夹
2.2 Annotations注释
annotation一般情况中默认即可,它的主要作用是可以在事件图形上某一个点添加注释,当你悬停在一个注释上时,可以查看该注释的具体信息。
你可以在panel某一个点添加注释,也可以在某一个区域内添加注释。
在某一个点添加注释,ctrl键点击鼠标左键,添加注释描述和标签,标签可以添加多个。
2.3 Variables 条件查询
Variables用来定义是查询条件,这是比较重要且常用的功能。
变量类型
Grafana支持以下类型的变量。
- Query
用于查询生成的值列表,例如度量标准名称,服务器名称等
- Custom
使用逗号分隔的列表手动定义变量选项
- Text box
显示带有可选默认值的文本输入字段。
- Constant
定义一个隐藏常量。
- Data source
快速切换整个仪表板的数据源
- Interval
间隔变量表示时间跨度
- Ad hoc filters
自动添加到数据源的所有指标查询的键/值过滤器(InfluxDB,Prometheus和Elasticsearch数据源支持)
- Global variables
可以在查询编辑器中的表达式中使用的内置变量。
- Chained variables
变量查询可以包含其他变量。
Query variable
- label_names():返回标签名称的列表。特别指出 __name__ 表示label的名称
- label_values(label):返回label每个指标中标签值的列表。
- label_values(metric, label):返回label指定指标中的标签值的列表。
- metrics(metric):返回与指定metric正则表达式匹配的指标列表。
- query_result(query):返回的Prometheus查询结果列表query。
有了上面的基本知识,以prometheus数据源为例,我们来定义一个变量,用于显示所有的主机列表:
变量类型type:Query,表示从数据源进行查询
Query的表达式为:
label_values(node_uname_info, instance)
这个表达式的意思是从node_uname_info 这个指标返回instance标签的值,node_uname_info 这个指标是从node_exporter从采集到的。
2.4 Links 外链
外链比较简单,跳过
2.5 保存dashboard
2.6 增加Panel及图表
定义panel及图表
(1 - avg(irate(node_cpu_seconds_total{instance=~"$node",mode="idle"}[5m])) by (instance))*100
这个表达式是prometheus的语法,大概意思是从cpu使用指标:node_cpu_seconds_total,按instance标签和mode标签查询到每台主机的5分钟的平均空闲率,并且按照主机合并,最后用100减去空闲率得到cpu总使用率
(node_cpu_seconds_total的使用率是按user,system区分,总使用率也可以用user+system相加得到)
保存后,查看最终效果
是不是很简单呢?当然这只是一个很简单的例子,如果你对prometheus的基本概念及基本的PromQL熟悉的话,相信你一定可以很快的自定义出来自己想要的dashboard。
本文暂时没有评论,来添加一个吧(●'◡'●)