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

【grafana】使用多级变量解决Granfana模板变量中的大小限制

前言

最近对公司的Kafka 集群集成了 exporter + prometheus + granfana 服务,我们将 topic 变量抽象成模板变量,此时发现 granfana 变量有 10k 的个数限制。导致我们显示 topic 名称不全。

效果如下:全选后只有 10k 个变量。
在这里插入图片描述

解决

一番百度后,发现 granfana 没有修改这个限制的计划,并且开发者认为 超过数千个选定值的模板变量可能会导致服务崩溃。

推荐方案

并且开发者推荐了,通过将多个模板变量连接在一起来解决此类问题。

类似于:在这里插入图片描述

具体实现

那我们也只能使用上面的方案,类似于前面加一个前缀过滤变量。通过前缀来过滤下级的 topic 名称。

  1. 新建一个 custom 类型的变量
    在这里插入图片描述

  2. 传入自定义参数内容

  3. 效果如下
    在这里插入图片描述

  4. 新建"下级"变量

新建一个名称叫 topicquery 类型的变量
在这里插入图片描述
5. query 查询语句
在这里插入图片描述

我这里的query 语句

label_values(kafka_log_log_size{topic=~"$prefix.*"}, topic)

这里的query 语句,大家可以参考grafana + Prometheus 的文档
https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels
https://yunlzheng.gitbook.io/prometheus-book/part-ii-prometheus-jin-jie/grafana/templating

  1. 最终实现:
    在这里插入图片描述

在这里插入图片描述

扩展

grafana里prometheus查询语法

名称描述
label_values(label)返回Promthues所有监控指标中,标签名为label的所有可选值
label_values(metric, label)返回Promthues所有监控指标metric中,标签名为label的所有可选值
metrics(metric)返回所有指标名称满足metric定义正则表达式的指标名称
query_result(query)返回prometheus查询语句的查询结果

Prometheus匹配模式

匹配模式

  • 完全匹配
  • 正则匹配

完全匹配

语法:

key = "value"

key != "value"

查询状态码为200的:

http_server_requests_seconds_count{application="hubble-biz-aiops", uri="/actuator/metrics",status="200"}

查询状态码为非200的:

http_server_requests_seconds_count{application="hubble-biz-aiops", uri="/actuator/metrics",status!="200"}

正则匹配

正则匹配分为正向匹配和反向匹配:

  • 正向匹配:使用 label=~regx 表示选择那些标签符合正则表达式定义的时间序列。
  • 反向匹配:使用 label!~regx 进行排除。

案例:
我想查询指标 kafka_log_log_size中,所有 topic 标签以 “a” 开头的记录,那么我的表达式为:
kafka_log_log_size{topic=~"a.*"}

参考

  • https://community.grafana.com/t/size-limit-in-templating-variables/8920
  • https://github.com/grafana/grafana/issues/12664

http://www.kler.cn/a/9948.html

相关文章:

  • 贪心算法入门(二)
  • 区块链技术在慈善捐赠中的应用
  • 基于非时空的离身与反身智能
  • 系统架构设计师论文
  • 一文详解java的数据类型
  • vue el-date-picker 日期选择器禁用失效问题
  • RHCE——shell脚本练习
  • DC 使用记录
  • 一次性搞懂dBSPL、dBm、dBu、dBV、dBFS的区别!
  • 谈ChatGPT基本信息
  • Mac平台上有哪些好用的常用软件?
  • 软件重构方法
  • Nacos 性能报告
  • 2023-04-14 lua + C动态库交叉debug
  • 逆向入门--何为OEP
  • 故障注入的方法与工具
  • 【GITLab】docker部署GitLab
  • 如何在ubuntu上搭建minio
  • 灌区量测水系统
  • C++ Primer第五版_第十一章习题答案(31~38)
  • 程序员必用的6个代码对比神器附下载地址
  • Linux嵌入式学习之Ubuntu入门(二)磁盘文件介绍及分区、格式化等
  • NumPy 初学者指南中文第三版:1~5
  • 【三十天精通Vue 3】 第三天 Vue 3的组件详解
  • 一位腾讯在职7年测试工程师的心声...
  • 为什么会有JMM?从0到1一次性说清楚