使用Fluentd更新mongo记录

时间:2019-05-01 08:16:37

标签: node.js mongodb fluentd td-agent

我们需要将我们的nodejs应用程序日志保存为MongoDB上的记录。 我们应该创建的大多数记录,但是有些记录只需要更新即可。

我们要使用Fluentd。我看到它可以选择向mongo插入日志,但是我找不到更新现有记录的方法。

有没有办法做到这一点?

这是我当前的td-agent.conf(仍在开发中):

thread::join()

1 个答案:

答案 0 :(得分:1)

查看流利的mongo插件的documentationcode,看来它不支持更新/更新操作。

当前,它仅执行insert_many操作。

get_collection(database, collection, @collection_options).insert_many(records)

https://github.com/fluent/fluent-plugin-mongo/blob/master/lib/fluent/plugin/out_mongo.rb#L265

一种选择是使用update_many(或批量上传)操作在此存储库上创建功能请求或提取请求,但这要求您在每个文档插入中发送更新字段。


更新-还有其他工具吗?。

我可以想到logstash,但即使它也打开了许多功能请求,以支持对MongoDB的更新/更新。

https://github.com/logstash-plugins/logstash-output-mongodb/issues/16

当您检查以上链接注释时,建议您对于日志存储通常不希望执行更新操作。

https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying

我要说的是,首先要重新设计更新日志的方法,否则将创建一个自定义应用程序(Java,NodeJS,Python或.NET Core),该应用程序可以执行更新操作(替换有效内容或从有效内容传播到自定义应用程序再到mongodb)。