splunk - Splunk 查询从两个查询中获取不匹配的 ID
问题描述
Index=* sourcetype="publisher" namespace="app_1" | table ID message | where message="published"
Index=* sourcetype="consumer" namespace="app_1" | table ID message | where message="consumed"
我想通过比较两个查询来显示不匹配的 ID,我该如何实现。
如果查询 1 给出 100 条记录,查询 2 给出 90 条记录,并且所有 90 条记录都存在于查询 1 中,那么我想查看查询 2 中不存在的 10 条记录。
解决方案
有几种方法可以实现这一结果。
下面统计每个 ID 的消费者和生产者事件的数量,然后显示仅发生一次的事件的 ID。
index=* sourcetype="publisher" OR sourcetype="consumer" namespace="app_1" ID="*" | stats count by ID | where count<2
在下一个方法中,我们使用子搜索和连接。这样做的好处是为您提供完整的事件,而不仅仅是 ID。
index=* sourcetype="publisher" namespace="app_1" ID="*" | join type=outer ID [ search index=* sourcetype="consumer" namespace="app_1" ID="*" | eval does_match=1 ] | where isnull(does_match)
推荐阅读
- python - 正则表达式匹配行
- hyperledger-fabric - 链码实例化失败?
- angular - 无法使用 angular6 在 ng-content 中使用 Transclusion
- javascript - 使用 cognito 进行身份验证时,在 IE11 上未定义 Fetch
- json - 试图从结构中获取“变量”,但是当我尝试时说结构没有成员“变量”
- elasticsearch - 在 Elasticsearch for Go 中为 Completion Suggester 传递什么参数?
- java - 为什么在 Android 9.0 中 webview 中的进度条显示有延迟?
- php - 级联删除在虚拟机上不起作用
- oracle - 从表中选择行,其中每一行的另一列中的值相同
- sql - 在 ssms 中执行时,VS-2017 SSIS 中的已评估变量和成功评估的包不起作用