Grafana系列之Dashboard:新增仪表板、新增变量、过滤变量、变量查询、导入仪表板、变量联动、Grafana Alert
概述
关于Prometheus和Grafana的安装,略过。
写在前面
- Dashboard:仪表板,可包含多个Panel
- Panel:面板,Dashboard中的组件
如有写得不对的地方,烦请指出。
新增仪表板
点击右上角的

选择New dashboard,

备注:上图自有探索->自由探索。
自由探索
点击Add visualizaton,出现选择数据源界面,

如上图所示,一个Grafana可以新增多个Prometheus数据源。选择Prometheus数据源,然后出现如下视图

点击Code,输入http_server_requests,Grafana有自动补齐提示,也就是说,我们现在是在Grafana里写PromQL。
选择不同的数据源,写的Code不一样,如果选择的是Loki,则写Code时需要遵从LogQL语法(计划会另写一篇博客)。
勾选Explain,下面会出现关于code的解释,比如下面的1 Fetch all series matching metric name and label filters.,翻译过来就是抓取所有满足指标名称和标签过滤符的序列

变量
在Grafana中,用户可为仪表板定义一组变量(Variables),变量一般包含一个到多个可选值。通过将变量渲染为一个下拉框,使用户可动态地调整变量的值,进而查询不同标签(Tag)下的数据,从而实现分组(Group by)效果
在仪表板右上角,点击Settings,会发现若干个Tab标签页,其中第三个Variables就是变量

点击新增变量

变量是仪表板全局生效的,一个仪表板如果有多个面板,则全部面板都会复用这个变量,也就是说,放在一个仪表板里的多个面板最好是强相关的(能复用这些变量的,负责查询面板会出现No Data问题)。
变量过滤
以http_server_requests(参考Grails应用http.server.requests指标数据采集问题排查及解决)这个Micrometer默认暴露出来的指标为例,在Prometheus Graph页面查询此指标时,有如下图所示几个标签组(注意,下文会使用这个数据):
- container:容器,表示是Pushgateway采集的
- endpoint:采集方式
- exception:API接口异常
- job:即应用,服务,非常关心
- method:接口方法,GET、POST等
- namespace:命名空间
- outcome:结果,和status功能定位比较类似
- pod:和container类似
- service:和container类似
- status:状态码,表示成功与否
- uri:接口的路径

上面新增过job这个变量。
默认情况下,job变量带出很多个非业务应用的数据(至于为什么,目前尚不清楚),比如kube系列,apiserver,coredns等,如下图所示:

带来的问题(干扰):

在面板里选择应用时,会出现很多不关心的应用。
需求:过滤无关应用,即实现变量过滤功能。
Regex
咨询DeepSeek、ChatGPT等工具后,告知可利用Regex来实现:

给出如下的表达式/^(?!.*kube).*$/。
注意:只有在点击保存仪表板后才能看到效果。
如下截图所示,Preview of values里不再出现kube相关的数据

在面板上选择应用时,不再出现kube相关的选项

问题来了,我还想继续过滤掉上面截图里的apiserver和coredns,咋办。
DeepSeek给出的答复是:/^(?!.*(kube|apiserver)).*$/。
是不是看起来非常有理有据,Regex正则表达式嘛,用|符号实现多个候选项。
结果点击报错仪表板后,页面居然报错:

众所周知,Grafana UI是用JS写的,上面的报错也全是JS相关。
WTF?根本就不能进行任何点击或查看操作。
这该死的、害人的AI幻觉(hallucination)。
问题是AI带来的,还是得靠它们来解决。
给出的答复,其中一个是,强制刷新浏览器。
使用Chrome快捷键Ctrl + Shift + R,果然可以正常查看仪表板,赶紧把上面的错误的Regex表达式给删除。
经过反复尝试,比较明确的一点是,通过Regex,只能过滤一类数据。
几个表达式:
/^(?!.*kube).*$/:可以过滤kube相关的数据;/^(?!.*(kube|apiserver)).*$/:不能实现过滤kube和apiserver相关的数据,Grafana解析此Regex表达式失败,页面渲染数据出错;/^(?!.*(kube))}).*$/:同上,多个()括号,页面报错。
Metric
既然Regex无法实现过滤,只有另寻他法。反复询问AI工具,给出的答复是使用Metric,即指标。
此时才发现,绕了个弯路,Metric才是最正规的实现指标数据过滤的方法。
下面截图里还写着Regex,实际上无用,应删除,请忽视。

不过,如上图所示,还是有一个不太关心的数据,nacos。Java业务应用里并没有nacos,而是使用Nacos作为配置中心和注册中心。
Label filters
进一步实现过滤。Label filters,中文译为标签过滤器,正好是用于数据过滤的场景:

备注:忽略上面截图里的Regex表达式。
可知,将nacos给过滤掉。
此外,点击中间的操作符

Grafana提供的四种对比符号:
=:等于,精准匹配!=:不等于,精准过滤(排除)=~:等于,模糊匹配!~:不等于,模糊过滤(排除)
总结
有三种方法:
- Regex:不建议使用
- Metric:绑定指标,可过滤大部分无关数据
- Label filters:进一步过滤数据
变量查询
上面已经新增三个变量:
- 应用:对应于job
- API:对应于uri
- 状态码:对应于status
需求是查询所有的应用下所有API接口,且状态码是4xx或5xx的数据:

遇到的问题:
- 清空应用或API的勾选项,并不能查询到数据,即上图展示的No data。分析下来,发现浏览器的URL上,job这个变量
var-job- )还是写死(绑定)某个应用agent,var-uri还是把所有的已经勾选的接口放在URL路径 - 勾选全部应用以及全部API,可以实现上面提到的查询需求,但是页面太不美观。
经过各种反复尝试。
解决方法:修改变量,构想Include All option。
遇到的问题,查询不到数据,可是通过Prometheus Graph查看明明有数据的

咨询AI类工具,以及反复尝试,发现需要配置如下的Custom all value信息,填入.*

保存仪表板后,果然看到数据

总结:勾选Include All option时,需要配置下面的Custom all value,否则查询数据时会显示No data。
导入仪表板
前面在新增仪表板时,只讲述过Add visualizaton这种方式。
上面的操作,都是基于http_server_requests这个指标,并不是自定义的指标,而是Micrometer官方暴露出来的数据。以Grafana + Dashboard + http_server_requests 三个单词为关键词搜索Google,不难找到官方维护的仪表板,其ID为21308,URL地址为https://grafana.com/grafana/dashboards/21308-http/。
此处使用导入功能

如上图所示,Grafana真的很贴心(注意这里的排版),提供好几种导入方式:
- 文件:在最上方。别人不清楚,我个人会认为这种方式更重要,使用频率更高,所以放在最上面。
- URL:贴入URL
- ID:输入ID
- JSON model:没用过,不太清楚
踩过的坑:将测试环境的仪表板同步到生产环境,首先导出测试环境的仪表板为JSON文件,点击仪表板右上角的Share->Export->Save to file

然后在生产环境导入JSON文件,却发现无数据

经过排查与分析后才发现,虽然都是Prometheus数据源,但是其uid不一样。(直接给出结论)
选中某个面板后,快捷键E进入编辑模式,直接点击Run queries发现其实是有数据的。
对于部署多个不同Prometheus集群的场景来说,多了个步骤,切换使用的Prometheus数据源,然后点击Run queries,也可查询到数据。
我们公司做LLM相关应用,因此需要GPU机器用于模型推理与训练。对于GPU机器上的Python应用,额外再部署一套Prometheus集群。

最后点击保存面板,可发现使用的数据源uid确实不一样。

一个仪表板里面有十几个甚至几十个面板,一一进入编辑模式,然后保存面板切换使用的Prometheus数据源,岂不是要疯掉。
如截图所示,上面的仪表板是Node Exporter Dashboard 20240520 TenSunS自动同步版,这是一个三方维护的GitHub开源、仪表板。
解决方法:直接使用URL或ID的方式导入。
总结:
- URL或ID:官方维护的,三方维护的,且一般不会调整加以修改的仪表板;里面的面板一般会比较多;
- JSON:适合于业务自定义的仪表板;仪表板里的面板比较少,使用导出导入功能,需要编辑调整数据源的地方比较少;不编辑保存面板,则无数据。
变量联动
不会配置面板,不知道如何写PromQL,跟着别人学习啊。在Grafana Dashboard页面里,有几万个仪表板(持续新增中),有官方维护的,也有三方维护的。
上面已经导入21308仪表板,点击面板,进入编辑模式,看看别人的变量怎么配置的

点击instance变量后,发现是这样的:

Grafana自动解析变量之间的关系,生成Show dependencies按钮。

同样都是http_server_requests指标,官方维护的仪表板使用application、cluster、instance三个变量,我上面列出的标签里,这三个一个都没有,所以下拉框并没有数据,不清楚官方为何使用这三个变量。

要善于取学习,跟着配置三个变量后,可以实现联动效果,即所谓选择应用后,API里只出现该应用下的接口:

注意:上面截图里Label filters使用的符号不一致。
Grafana Alert
一般情况下,可以基于面板创建Alert,即Grafana Alert

Grafana Alert涉及很多知识点,如Alert rule(告警规则)、Contact Point(联络点)、Notification policy(通知策略)、Silence(静默),其中联络点又涉及到最常见的邮件告警,告警模板配置;如果是Webhook配置,飞书还非常特殊。
因此另起一篇。
但是也有例外:

No alerting capable query found
Cannot create alerts from this panel because no query to an alerting capable datasource is found.
数据源是Prometheus,PromQL如下,为啥不能基于此面板新增告警的具体原因,有待进一步学习

Prometheus Alertmanager
除了Grafana Alert外,也可接入Prometheus Alertmanager。
另起一篇Grafana系列之面板接入Prometheus Alertmanager。
参考
- Grafana官网
- ChatGPT
- DeepSeek
- GitHub Copilot
相关文章:
Grafana系列之Dashboard:新增仪表板、新增变量、过滤变量、变量查询、导入仪表板、变量联动、Grafana Alert
概述 关于Prometheus和Grafana的安装,略过。 写在前面 Dashboard:仪表板,可包含多个PanelPanel:面板,Dashboard中的组件 如有写得不对的地方,烦请指出。 新增仪表板 点击右上角的 选择New dashboard…...
(java版本)基于Misty1算法的加密软件的实现-毕业设计
一、基于Misty1算法的加密软件(Java)的实现 随着计算机网络及通信技术的飞速发展,信息安全成了信息社会急需解决的最重要的问题之一,密码技术是保证信息安全的核心技术。本文用JAVA语言开发了一个基于Misty1算法的加密软件&#x…...
Spring注解篇:@RestController详解
全文目录: 开篇语前言摘要概述源码解析使用案例分享代码分析使用场景优缺点分析测试用例 应用场景案例优缺点分析核心类方法介绍测试用例测试用例分析使用场景优缺点分析测试用例 小结总结文末 开篇语 哈喽,各位小伙伴们,你们好呀,…...
C++:将字符数组rkpryyrag,每个字母转换为其前面第13个字母后输出,如果超过a则从z再继续接着数。例如:b前面第1个字母是a。a前面第3个字母是x。
代码如下: #include <iostream> #include <string> using namespace std;int main(){string str "rkpryyrag";for (int i 0; i < str.length(); i){if (str[i] > a && str[i] < z){if (str[i] - a < 13){cout <<…...
《探秘鸿蒙Next:人工智能助力元宇宙高效渲染新征程》
在元宇宙的宏大愿景中,高效的渲染技术是构建沉浸式虚拟世界的关键。鸿蒙Next凭借与人工智能的深度融合,为元宇宙的渲染带来了全新的解决方案和无限可能。 智能场景分析与优化 人工智能能够对元宇宙场景进行智能分析。鸿蒙Next可以利用AI技术对场景中的…...
微前端qiankun的部署
微前端qiankun的部署 本地开发主应用配置启动端口子应用配置启动端口测试环境部署:场景 1:主应用和微应用部署到同一个服务器(同一个 IP 和端口)微应用都放在在一个特殊名称(不会和微应用重名)的文件夹下主应用配置子应用配置配置nginx本地开发 主应用配置启动端口 打开…...
HTML表格-掌握表格标签与属性
HTML表格是网页设计中用于展示数据的强大工具,它通过一系列标签和属性来控制表格的布局和样式。 一、HTML表格的基本结构 HTML表格由<table>标签定义,内部包含多个行(<tr>)、单元格(<td>或<th&…...
PID控制的优势与LabVIEW应用
PID控制(比例-积分-微分控制)已在工业控制领域得到广泛应用,尤其在实时控制和自动化系统中,其核心优点是简单、稳定且高效。尽管许多现代控制方法(如自适应控制、模型预测控制等)逐渐崭露头角,P…...
全球化趋势与中资企业出海背景
1. 全球化趋势与中资企业出海背景 1.1 全球经济格局变化 全球经济格局正经历深刻变革,新兴经济体崛起,全球产业链重塑,中资企业出海面临新机遇与挑战。据世界银行数据,新兴市场和发展中经济体在全球 GDP 中占比已超 40%ÿ…...
Oracle之RMAN备份异机恢复(单机到单机)
Oracle之RMAN备份异机恢复(单机到单机) 一、环境说明二、正式库进行RMAN备份三、将正式库备份与参数文件拷贝到测试库四、测试库异机恢复五、验证数据 一、环境说明 系统版本主机名DB版本DB名实例名Public-IP正式库Redhat9.5lemonEnterprise 19.25lemon…...
Servlet快速入门
Servlet 由于目前主流使用SpringBoot进行开发Servlet可以说是时代的眼泪,这篇文章主要介绍我基于SpringBoot对应Servlet的浅薄认知,有利于更好的理解前端界面和java服务器的数据交换过程 快速入门 我比较推荐这篇文章来对Servlet有一个大概的了解 都2…...
深入解析 Linux 内核中的 InfiniBand 驱动接口:ib_verbs.h
InfiniBand(IB)是一种高性能、低延迟的网络互连技术,广泛应用于高性能计算(HPC)、数据中心和云计算等领域。Linux 内核通过 InfiniBand 子系统提供了对 IB 设备的支持,而 ib_verbs.h 是 InfiniBand 驱动开发中的核心头文件之一。它定义了 IB 核心框架与用户空间接口(ver…...
vulnhub靶场【kioptrix-1靶机】
前言 靶机:kioptrix-1,IP地址为192.168.1.104 攻击:kali,IP地址为192.168.1.16 都采用虚拟机,网卡为桥接模式 文章中涉及的靶机,来源于vulnhub官网,想要下载,可自行访问官网下载&…...
Linux 6.14 内核的主要特性
原文参考:https://www.kernel.org/ Linux 6.14 内核是 Linux 内核的一个重要版本,预计于 2025 年 3 月发布。该版本引入了多项新特性和改进,涵盖了硬件支持、性能优化、安全性增强以及新技术的整合。 1. Rust 语言驱动的正式支持 Linux 6.1…...
【Linux】深刻理解动静态库
1.什么是库 库是写好的现有的,成熟的,可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个⼈的代码都从零开始,因此库的存在意义⾮同寻常。本质上来说库是⼀种可执⾏代码的⼆进制形式,可以被操作系统载…...
亚博microros小车-原生ubuntu支持系列:8-脸部检测与人脸特效
前面的都是使用了mediapipe框架。后面的这两节采用了opencv\dlib的框架。 一 脸部检测 核心:opencv detectMultiScale函数 detectMultiScale(image, scaleFactor, minNeighbors, flags, minSize, maxSize) image--待检测图片,一般为灰度图像加快检测…...
代码随想录算法训练营day32
代码随想录算法训练营 —day32 文章目录 代码随想录算法训练营前言一、动态规划理论基础二、509. 斐波那契数动态规划动态规划优化空间版递归法 三、70. 爬楼梯动态规划动态规划空间优化 746. 使用最小花费爬楼梯动态规划空间优化 总结 前言 今天是算法营的第32天,…...
缓存之美:万文详解 Caffeine 实现原理(下)
上篇文章:缓存之美:万文详解 Caffeine 实现原理(上) getIfPresent 现在我们对 put 方法有了基本了解,现在我们继续深入 getIfPresent 方法: public class TestReadSourceCode {Testpublic void doRead() …...
中企出海:从国际投资建厂:投前投中投后重点事项
1. 投前重点事项 1.1 市场调研与分析 在国际投资建厂的投前阶段,市场调研与分析是至关重要的基础工作,它能够帮助企业全面了解目标市场,为后续决策提供有力依据。 市场规模与潜力:通过收集和分析目标国家或地区的经济数据、行业…...
github登录用的TOTP和恢复码都丢失了怎么办
从22年左右开始github的登录就需要用TOTP的一个6位秘钥做二次认证登录,如果在用的TOTP软件失效了,可以用github开启二次认证时下载的恢复码重置认证,但是如果你和我一样这两个东西都没了就只能用邮箱重置了,过程给大家分享一下 一…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...
对象回调初步研究
_OBJECT_TYPE结构分析 在介绍什么是对象回调前,首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例,用_OBJECT_TYPE这个结构来解析它,0x80处就是今天要介绍的回调链表,但是先不着急,先把目光…...
VSCode 使用CMake 构建 Qt 5 窗口程序
首先,目录结构如下图: 运行效果: cmake -B build cmake --build build 运行: windeployqt.exe F:\testQt5\build\Debug\app.exe main.cpp #include "mainwindow.h"#include <QAppli...
Qwen系列之Qwen3解读:最强开源模型的细节拆解
文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...
五、jmeter脚本参数化
目录 1、脚本参数化 1.1 用户定义的变量 1.1.1 添加及引用方式 1.1.2 测试得出用户定义变量的特点 1.2 用户参数 1.2.1 概念 1.2.2 位置不同效果不同 1.2.3、用户参数的勾选框 - 每次迭代更新一次 总结用户定义的变量、用户参数 1.3 csv数据文件参数化 1、脚本参数化 …...
