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

基于应用日志JSON数据在Splunk中创建Pie chart的方法

问题描述

我的应用每日生成包含饼图所需映射的JSON格式日志,示例数据如下:

{
  "telemetryEventName": "active-deliveries",
  "telemetryData": [
    {
      "id": "1",
      "name": "repo-01",
      "gitTextsInformation": [
        {
          "key": "es-ES",
          "value": "47"
        },
        {
          "key": "pt-BR",
          "value": "46"
        }
      ]
    },
    {
      "id": "2",
      "name": "repo-02",
      "gitTextsInformation": [
        {
          "key": "es-ES",
          "value": "12"
        },
        {
          "key": "pt-BR",
          "value": "13"
        }
      ]
    }
  ]
}

该数据来自日志消息,我希望为每个gitTextsInformation生成饼图。曾尝试使用以下搜索语句创建表格:

"index"="main" "kubernetes.container_name"="..." logger_name=telemetryLogger message.telemetryEventName="..."
| head 1 
| table message.telemetryData{}.gitTextsInformation{}.key message.telemetryData{}.gitTextsInformation{}.value

但该搜索语句无法用于创建饼图,请求可行的解决方案。


解决方案

问题根源是嵌套数组没被正确展平——Splunk饼图要求每行对应一个「类别-数值」对的结构化数据,而不是数组形式的字段。按以下步骤调整搜索语句就能解决:

  1. 用spath提取嵌套字段,确保能访问到telemetryData数组里的每个元素
  2. 用mvexpand展开telemetryData数组,让每个仓库单独占一行
  3. 把gitTextsInformation里的key和value配对后再展开,拆成独立的行
  4. 转换数值类型,适配饼图的格式要求

完整搜索语句:

index="main" kubernetes.container_name="..." logger_name=telemetryLogger message.telemetryEventName="..."
| head 1
| spath path=message.telemetryData output=telemetryData
| mvexpand telemetryData
| spath input=telemetryData path=name output=repo_name
| spath input=telemetryData path=gitTextsInformation{}.key output=lang_keys
| spath input=telemetryData path=gitTextsInformation{}.value output=lang_values
| eval lang_pairs=mvzip(lang_keys, lang_values, "|")
| mvexpand lang_pairs
| eval lang=mvindex(split(lang_pairs, "|"), 0), count=mvindex(split(lang_pairs, "|"), 1)
| convert num(count)
| table repo_name lang count

关键步骤说明

  • spath:从JSON里精准提取仓库名、语言标识和对应数值
  • mvexpand:两次展开数组——先把每个仓库拆成单独行,再把每个语言-数值对拆成单独行
  • mvzip:把对应的语言和数值绑定成字符串,避免拆分时错位
  • convert num(count):把字符串类型的数值转成数字,保证饼图能正确计算占比

生成表格后,直接切换到可视化面板选择饼图即可,还能通过repo_name筛选特定仓库,生成对应单独的饼图。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:46:01