如何解决如何根据字符串中的相似性对字符串进行分组
我有一个 splunk 查询,它按频率生成错误汇总
index="pc_1" LogLevel=ERROR
| eval Message=split(_raw,"|")
| stats count(LogLevel) as Frequency by Message
| sort -Frequency
这会以形式产生结果
留言 | 频率 |
---|---|
没有该用户 | 137 |
无法将邮件发送到 example@email.com:无法访问服务器 | 70 |
无法将邮件发送到 example1@email.com:无法访问服务器 | 43 |
无法验证用户 3456 | 8 |
无法将邮件发送到 example2@email.com:无法访问服务器 | 6 |
无法验证用户 2321 | 5 |
无法验证用户 13321 | 3 |
... | . |
... | . |
... | . |
无法将邮件发送到 examplen@email.com:无法访问服务器 | 1 |
正如您在生成的结果中所注意到的,一些类似的错误正在根据用户电子邮件 ID 和机器 ID 的差异进行拆分。 我正在寻找一种方法,可以根据字符串的相似性对其进行分组。目前我使用的是用普通的正则表达式替换字符串,然后找到频率
index="pc_1" LogLevel=ERROR
| eval Message=split(_raw,"|")
| eval Message=replace("unable to deliver mail to (.)* Unable to reach server","unable to deliver mail to [email]: Unable to reach server")
| eval Message=replace("unable to authenticate user \d+","unable to authenticate user [userId]")
| stats count(LogLevel) as Frequency by Message
| sort -Frequency
这种方法有效,但非常麻烦,因为存在许多不同类型的错误,如果要实施此解决方案,则需要检查每个错误并为每个错误开发正则表达式。
有没有办法通过查询更有效地总结此错误来改善这种情况?
解决方法
子孙后代的答案:
也许 cluster
命令会有所帮助。它将类似的消息分组在一起。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。