如何统计同一字段中特定值的出现次数?

How to count specific value occurrences in the same field?

我有一个json splunk日志,我需要得到"message"字段等于"Total request time"的次数,然后在同一个字符串中我需要计算 "message" 字段等于 "sub-request time" 的次数。大多数日志都使用同一个模板,因此 "message" 字段可以有多个不同的值。

{
  api:  my-fancy-api 
  app:  MyApp
  category:  RESP_TIME 
  message:  Total request time 
  reference_id:  MyID123123
  session_id:  1442877284-39497 
  time:  09-21-2015 23:14:45.023 +0000 
  total_request_time:  0.557 
  units:  seconds 
}

这实际上是我的 splunk 命令笔记本中的一个模式:)

您通过使用 eval 并有条件地为其分配 10 创建了一个新字段。然后您只需要对字段求和 - 下面的完整示例:

...some search commands (i.e. choose an index)...
| eval msg_total=if(message="Total request time", 1, 0)
| eval msg_subreq=if(message="sub-request time", 1, 0)
| stats sum(msg_total) as "Total messages", sum(msg_subreq) as "Subreq msgs"