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

Grafana Loki仪表板日志查询问题:指定面板匹配搜索变量

问题分析

当前查询同时叠加了container_name=~"$service_to_display"和(container_name =~ "$service_for_search")两个条件,只有当service_to_display和service_for_search选中同一个服务时,对应面板才会返回日志,其他面板因不满足第二个过滤条件无数据,导致仅单个面板显示内容。

解决方案

方法1:利用Grafana模板条件判断(推荐)

修改查询语句,通过条件判断仅在service_for_search有选中值时,才对匹配该服务的面板应用搜索过滤:

{container_name=~"$service_to_display", level=~"$level", host=~"$host"} | logfmt 
{{ if ne "$service_for_search" "" }}
  | (container_name =~ "$service_for_search") |= "$search_for_service"
{{ end }}
  • 配置要求:确保service_for_search变量开启「Allow empty value」(允许空值),未选择服务时,所有面板正常显示对应service_to_display的日志;当选中某服务时,仅匹配该服务的面板会执行搜索并展示结果。

方法2:Loki逻辑或表达式

如果不想用模板语法,也可以通过逻辑或实现相同效果:

{container_name=~"$service_to_display", level=~"$level", host=~"$host"} | logfmt 
| (container_name !~ "$service_for_search" or (container_name =~ "$service_for_search" |= "$search_for_service"))
  • 原理:当service_for_search为空时,container_name !~ ""匹配所有容器,所有面板正常显示;当有选中值时,仅匹配该服务的容器会应用搜索过滤。

额外检查点

  • 确认service_to_display是用于面板迭代的变量,每个展开面板对应唯一的service_to_display值;
  • 验证service_for_search的变量类型为文本框,且取值与service_to_display的选项一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:40:33