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

Splunk查询求助:按appID统计服务访问次数

问题描述

我有一段单字符串格式的应用日志,示例如下:

BookData, {
id: 12312
}, appID : 'APP1', Relation_ID : asdas-12312
host = aws@asd. sourcetype=service_name

我需要创建表格,按appID分组统计服务被访问的次数,期望结果如下:

appID Count
APP1    23
APP2    25
APP3    100

我尝试了以下查询,但返回0条记录:

index=my_index sourcetype=service_name * | table appID Count | addColTotals labelfield=appID label="appID" count

我认为问题在于appID不是已提取的字段,请问如何编写正确的查询实现需求?

解决方案

你的判断正确,核心问题是appID未被自动提取为可统计字段,需要先手动提取该字段,再执行分组统计。

正确查询语句

index=my_index sourcetype=service_name
| rex field=_raw "appID\s*:\s*'(?<appID>[^']+)'"
| stats count as Count by appID
| addcoltotals labelfield=appID label="总计"

语句说明

  1. 提取appID字段:通过rex命令从原始日志(_raw字段)中匹配appID : 'XXX'格式内容,将单引号内的字符串捕获为appID字段。正则表达式appID\s*:\s*'(?<appID>[^']+)'的作用:
    • appID\s*:\s*:匹配appID后跟随的任意空格、冒号、任意空格部分
    • (?<appID>[^']+):捕获单引号内所有非单引号字符,命名为appID字段
  2. 分组统计次数:用stats count as Count by appID按appID分组,统计每组的事件数量并将结果命名为Count
  3. 添加总计行:通过addcoltotals添加总计行,将总计行的appID列显示为“总计”

适配调整

如果日志中appID的格式有变化(比如无单引号包裹,如appID : APP1),需要修改正则表达式为appID\s*:\s*(?<appID>\S+)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:00:16