0

我有以下格式的 Splunk 结果:

2021-11-13 01:02:50.127 ERROR 23 --- [ taskExecutor-2] c.c.p.r.service.RedisService             : The Redis Cache had no record for key: null Returning empty list.

2021-10-22 21:11:51.996 ERROR 22 --- [ taskExecutor-1] c.c.p.r.service.SftpService           : Could not delete file: /-/XYZ.FILE - 4: Failure

2021-10-22 02:05:14.426 ERROR 22 --- [ taskExecutor-1] c.c.p.r.service.SftpService           : Could not delete file: /-/XYZ.FILE - 4: Failure

我想以以下格式创建可视化:

错误信息 时间 错误代码 任务执行者编号 服务名称 数数
Redis 缓存没有 key 记录:null 返回空列表。 2021-11-13 01:02:50.127 23 任务执行器-2 ccprservice.RedisService 1
无法删除文件:/-/XYZ.FILE - 4:失败 2021-10-22 21:11:51.996 22 任务执行器-1 ccpr服务。FTP服务 2
无法删除文件:/-/XYZ.FILE - 4:失败 2021-10-22 02:05:14.426 22 任务执行器-1 ccpr服务。FTP服务 2

计数变量仅基于“错误消息” 。由于“无法删除文件:/-/XYZ.FILE - 4:失败”出现了两次,因此计数设置为 2。随着日志的增长,以及此消息出现的增加,此计数也应该增加。

我尝试使用来自 Splunk 的 erex 和子字符串,但失败了!

这是我尝试的查询:

index=my_index "ERROR * ---" "taskExecutor-*" | rex "^(?<Time>\S+\s+\S+)\s+\S+\s+(?<Error_Code>\d+)[^\]]+\]\s+(?<Service_Name>\S+)\:\s+(?<Error_Message>.+)"
| table Error_Message Time Error_Code Service_Name 
| eventstats count as Count by Error_Message Error_Code Service_Name

似乎正则表达式有问题:https ://regex101.com/r/smWKM8/2

任何有关如何修复此 REGEX 的帮助将不胜感激。

谢谢

4

1 回答 1

2

正则表达式只是缺少一些空格。

(?<Time>\S+\s+\S+)\s+\S+\s+(?<Error_Code>\d+)[^\]]+\]\s+(?<Service_Name>\S+)\s*:\s+(?<Error_Message>.+)

根据语句count variable is based on the "Error Message" only,我稍微调整了查询​​。

index=my_index "ERROR * ---" "taskExecutor-*" 
| rex "^(?<Time>\S+\s+\S+)\s+\S+\s+(?<Error_Code>\d+)[^\]]+\]\s+(?<Service_Name>\S+)\s*:\s+(?<Error_Message>.+)"
| eventstats count as Count by Error_Message 
| table Error_Message Time Error_Code Service_Name 
于 2021-11-17T01:34:42.067 回答