Splunk - 根据事件计数和事件数据获取预定义输出

Splunk - Get Prefefined Outputs Based on the event count and event data

我有一个查询如下。结果总是预定义为 -

  1. 如果查询结果有 3 个事件,并且如果第 3 个事件的值为 event="delivered",则整个交易需要返回为 "COMPLETE"。
  2. 如果存在第 3 个事件且 event!="delivered" 则状态变为 "PENDING"
  3. 如果第三个事件根本不存在,则交易被标记为错误

我的查询 -

index=myindex OR index=myindex2 uuid=98as786-ffe6-4de1-929y-080e99bc2e6r (status="202") OR (TransactionStatus="PUBLISHED") | append [search index=myindex2 (logMessage="Producer created new event") event="delivered" OR event="processed" serviceName="abc" [search index=myindex uuid=98as786-ffe6-4de1-929y-080e99bc2e6r AND status="SUCCESS" AND serviceName="abc" | top limit=1 headerId | fields + headerId | rename headerId as message_id]]

结果事件-

事件 1 - 202 已接受

事件 2 - 适配器成功

事件 3 - 传送或错误或已处理

我的高级仪表板应该如下所示 -

完成 - 6378638

待定 - 2173

错误 - 6356

唯一 ID 将是要对其执行计数的 UUID。 有什么可能的方法可以做到这一点 - eval ?抬头 ?不确定,因为我是 splunk 的新手。 如果我遗漏了什么,请告诉我是否需要更多信息。

看看这是否有帮助。您问题中的术语有点不一致,因此您可能需要调整此查询中的字段名称。

index=myindex OR index=myindex2 uuid=98as786-ffe6-4de1-929y-080e99bc2e6r ((status="202") OR (TransactionStatus="PUBLISHED")) OR (index=myindex2 (logMessage="Producer created new event") event="delivered" OR event="processed" serviceName="abc") (index=myindex uuid=98as786-ffe6-4de1-929y-080e99bc2e6r AND status="SUCCESS" AND serviceName="abc" )
| stats count, latest(event) as event by headerId
| eval result=case(count=3 AND event="delivered", "COMPLETE", count=3 AND event!="delivered", "PENDING", count!=3, "ERROR", 1=1, "UNKNOWN")
| stats count by result
| table result count