You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从文件配置变量并用于PromQL,实现Grafana中Docker栈数据切换

实现Grafana面板的栈数据切换功能

1. 在Grafana仪表盘创建自定义变量

无需修改Prometheus或Docker配置,直接在Grafana内完成变量定义:

  • 打开你的Docker容器/主机仪表盘,点击顶部齿轮图标进入设置→选择变量选项卡
  • 点击添加变量,按以下配置:
    • 名称:stack_namespace(可自定义,便于识别即可)
    • 类型:选择「自定义」
    • 自定义选项:输入两行内容:
      All
      xyz_stack_1
      
    • 默认值:设置为All(默认显示全量容器数据)
    • 点击保存变量

2. 修改PromQL查询,动态引用变量

将原有两个查询合并为一个带变量的动态查询,实现切换逻辑:

简洁写法(推荐)

sum(rate(container_cpu_usage_seconds_total{
  container_label_com_docker_stack_namespace=~"{{ stack_namespace | replace('All', '.+') }}"
}[$interval])) by (name) * 100

逻辑清晰写法(适合新手理解)

sum(rate(container_cpu_usage_seconds_total{
  {% if stack_namespace == "All" %}
    name=~".+"
  {% else %}
    container_label_com_docker_stack_namespace=~"{{ stack_namespace }}"
  {% endif %}
}[$interval])) by (name) * 100

解释:当变量选All时,匹配所有容器;选xyz_stack_1时,仅匹配该栈下的容器。

3. 验证切换效果

返回仪表盘,顶部会出现stack_namespace下拉按钮,切换All和xyz_stack_1即可看到面板数据同步变化。

关于配置文件的说明

该需求无需修改docker-compose.yaml、prometheus.yml或grafana.ini——变量是Grafana仪表盘层面的配置,直接在Grafana内定义即可。如果需要固化配置,可导出仪表盘JSON文件(包含变量定义),导入到其他Grafana实例就能复用该功能。


内容的提问来源于stack exchange,提问作者MsA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:47:46