Ruby Logstash-将数据保存在内存中的输入文件插件
我有1-一个单一的CSV文件和2-一个活卡夫卡流。KAFKA stream带来了实时流日志,CSV文件包含元数据记录,在将它们发送到Elastic Search之前,我需要将它们与流日志连接起来 卡夫卡流日志和CSV记录示例:Ruby Logstash-将数据保存在内存中的输入文件插件,ruby,
elasticsearch,join,apache-kafka,logstash,Ruby,
elasticsearch,Join,Apache Kafka,Logstash,我有1-一个单一的CSV文件和2-一个活卡夫卡流。KAFKA stream带来了实时流日志,CSV文件包含元数据记录,在将它们发送到Elastic Search之前,我需要将它们与流日志连接起来 卡夫卡流日志和CSV记录示例: KAFKA log: MachineID: 2424, MachineType: 1, MessageType: 9 CSV record: MachineID: 2424, MachineOwner: JohnDuo 在发送到ES之前,我需要在logstash中生成记
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查找会降低我的日志存储性能。尝试此筛选器
你需要这样的东西
filter {
translate {
dictionary_path => "/path/to/your/csv/file.csv"
field => "[MachineId]"
destination => "[MachineOwner]"
fallback => "not found"
}
}
然后,在文件.csv
中,您将看到以下内容
2424,JohnDuo
2425,AnotherUser
对于具有字段MachineId
的每个事件,此筛选器将在字典中查找此id,如果找到匹配项,它将使用匹配值创建名为MachineOwner
的字段,如果未找到匹配项,它将使用值未找到创建字段MachineOwner
,如果不想在不匹配的情况下创建字段,可以删除回退
选项
当logstash启动时,字典将加载到内存中,并且每300秒重新加载一次,您也可以更改该行为。如果我的CSV文件有多个字段,如MachineID、MachineOwner、Address、Phone等,我是否可以在一个筛选器中创建多个目标字段