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

能否在Grafana中基于无标签Loki查询创建变量?需解析JSON日志生成临时标签

在Grafana中基于Loki JSON日志生成变量的解决方案

核心思路

通过Loki的json解析函数提取日志中的JSON字段,再用label_format将字段转为临时标签,最后通过聚合查询得到可用于Grafana变量的唯一值列表。

步骤1:构建有效的LogQL查询

假设你的日志是类似{"user_id": "u1001", "service": "auth"}的JSON格式,可使用以下LogQL语句提取并生成临时标签:

{job="your-target-job"} |= `` | json | label_format temp_tag="{{.user_id}}" | by (temp_tag)
  • json:将原始日志行解析为结构化JSON字段
  • label_format temp_tag="{{.user_id}}":把解析出的user_id字段赋值给临时标签temp_tag
  • by (temp_tag):按临时标签聚合,自动去重得到唯一值集合

如果JSON字段有嵌套(比如{"event": {"id": "e2003"}}),调整字段路径即可:

{job="your-target-job"} |= `` | json | label_format temp_tag="{{.event.id}}" | by (temp_tag)

步骤2:在Grafana中配置变量

  1. 进入仪表盘的设置 → 变量,点击新建变量
  2. 变量类型选择Query,数据源选中你的Loki实例
  3. 在查询输入框中粘贴上述LogQL语句
  4. 根据需求设置刷新规则(比如「仪表盘加载时」或「时间范围变化时」)
  5. 点击预览值,确认能返回预期的变量列表后保存

注意事项

  • 先在Loki Explorer中验证LogQL语句的有效性,确保解析后的临时标签能正常显示
  • 若JSON格式不规范,json函数会解析失败,需先确保日志行是合法JSON
  • 如需组合多个字段作为临时标签,可在label_format中拼接:temp_tag="{{.service}}-{{.user_id}}"
  • 如果需要过滤变量结果,可在变量设置的正则表达式中添加匹配规则(比如^auth-.*$只保留auth服务相关值)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:03:15