如何根据splunk中的第一条消息来标记集群

How to label a cluster based on the first Message in splunk

我正在尝试实现以下功能

生成一个 timechart 显示服务器中发生的不同错误的数量

我可以使用下面的查询来实现

  index = "my_host" LogLevel=ERROR
  | eval Message=mvindex(field1,1) 
  | timechart count(LogLevel) BY Message

这会生成如下图

按预期工作,现在问题是当我尝试对消息进行聚类时

index = "my_host" LogLevel=ERROR
  | eval Message=mvindex(field1,1) 
  | eval Message=mvindex(field1,1) | cluster t=0.2 field=Message showcount=true labelonly=true | timechart count(LogLevel) BY cluster_label

图表完全符合预期,我现在的挑战是如何标记标签 [1, 2, 3, 4, ...] 用户不友好

是否可以将此标签更改为消息字段但仍按 cluster_label 分组?

您需要将消息字段关联到 cluster_label 字段,然后在 timechart 命令中使用新字段。我能够这样做:

index = "my_host" LogLevel=ERROR
| eval Message=mvindex(field1,1) 
| eval Message=mvindex(field1,1) 
| cluster t=0.2 field=Message showcount=true labelonly=true 
| bin span=30m _time
| stats count, first(Message) as CL by cluster_label, _time
| timechart max(count) BY CL

需要 stats 命令来获取每个 cluster_label 的第一条消息,并且需要 bin 来按 _time 对事件进行分组,因此 timechart 将正常工作。在 bin 命令中选择跨度以匹配您的时间 window。 这种方法的一个缺点是 timechart 命令不能自动 select 一个跨度,因为这是由 bin 完成的。