如何用Splunk Query关联异常与端点并整合多日志生成表格
问题描述
有两组关联的应用日志:
请求日志:
timestamp=2023-06-29 00:58:56,830 thread=http-nio-8080-exec-1 loglevel=ERROR traceid=8ae88647f7d41729 spanid=8ae88647f7d41729 message="httpUser=123456, httpClientId=osfgs9fgsd, httpStatusCode=400, httpUrl=/path/to/resource, httpMethod=PUT, httpRequestDuration=70"
对应的异常日志:
timestamp=2023-06-29 00:58:56,829 thread=http-nio-8080-exec-1 loglevel=ERROR traceid=8ae88647f7d41729 spanid=8ae88647f7d41729 message="triggerSplunkAlert, exceptionId=23ghe2eg-cvs-dfs-9bfa-4knkjl, errorCode=IllegalStateException,... (shortened out for brevity)"
需要将两组日志中的信息整合为如下格式的表格:
| time | httpMethod | httpUrl | errorCode |
|---|---|---|---|
| 2023-06-29 00:58 | PUT | /path/to/resource | IllegalStateException |
| 2023-06-29 10:23 | POST | /path/to/whatever | NullPointerException |
咨询如何实现不同日志的信息整合。
解决方案
核心思路:通过关联键匹配日志,提取字段后整合
确定关联标识
两组日志的traceid和spanid完全一致(均为8ae88647f7d41729),这是关联请求日志与对应异常日志的唯一标识。提取目标字段
- 从请求日志中提取:
timestamp(截断到分钟格式)、httpMethod、httpUrl - 从异常日志中提取:
errorCode
- 从请求日志中提取:
手动整合(单条日志)
直接根据关联标识匹配两条日志,将提取的字段填入表格对应列即可,得到第一条表格数据。批量自动化整合(多日志场景)
如果需要处理大量日志,可借助日志分析工具实现,以Splunk为例,使用join命令关联日志并提取字段:index=your_app_index loglevel=ERROR | rex field=message "httpMethod=(?<httpMethod>\w+), httpUrl=(?<httpUrl>[^\s,]+)" | rex field=timestamp "(?<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2})" | join traceid spanid [ search index=your_app_index loglevel=ERROR message="triggerSplunkAlert" | rex field=message "errorCode=(?<errorCode>[^\s,]+)" ] | table time httpMethod httpUrl errorCode该查询会自动关联同
traceid+spanid的请求与异常日志,提取目标字段并生成表格。
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

