加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – MongoDB日志记录

发布时间:2020-12-16 06:22:38 所属栏目:大数据 来源:网络整理
导读:我正在构建一个日志系统,它将请求和响应记录到分布在多个应用程序节点上的Web服务.我正在考虑使用MongoDB作为存储库并实时登录,或者在x次请求之后更真实地将日志转储到DB.该应用程序的体积相当大,采用Perl构建.有没有人有这方面的经验?建议?或者这是不是吗
我正在构建一个日志系统,它将请求和响应记录到分布在多个应用程序节点上的Web服务.我正在考虑使用MongoDB作为存储库并实时登录,或者在x次请求之后更真实地将日志转储到DB.该应用程序的体积相当大,采用Perl构建.有没有人有这方面的经验?建议?或者这是不是吗?

解决方法

我见过许多公司正在使用MongoDB来存储日志.它的模式免费对于应用程序日志非常灵活,而模式往往会随时更改.此外,它的 Capped Collection功能非常有用,因为它可以自动清除旧数据,使数据保持在内存中.

人们通过正常的分组或MapReduce聚合日志,但速度并不快.特别是MongoDB的MapReduce仅在单个线程中工作,其JavaScript执行开销很大. New aggregation framework可以解决这个问题.

另一个问题是高写入.虽然默认情况下MongoDB的插入是fire-and-forget样式,但调用大量insert命令会导致严重的写入锁争用.这可能会影响应用程序性能,并阻止读者聚合/过滤存储的日志.

一种解决方案可能是使用日志收集器框架,例如Fluentd,Logstash或Flume.这些守护进程应该在每个应用程序节点上启动,并从应用程序进程获取日志.

它们缓冲日志并异步地将数据写入其他系统,如MongoDB / PostgreSQL /等.编写是通过批处理完成的,因此它比直接从应用程序编写要高效得多.此链接描述了如何将日志从Perl程序放入Fluentd.

> Fluentd: Data Import from Perl Applications

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读