前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Grafana: (3) 变量的创建、管理与使用

Grafana: (3) 变量的创建、管理与使用

作者头像
老麦
发布2023-08-10 11:04:22
2.1K0
发布2023-08-10 11:04:22
举报
文章被收录于专栏:Go与云原生Go与云原生

Grafana: (3) 变量的创建、管理与使用

建议点击 查看原文 查看最新内容。

原文链接: https://typonotes.com/posts/2023/06/08/grafana-variable-management/

之前在 Grafana: (1) DataSource 数据源管理 中提到过, 对于不同环境的的数据源命名是具有一定规则, 可以在后期通过变量管理。

这个需求其实很好理解:

  1. 不同的团队 对定制的监控界面有各自的需求, 大部分情况下 不能混用
  2. 而某个团队的 不同环境 的界面 又需要一致, 这样使用起来没有额外学习成本。

在面板中 引入变量, 能快速切换不同环境, 还能对更好的过滤查询条件。这点很容易理解。

1. Grafana 变量

Grafana 给出了 9种内置变量类型 , 个人比较常用的有一下几种

  1. Global Variables: 内置全局变量
  2. Data Source: 数据源
  3. Query: 查询
  4. Interval: 间隔
  5. Ad hoc filters: 条件过滤

2. Grafana 变量配置

在 Dashboard 右上角 点击 齿轮/Dashboard Setting 进入配置界面, 选择 变量/Variables

点击 Add Variable 或者 New 创建变量

可以认为分为 三个区 或者 四个区(按名字)

  1. 红区:对变量的定义, 描述
  2. 黄区:对于变量的过滤或补充。不同类型的变量这部分不同。
  3. 绿区:结果预览。

重点说一下 红区

  1. Name: 变量名称。一定要用有 语义单词或词组, 方便后期使用和展示。
  2. Label: Dashboard 上的显示名称, 如果为空则显示 Name。这部分我通常不写。变量名已经有了明确的意思, 直接用变量名更方便。
  3. Description: 变量描述。这部分类似注释, 可以多写一些提示性语句。
  4. Type: 变量类型。
  5. Hide: 是否隐藏。一些 不需要用户控制 的变量就可以隐藏。后面会有一个案例说明。

2.1. DataSource数据源 变量

我们创建一个 数据源变量。直接看图, 很直观了。

实际上, 在没有过滤之前, 我拥有 十多个 Prometheus 的变量。

2.2. Query/查询 变量

Query 变量应该是用的 最多 的变量之一了。

  1. Type 选择 Query。通过查询获得结果。
  2. 还需选择 DataSource, 不同的 数据源类型 语句对应的查询语句的语法肯定是不一样的, 这个很好理解。这里我们选择刚才创建的变量 ${MyCluster}
  3. 变量的 Refresh 刷新时机。是 加载面板 或者 时间范围变化 触发, 根据各自的情况选择。
  4. 过滤依旧是 Regex, 使用的 Google/re2 的正则表达语法。
  5. Sort 排序通常选 Alphabetical(asc) , 依据字母表顺序排列。

2.3. label_valuesquery_result

需要重点强调一下的是 label_valuesquery_result 都是 Grafana 针对 Prometheus 的语法, Prometheus template variables, 只能在 Grafana 上使用。

这两个 方法/函数 都可以通过 Grafana 在 Prometheus 进行数据查询, 并返回数据。但是一些差异。

label_values

这里有一个很重要的 方法/函数: label_values, 可以提取一个 标签

语法很简单

代码语言:javascript
复制
label_values( 向量, 标签名)

例如上图中我们使用的条件, 以获取 namespace 的值

代码语言:javascript
复制
label_values( up{}, namespace )  # 查询 up, 提取 namespace 标签

在向量中, 查询条件是可以 扩展 的, 也是可以使用 变量 的。例如这里通过提出 job 的值的时候, 使用了变量 namespace 的值。

代码语言:javascript
复制
label_values( up{namespace="$namespace"}, job) # 带有 up, 提取 job 标签

这应该可以算作 Chained Variable/链接变量, 理论上是 无限 嵌套的, 但最好这种变量查询 不要超过 5-10 层(主要还是看每次查询的数据量)。

query_result

关于 query_result 我还没搞清楚到底要怎么用, 以及用在什么地方。

按照官方的说法:label_vaules 不支持查询, 因此可以使用 query_result 查询结果, 并通过 正则 过滤。

代码语言:javascript
复制
query_result(topk(5, sum(rate(up[1m])) by (instance)))

官方在这里有一个案例 Use interval and range variables, 有兴趣可以自己了解一下。

2.4. 变量的依赖关系

话说回来, 所有变量创建完成之后, 可以在 变量管理 界面, 点击右上角的 Show Dependencies 查看变量之间的以来关系。

2.5. 使用变量

使用变量很简单, 将变量替换在对应的地方就可以了。

这是替换后

这是替换前

3. 变量的语法

这里说说变量的基础语法。

  1. $variable 这是最基本的用法。
  2. {variable} 可以使用这种方式将变量包裹起来。通常用于有歧义表达式。例如 {variable}_1 与
  3. ${variable:<format>} 可以变量进行不同类型的格式化。要注意 格式化 的方法是 Grafana 提供并限制了的。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 熊猫云原生Go 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Grafana 变量
  • 2. Grafana 变量配置
    • 2.1. DataSource数据源 变量
      • 2.2. Query/查询 变量
        • 2.3. label_values 和 query_result
          • label_values
          • query_result
        • 2.4. 变量的依赖关系
          • 2.5. 使用变量
          • 3. 变量的语法
          相关产品与服务
          Prometheus 监控服务
          Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档