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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Ansys Discovery 对离心风机进行仿真

了解设置模拟并获得有用结果的步骤。 离心风机:基础知识和重要性 离心风机,也称为径流式风机,是旨在通过将动能转化为势能来增加空气或气体的压力和流量的机械装置。它们的工作原理是利用旋转叶轮产生的离心力轴向吸入空气,然后…

客户案例:向导ERP与金蝶云星空集成方案

一、客户背景 该客户公司主要致力于黄金、铂金、金镶玉首饰的研发设计、生产加工、批发及直营加盟业务。公司总部占地面积目前已达6000多平方米,拥有标准生产厂房和现代化生产设施,拥有一支完善的企业管理团队和专业技工队伍。 该企业目前同时采用向导 E…

机器学习-K近邻算法

文章目录 一. 数据集介绍Iris plants dataset 二. 代码三. k值的选择 一. 数据集介绍 鸢尾花数据集 鸢尾花Iris Dataset数据集是机器学习领域经典数据集,鸢尾花数据集包含了150条鸢尾花信息,每50条取自三个鸢尾花中之一:Versicolour、Setosa…

【豆包MarsCode蛇年编程大作战】花样贪吃蛇

目录 引言 展示效果 prompt提示信息 第一次提示(实现基本功能) 初次实现效果 第二次提示(美化UI) 第一次美化后的效果 第二次美化后的效果 代码展示 实现在线体验链接 码上掘金使用教程 体验地址: 花样贪吃蛇…

小白爬虫——selenium入门超详细教程

目录 一、selenium简介 二、环境安装 2.1、安装Selenium 2.2、浏览器驱动安装 三、基本操作 3.1、对页面进行操作 3.1.1、初始化webdriver 3.1.2、打开网页 3.1.3、页面操作 3.1.4、页面数据提取 3.1.5、关闭页面 ?3.1.6、综合小案例 3.2、对页面元素进行操作 3…

U3D的.Net学习

Mono:这是 Unity 最初采用的方式,它将 C# 代码编译为中间语言 (IL),然后在目标平台上使用虚拟机 (VM) 将其转换为本地机器码执行。 IL2CPP:这是一种较新的方法,它会将 C# 代码先编译为 C 代码,再由 C 编译器…

Java集合学习:HashMap的原理

一、HashMap里的Hash是什么? 首先,我们先要搞清楚HashMap里的的Hash是啥意思。 当我们在编程过程中,往往需要对线性表进行查找操作。 在顺序表中查找时,需要从表头开始,依次遍历比较a[i]与key的值是否相等&#xff…

SOAFEE 技术研讨会:汽车软件定义与自动驾驶技术探讨

在本次技术研讨会上,来自汽车与科技领域的专家们围绕汽车软件定义及自动驾驶技术展开了深入交流与探讨。从 SOAFEE 蓝图计划的创新性理念,到 Autoware 开源项目及 Open AD Kit 在实际应用中的探索,再到 Edge Workload Abstraction and Orches…

FastJson很快,有什么用?

FastJson 在国内的热度还是挺高的,受到了很多开发者的喜欢。不过,我自己倒没有在项目中用过。我记得刚工作那会新做的一个项目有明确规定禁止使用 FastJson。 昨天看到一篇关于 FastJson 的文章,这位朋友分享了自己在使用 FastJson 遇到的一…

Jetson nano 安装 PCL 指南

本指南帮助 ARM64 架构的 Jetson Nano 安装 PCL(点云库)。 安装步骤 第一步:安装依赖 在终端中运行以下命令,安装 PCL 所需的依赖: sudo apt-get update sudo apt-get install git build-essential linux-libc-dev s…

ansible自动化运维实战--软件包管理模块、服务模块、文件模块和收集模块setup(4)

文章目录 一、软件包管理模块1.1、功能1.2、常用参数1.3、示例 二、服务模块2.1、功能2.2、服务模块常用参数2.3、示例 三、文件与目录模块3.1、file功能3.2、常用参数3.3、示例 四、收集模块-setup4.1、setup功能4.2、示例 一、软件包管理模块 1.1、功能 Ansible 提供了多种…

终极的复杂,是简单

软件仿真拥有最佳的信号可见性和调试灵活性,能够高效捕获很多显而易见的常见错误,被大多数工程师熟练使用。 空间领域应用的一套数据处理系统(Data Handling System),采用抗辐FPGA作为主处理器,片上资源只包含10752个寄存器,软仿也是个挺花时间的事。 Few ms might take …

开关电源设计(2)–BUCK电路设计和计算过程

BUCK电路也即降压电路,是应用最广泛的DC-DC变换器 需求决定的参数 V i 和 V o V_{i} 和V_{o} Vi​和Vo​ f f f I o I_{o} Io​ 输出电压纹波率 效率 需要计算:电感量 r r r 占空比 C 参数计算: 当MOS管导通时,电感电压 V O N V i − …

cudatex文本编辑器

一、下载 通过网盘分享的文件:cudatext 链接: https://pan.baidu.com/s/1TZbGk3AM09SuKvvcQy0d6Q?pwdbbzd 提取码: bbzd 本链接分享的为2025年1月下载上传的软件,版本为1.220.6.1 ;软件皆已放入中文包。 二、设置中文简体 打开 https://…

C语言文件操作:标准库与系统调用实践

目录 1、C语言标准库文件操作 1.1.题目要求: 1.2.函数讲解: fopen 函数原型 参数 常用的打开模式 返回值 fwrite函数 函数原型 参数 返回值 注意事项 fseek函数 函数原型 参数 返回值 fread函数 函数原型 参数 返回值 fclose 函数…

一款专业通用开源的MES生产执行管理系统

系统简介 MES系统是一款B/S结构、开源、免费的生产执行管理系统。 此系统基于本人多年离散智造行业的业务经验及J2EE项目经验开发。 主要目的是为国内离散制造业的中小企业提供一个专业化、通用性、低成本的MES系统解决方案。 系统将提供“售前”、“实施”、“用户培训”、…

SpringBoot集成Flink-CDC,实现对数据库数据的监听

一、什么是 CDC ? CDC 是Change Data Capture(变更数据获取)的简称。 核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、 更新以及删除等),将这些变更按发生的顺序完整记录下来&…

Three城市引擎地图插件Geo-3d

一、简介 基于Three开发,为Three 3D场景提供GIS能力和城市底座渲染能力。支持Web墨卡托、WGS84、GCJ02等坐标系,支持坐标转换,支持影像、地形、geojson建筑、道路,植被等渲染。支持自定义主题。 二、效果 三、代码 //插件初始化…

应用层协议 HTTP 讲解实战:从0实现HTTP 服务器

🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 HTTP 协议 🦋 认识 URL🦋 urlencode 和 urldecode 二:🔥 HTTP 协议请求与响应格式 🦋 HTTP 请求…

鸿蒙仓颉环境配置(仓颉SDK下载,仓颉VsCode开发环境配置,仓颉DevEco开发环境配置)

目录 ​1)仓颉的SDK下载 1--进入仓颉的官网 2--点击图片中的下载按钮 3--在新跳转的页面点击即刻下载 4--下载 5--找到你们自己下载好的地方 6--解压软件 2)仓颉编程环境配置 1--找到自己的根目录 2--进入命令行窗口 3--输入 envsetup.bat 4--验证是否安…