gpt4 book ai didi

ruby - Logstash-输入文件插件以将数据保留在内存中

转载 作者:行者123 更新时间:2023-12-03 02:11:15 24 4
gpt4 key购买 nike

我有1个CSV文件和2个KAFKA实时流。 KAFKA流引入了实时流日志,并且CSV文件包含元数据记录,在将它们发送到Elastic Search之前,我需要将它们与流日志结合起来。
Kafka流日志和CSV记录的示例:

KAFKA log: MachineID: 2424, MachineType: 1, MessageType: 9
CSV record: MachineID: 2424, MachineOwner: JohnDuo
记录在发送到ES之前我需要先在logstash中构建:
MachineID: 2424
MachineOwner: JohnDuo
MachineType: 1
MessageType: 9
我想要一个Ruby或Logstash插件或其他任何解决方案来一次读取此CSV文件
并将它们引入并加入Logstash conf文件中。我需要保留内容
内存中CSV文件的大小,否则在每个实时Kafka日志上进行CSV查询都会破坏我的Logstash性能。

最佳答案

尝试 translate 过滤器。
您将需要这样的东西。

filter {
translate {
dictionary_path => "/path/to/your/csv/file.csv"
field => "[MachineId]"
destination => "[MachineOwner]"
fallback => "not found"
}
}
然后,您将在 file.csv中拥有以下内容。
2424,JohnDuo
2425,AnotherUser
对于每个具有 MachineId字段的事件,此过滤器都会在字典中查找此id,如果找到匹配项,则将创建一个具有匹配值的名为 MachineOwner的字段,如果找不到匹配项,它将将使用值 MachineOwner创建字段 not found,如果您不希望在不匹配的情况下创建字段,则可以删除 fallback选项。
当logstash启动时,该字典将加载到内存中,并且每300秒重新加载一次,您还可以更改该行为。

关于ruby - Logstash-输入文件插件以将数据保留在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64628247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com