当前位置: 首页 > news >正文

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- )还是写死(绑定)某个应用agentvar-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详解

全文目录: 开篇语前言摘要概述源码解析使用案例分享代码分析使用场景优缺点分析测试用例 应用场景案例优缺点分析核心类方法介绍测试用例测试用例分析使用场景优缺点分析测试用例 小结总结文末 开篇语 哈喽,各位小伙伴们,你们好呀&#xff0c…...

C++:将字符数组rkpryyrag,每个字母转换为其前面第13个字母后输出,如果超过a则从z再继续接着数。例如:b前面第1个字母是a。a前面第3个字母是x。

代码如下&#xff1a; #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:人工智能助力元宇宙高效渲染新征程》

在元宇宙的宏大愿景中&#xff0c;高效的渲染技术是构建沉浸式虚拟世界的关键。鸿蒙Next凭借与人工智能的深度融合&#xff0c;为元宇宙的渲染带来了全新的解决方案和无限可能。 智能场景分析与优化 人工智能能够对元宇宙场景进行智能分析。鸿蒙Next可以利用AI技术对场景中的…...

微前端qiankun的部署

微前端qiankun的部署 本地开发主应用配置启动端口子应用配置启动端口测试环境部署:场景 1:主应用和微应用部署到同一个服务器(同一个 IP 和端口)微应用都放在在一个特殊名称(不会和微应用重名)的文件夹下主应用配置子应用配置配置nginx本地开发 主应用配置启动端口 打开…...

HTML表格-掌握表格标签与属性

HTML表格是网页设计中用于展示数据的强大工具&#xff0c;它通过一系列标签和属性来控制表格的布局和样式。 一、HTML表格的基本结构 HTML表格由<table>标签定义&#xff0c;内部包含多个行&#xff08;<tr>&#xff09;、单元格&#xff08;<td>或<th&…...

PID控制的优势与LabVIEW应用

PID控制&#xff08;比例-积分-微分控制&#xff09;已在工业控制领域得到广泛应用&#xff0c;尤其在实时控制和自动化系统中&#xff0c;其核心优点是简单、稳定且高效。尽管许多现代控制方法&#xff08;如自适应控制、模型预测控制等&#xff09;逐渐崭露头角&#xff0c;P…...

全球化趋势与中资企业出海背景

1. 全球化趋势与中资企业出海背景 1.1 全球经济格局变化 全球经济格局正经历深刻变革&#xff0c;新兴经济体崛起&#xff0c;全球产业链重塑&#xff0c;中资企业出海面临新机遇与挑战。据世界银行数据&#xff0c;新兴市场和发展中经济体在全球 GDP 中占比已超 40%&#xff…...

Oracle之RMAN备份异机恢复(单机到单机)

Oracle之RMAN备份异机恢复&#xff08;单机到单机&#xff09; 一、环境说明二、正式库进行RMAN备份三、将正式库备份与参数文件拷贝到测试库四、测试库异机恢复五、验证数据 一、环境说明 系统版本主机名DB版本DB名实例名Public-IP正式库Redhat9.5lemonEnterprise 19.25lemon…...

Servlet快速入门

Servlet 由于目前主流使用SpringBoot进行开发Servlet可以说是时代的眼泪&#xff0c;这篇文章主要介绍我基于SpringBoot对应Servlet的浅薄认知&#xff0c;有利于更好的理解前端界面和java服务器的数据交换过程 快速入门 我比较推荐这篇文章来对Servlet有一个大概的了解 都2…...

深入解析 Linux 内核中的 InfiniBand 驱动接口:ib_verbs.h

InfiniBand(IB)是一种高性能、低延迟的网络互连技术,广泛应用于高性能计算(HPC)、数据中心和云计算等领域。Linux 内核通过 InfiniBand 子系统提供了对 IB 设备的支持,而 ib_verbs.h 是 InfiniBand 驱动开发中的核心头文件之一。它定义了 IB 核心框架与用户空间接口(ver…...

vulnhub靶场【kioptrix-1靶机】

前言 靶机&#xff1a;kioptrix-1&#xff0c;IP地址为192.168.1.104 攻击&#xff1a;kali&#xff0c;IP地址为192.168.1.16 都采用虚拟机&#xff0c;网卡为桥接模式 文章中涉及的靶机&#xff0c;来源于vulnhub官网&#xff0c;想要下载&#xff0c;可自行访问官网下载&…...

Linux 6.14 内核的主要特性

原文参考&#xff1a;https://www.kernel.org/ Linux 6.14 内核是 Linux 内核的一个重要版本&#xff0c;预计于 2025 年 3 月发布。该版本引入了多项新特性和改进&#xff0c;涵盖了硬件支持、性能优化、安全性增强以及新技术的整合。 1. Rust 语言驱动的正式支持 Linux 6.1…...

【Linux】深刻理解动静态库

1.什么是库 库是写好的现有的&#xff0c;成熟的&#xff0c;可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库&#xff0c;不可能每个⼈的代码都从零开始&#xff0c;因此库的存在意义⾮同寻常。本质上来说库是⼀种可执⾏代码的⼆进制形式&#xff0c;可以被操作系统载…...

亚博microros小车-原生ubuntu支持系列:8-脸部检测与人脸特效

前面的都是使用了mediapipe框架。后面的这两节采用了opencv\dlib的框架。 一 脸部检测 核心&#xff1a;opencv detectMultiScale函数 detectMultiScale(image, scaleFactor, minNeighbors, flags, minSize, maxSize) image--待检测图片&#xff0c;一般为灰度图像加快检测…...

代码随想录算法训练营day32

代码随想录算法训练营 —day32 文章目录 代码随想录算法训练营前言一、动态规划理论基础二、509. 斐波那契数动态规划动态规划优化空间版递归法 三、70. 爬楼梯动态规划动态规划空间优化 746. 使用最小花费爬楼梯动态规划空间优化 总结 前言 今天是算法营的第32天&#xff0c…...

缓存之美:万文详解 Caffeine 实现原理(下)

上篇文章&#xff1a;缓存之美&#xff1a;万文详解 Caffeine 实现原理&#xff08;上&#xff09; getIfPresent 现在我们对 put 方法有了基本了解&#xff0c;现在我们继续深入 getIfPresent 方法&#xff1a; public class TestReadSourceCode {Testpublic void doRead() …...

中企出海:从国际投资建厂:投前投中投后重点事项

1. 投前重点事项 1.1 市场调研与分析 在国际投资建厂的投前阶段&#xff0c;市场调研与分析是至关重要的基础工作&#xff0c;它能够帮助企业全面了解目标市场&#xff0c;为后续决策提供有力依据。 市场规模与潜力&#xff1a;通过收集和分析目标国家或地区的经济数据、行业…...

github登录用的TOTP和恢复码都丢失了怎么办

从22年左右开始github的登录就需要用TOTP的一个6位秘钥做二次认证登录&#xff0c;如果在用的TOTP软件失效了&#xff0c;可以用github开启二次认证时下载的恢复码重置认证&#xff0c;但是如果你和我一样这两个东西都没了就只能用邮箱重置了&#xff0c;过程给大家分享一下 一…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

基于 HTTP 的单向流式通信协议SSE详解

SSE&#xff08;Server-Sent Events&#xff09;详解 &#x1f9e0; 什么是 SSE&#xff1f; SSE&#xff08;Server-Sent Events&#xff09; 是 HTML5 标准中定义的一种通信机制&#xff0c;它允许服务器主动将事件推送给客户端&#xff08;浏览器&#xff09;。与传统的 H…...

aurora与pcie的数据高速传输

设备&#xff1a;zynq7100&#xff1b; 开发环境&#xff1a;window&#xff1b; vivado版本&#xff1a;2021.1&#xff1b; 引言 之前在前面两章已经介绍了aurora读写DDR,xdma读写ddr实验。这次我们做一个大工程&#xff0c;pc通过pcie传输给fpga&#xff0c;fpga再通过aur…...

【汇编逆向系列】六、函数调用包含多个参数之多个整型-参数压栈顺序,rcx,rdx,r8,r9寄存器

从本章节开始&#xff0c;进入到函数有多个参数的情况&#xff0c;前面几个章节中介绍了整型和浮点型使用了不同的寄存器在进行函数传参&#xff0c;ECX是整型的第一个参数的寄存器&#xff0c;那么多个参数的情况下函数如何传参&#xff0c;下面展开介绍参数为整型时候的几种情…...

数据库管理与高可用-MySQL故障排查与生产环境优化

目录 #1.1MySQL单案例故障排查 1.1.1MySQL常见的故障排查 1.1.2MySQL主从故障排查 #2.1MySQL优化 2.1.1硬件方面的优化 2.1.2进程方面的优化 #3.1MySQL存储引擎 3.1.1 MyISAM存储引擎 3.1.2 InnoDB存储引擎 1.1MySQL单案例故障排查 1.1.1MySQL常见的故障排查 &#xff08;1&…...

【Go语言基础【6】】字符串格式化说明

文章目录 零、格式化常用场景一、Go 字符串格式化核心概念二、常用格式化占位符1. 整数类型2. 浮点数类型3. 字符串与布尔类型4. 指针与通用类型 三、宽度与精度控制1. 宽度控制2. 精度控制&#xff08;浮点数/字符串&#xff09; 零、格式化常用场景 数值转字符串&#xff1a…...

编程笔记---问题小计

编程笔记 qml ProgressBar 为什么valuemodel.progress / 100 在QML中&#xff0c;ProgressBar的value属性用于表示进度条的当前进度值&#xff0c;其范围通常为0到1&#xff08;或0%到100%&#xff09;。当使用model.progress / 100来设置value时&#xff0c;这样做的原因是为…...