我们正在考虑将日志分析解决方案从ElasticSearch/Kibana移到Splunk。
我们目前在ElasticSearch中使用"document“在索引时去复制记录:
我们使用每个日志记录的内容哈希来生成id。
在Splunk中,我找到了内部字段"_cd“,它对于Splunk索引中的每个记录都是唯一的:https://docs.splunk.com/Documentation/Splunk/8.1.0/Knowledge/Usedefaultfields
但是,使用来接收记录,我无法找到任何方法将这个"_cd“字段嵌入到请求:https://docs.splunk.com/Documentation/Splunk/8.1.0/Data/HECExamples中
关于如何在扣篮中实现这一点,有什么建议吗?
发布于 2020-12-02 13:28:04
你想达到什么目的?
如果要向HEC发送“唯一”事件,或者在“唯一”日志上运行UFs,则永远不会得到“索引时的记录”。
听起来像你(也许是例行公事?)将相同的数据重新发送到聚合平台--这不是聚合器的问题,而是发送过程的问题。
就像在执行MySQL/PostgreSQL“插入(如果不存在)”操作一样。如果这是正确理解你的情况,根据你的声明
我们目前在ElasticSearch中使用"document“在索引时去复制记录: .html 我们使用每个日志记录的内容哈希来生成id。
然后,您需要评估在发送过程中发生了什么“错误”,您认为需要预先清理数据,然后才能摄入数据。
的确,Splunk不会“在索引时删除记录”--因为它假定输入的数据是“正确的”,不管提交的是什么。
首先,您是如何获得重复数据的?
Splunk中以下划线(例如_time
、_cd
等)开头的字段是,不是可编辑/可发送的--它们是由Splunk在接收数据时生成的。它们都是内部的。可搜索的。有用的。但不能越位。
如果您确实对大量/过多的重复数据、有问题,并且无法修复您的发送进程,那么当搜索用于/报告您摄入的任何内容时,需要依赖SPL中的去重复运营 (主要是使用stats
,在绝对必要/不可避免的情况下使用dedup
)。
发布于 2020-12-02 13:27:41
HEC输入不通过通常的摄入管道,因此并不是所有内部字段都存在。
这并不重要,真的,因为Splunk在索引时不去重复。没有关于搜索数据以确定是否已经存在给定记录的规定。任何重复都必须在搜索时完成。
在搜索时不能使用_cd字段去重复,因为两个相同的记录具有不同的_cd值。
考虑使用像Cribl这样的工具向每个被摄入的记录中添加一个散列,并在Splunk中使用该散列在搜索中去重复。
发布于 2021-08-02 21:01:42
好电话里希格。对于这个用例,Cribl
有一些很好的选择。
https://cribl.io/blog/streaming-data-deduplication-with-cribl/
请注意,如果您正在使用HEC
数据,则可以向Cribl LogStream
数据中添加其他字段。使用LogStream
可以获得更多的选项。这帮我以前的团队节省了很多时间和精力。
https://stackoverflow.com/questions/65101933
复制相似问题