Grafana界面制作教程
一、Grafana开始
Grafana介绍
Grafana是一个开源的可视化与分析平台,主要用于监控数据的展示。它能从多种数据源(Prometheus、Elasticsearch、MySQL、Loki、InfluxDB 等)获取数据,并通过图表、仪表盘的方式直观展示。
Grafana的主要功能:
1.多数据源支持
- 支持 Prometheus、InfluxDB、Elasticsearch、MySQL、PostgreSQL、CloudWatch、Loki 等几十种数据源。
2.丰富的可视化 - 折线图、柱状图、饼图、热力图、Gauge(仪表盘)、Stat 卡片等。
- 支持交互式筛选、下钻、时间范围切换。
3.Dashboard(仪表盘) - 可以创建多个面板(Panel),组合成仪表盘,适合 运维监控大屏。
- 可以从Grafana官方Dashboard Marketplace下载别人分享的模板。
4.告警功能 - Grafana自身支持告警规则(Alerting),可以对接邮件、Slack、钉钉、飞书、Webhook等通知渠道。
5.权限与多租户 - 支持用户、团队、角色管理。
- 可以针对不同用户/团队分配不同的仪表盘访问权限。
6.插件生态 - 支持数据源插件、可视化插件、应用插件。
- 比如地图可视化(GeoMap)、时序数据库插件等。
Grafana安装
普通安装
下载安装包,这里以CentOS系统为例。
wget https://dl.grafana.com/oss/release/grafana-8.3.3-1.x86_64.rpm
安装grafana安装包,再启动并设置开机自启动服务。
yum -y install grafana-8.3.3-1.x86_64.rpm
systemctl enable grafana-server --now
默认的启动配置环境变量位于/etc/sysconfig/grafana-server文件中。
$ cat /etc/sysconfig/grafana-server
GRAFANA_USER=grafana
GRAFANA_GROUP=grafana
GRAFANA_HOME=/usr/share/grafana
LOG_DIR=/var/log/grafana
DATA_DIR=/var/lib/grafana
MAX_OPEN_FILES=10000
CONF_DIR=/etc/grafana
CONF_FILE=/etc/grafana/grafana.ini
RESTART_ON_UPGRADE=true
PLUGINS_DIR=/var/lib/grafana/plugins
PROVISIONING_CFG_DIR=/etc/grafana/provisioning
# Only used on systemd systems
PID_FILE_DIR=/var/run/grafana
docker安装
创建grafana的工作目录。
mkdir -p /data/grafana
在工作目录下编辑compose文件。
# /data/grafana/docker-compose.yaml
services:
grafana:
image: grafana/grafana:12.2.0-17449462949
container_name: grafana
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
ports:
- 3000:3000
volumes:
- ./grafana_data:/var/lib/grafana
使用docker compose启动服务。
docker compose up -d
二、面板介绍
面板(Panel)是Grafana中基本可视化构建块,每个面板都有一个特定于面板中选择数据源的查询编辑器,每个面板都有各种各样的样式和格式选项,面板可以在仪表板上拖放和重新排列,它们也可以调整大小。
目前内置支持的面板包括:
Time series(时间序列)是默认的也是主要的图形可视化面板、State timeline(状态时间表)状态随时间变化 、Status history(状态历史记录)、Bar chart(条形图)、Histogram(直方图)、Heatmap(热力图)、Pie chart(饼状图)、Stat(统计数据)、Gauge、Bar gauge、Table(表格)、Logs(日志)、Node Graph(节点图)、Dashboard list(仪表板列表)、Alert list(报警列表)、Text panel(文本面板,支持 markdown 和 html)、News Panel(新闻面板,可以显示 RSS 摘要)等。
通过官网获取安装其他面板使用:https://grafana.com/grafana/plugins/?type=panel
图表
对于基于时间的折线图、面积图和条形图。
默认的Time series时间序列进行可视化,如下图所示:

对于分类数据,则使用Bar Chart条形图可视化,如下图所示:

数据统计
数据统计相关的可视化可以使用Stat面板进行可视化,我们可以使用阈值或色标来控制背景或值颜色,如下图所示:

仪表盘
想显示与最小值和最大值相关的值,则有两个选择。
首先是如下所示的标准径Gauge面板,如下图所示:

其次Grafana还具有水平或垂直Bar gauge(条形仪表面板),具有三种不同的不同显示模式,如下图所示:

表格
在表格布局中显示数据,需要使用Table表格面板进行可视化,如下图所示:

饼状图
使用Pie Chart实现饼状图面板可视化,如下图所示:

热力图
显示值分布,请使用Heatmap热力图面板可视化,如下图所示:

三、创建图形面板
面板是属于某一个Dashboard的,在创建面板之前,我们需要先创建一个Dashboard,然后在Dashboard中创建面板。
1.开始创建面板
创建Dashboard,如下图所示:

在默认创建的新的Dashboard中就有一个空的面板,点击添加创建。

2.设置面板属性
我们可以在右边配置面板的一些属性,比如:标题、说明、面板的类型等,然后就是关键部分选择数据源,再编写查询的promql语句来展示图形数据,如下图所示:

编辑完成之后保存就可以看到在Dashboard中出现了一个面板视图,如下图所示:

同样的操作我们就可以再添加一个其他指标的面板视图,如下图所示。

通过这种方式我们就可以根据自己需求来创建一个自己所需要的Dashboard监控页面了。
3.添加参数选项
我们看到的监控信息是所有节点的信息展示在同一个面板中,随着节点的增加,数据量也会越来越大,这样看起来也不太方便。可以通过将job和节点当成参数,进行配置选项,可以让用户选择要查看哪个job下的哪个节点的监控信息。
设置选项参数
通过右上角的settings按钮进入配置页面,如下图所示:

进入之后没有变量就新添加一个变量,如下图所示:

再在Variables选项中添加变量,我们需要定义一个名为job的变量用于选择分组,如下图所示:


我们再定义一个名为instance的变量用于选择某个节点,如下图所示:


变量的属性配置列表:
Name:变量名,在仪表盘中调用使用$变量名的方式。Type:变量类型,变量类型有多种,其中query表示这个变量是一个查询语句。Hide:为空是表现为下拉框,选择 label 表示不显示下拉框的名字,选择 variable 表示隐藏该变量,该变量不会在 Dashboard 上方显示出来,默认选择为空。Data source:查询语句的数据源。Refresh:何时去更新变量的值,变量的值是通过查询数据源获取到的,但是数据源本身也会发生变化,所以要时不时的去更新变量的值,这样数据源的改变才会在变量对应的下拉框中显示出来。Refresh 有两个值可以选择:On Dashboard Load(在 Dashboard 加载时更新)、On Time Range Change(在时间范围变更的时候更新)。Query:查询表达式,不同的数据源查询表达式都不同。Regex:正则表达式,用来对抓取到的数据进行过滤,默认不过滤。Sort:排序,对下拉框中的变量值做排序,默认是 disable,表示查询结果是怎样下拉框就怎样显示。Multi-value:启用这个功能,变量的值就可以选择多个,具体表现在变量对应的下拉框中可以选多个值的组合。Include All option:启用这个功能,变量下拉框中就多了一个全选 all 的选项。
回到Dashboard页面可以看到多了两个下拉选项,如下图所示:

变量传入查询语句
面板的数据不会随着我们选择下拉框选项节点的变化而变化,需要我们将刚刚创建的变量传入到查询语句中。
我们可以通过instance变量进行过滤查询,比如:instance=~"$instance",这里的$instance就是之前我们所创建的参数变量名。
之前的查询promql,如下所示:
(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100
修改之后的查询promql,如下所示:
(node_memory_MemTotal_bytes{instance=~"$instance"} - node_memory_MemAvailable_bytes{instance=~"$instance"}) / node_memory_MemTotal_bytes{instance=~"$instance"} * 100
修改了之后我们可以在左上角的选项框选择分组和节点选择进行调试,如下图所示:

选择某个节点,如下图所示:

CPU使用率的图形面板一样的设置,设置如下:
之前的查询promql,如下所示:
100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
修改之后的查询promql,如下所示:
100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle",instance=~"$instance"}[5m])) * 100)
四、图形面板定制
多个查询
新编辑一个CPU使用率面板,在面板编辑器下方的 Query 区域点击 + Query 按钮新增一个查询,可以设置多条查询语句展示效果,如下图所示:

转换
我们通过转换功能把下面的标签名字去掉:9100端口来显示。
可以点击编辑器下方Query旁边的Transform选项卡进入转换页面,如下图所示:

Grafana中支持非常多的转换方式,我们这里使用Rename by regex这个通过正则重命名的转换器即可,如下图所示:

我们使用正则表达式来过滤我们的标签名,我们前面设置的Legend是系统({{instance}})和用户({{instance}})也就是系统(192.168.101.202:9100)和用户(192.168.101.202:9100)等内容,正则可以用(.*):9100(.*)来匹配内容,我们只需要显示除去:9100内容的$1$2就好,如下图所示:

Legend配置
可以看到Legend部分展示的图例较多,我们可以将Legend的模式修改为Table的形式,如下图所示:

修改为Table模式后可以看到图形中的Legend用表格的形式展示出来了,此外我们还可以通过Legend values来选择一些其他的信息进行展示,比如最大值、最小值、平均值等等。
设置单位
由于我们这里计算的都是百分比,所以可以将单位设置为 %,位于右侧的 Standard options下方的Unit中选择 Misc下的 Percent(0-100) 即可,如下图所示:
