If语句和提取值

问题描述 投票:0回答:1

我的结果集看起来像

{add=[44961373 (1645499799657512961), 44961374 (1645499799658561538), 44962094 (1645499799659610114), 44962095 (1645499799659610117), 44962096 (1645499799660658689), 44962097 (1645499799660658691), 44962098 (1645499799661707264), 44962099 (1645499799661707267), 44962100 (1645499799662755840), 44962101 (1645499799662755843), ... (592 adds)]}

如果add = [数组中包含10个以上的元素。然后,它将(x个添加)放在语句的末尾,以显示实际有多少个添加。如果它少于10,则不会放入(x加)语句。我想要时间表,也要将这些输出单值显示在仪表板(单独的模块)中。

我可以选一个,但我想从逻辑上找出要报告的那个。

index="index" host="host*" path=/update | eval count=mvcount(add) | stats count

将获得数组的计数

index="index" host="host*"  path=/update | stats sum(Adds)

将获得(x个相加)的值。 Adds是一个“提取字段”。

我如何获得或?如果添加数组> 10,请同时使用sum(Adds)。

regex extract splunk splunk-query
1个回答
0
投票
index="index" host="host*" path=/update | eval count=mvcount(add)
| eval first_ten="{add=[".mvjoin(mvindex(add,0,9), ",")." (" (count-10)." adds)}"
| eval msg=if(count<10,_raw,first_ten)

您可以做这样的事情。获取adds的计数,创建一个仅包含前10个元素的新字符串,并在末尾显示count-10 adds消息。然后,根据实际计数,使用原始(_raw)或新消息。

© www.soinside.com 2019 - 2024. All rights reserved.