如何解决在 Splunk 中设置表字段的差异
从搜索中我组成了一个表格,我们称之为 T1,由两列 table name,sourcetype
现在我需要创建一个静态的代码生成表,称为T2,其中包含上述表T1 的所有预期值,硬编码。 第一个问题:我怎么办?
第二个问题:
结果,我需要生成一个表T3等于:T2 - T1
,基本上是第一个字段的逻辑集差,它回答了业务问题“我想知道哪些记录是基于 T2 在 T1 中缺失"
我是 Splunk 及其查询语言的新手,我尝试使用 set diff
和 eval
创建静态数据,但我根本没有设法创建我想要的逻辑。
你能指出这个任务的正确逻辑实现吗?
我能流利地使用 SQL 和 Python 编写脚本,有没有我可以重用的概念来更熟悉这种查询语言?
愚蠢的图形示例:
T1
姓名 | 源类型 |
---|---|
service_1 | acpt |
T2
姓名 | 源类型 |
---|---|
service_1 | acpt |
service_2 | acpt |
T3
姓名 | 源类型 |
---|---|
service_2 | acpt |
解决方法
对于问题 2,您可以使用 stats 命令并搜索只有一个计数的字段(所以没有什么共同之处)。这就像一个分组。
|stats count by name sourcetype
搜索count=1后有区别
|search count=1
,
这为事件生成了一些测试数据:
| makeresults count=6
| streamstats count
| eval name="service_".tostring(count)
| eval sourcetype="acpt"
| fields - count _time
名称 | sourcetype |
---|---|
service_1 | acpt |
service_2 | acpt |
service_3 | acpt |
service_4 | acpt |
service_5 | acpt |
service_6 | acpt |
这会生成要排除的事件列表:
| makeresults count=2
| streamstats count
| eval name="service_".tostring(count+2)
| eval sourcetype="acpt"
| fields - count _time
名称 | sourcetype |
---|---|
service_3 | acpt |
service_4 | acpt |
这将打印第一组中所有不在第二组中的项目:
| makeresults count=6
| streamstats count
| eval name="service_".tostring(count)
| eval sourcetype="acpt"
| fields - count _time
| search NOT [
| makeresults count=2
| streamstats count
| eval name="service_".tostring(count+2)
| eval sourcetype="acpt"
| fields - count _time
]
名称 | sourcetype |
---|---|
service_1 | acpt |
service_2 | acpt |
service_5 | acpt |
service_6 | acpt |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。