Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 从文件日志记录移动到数据库日志记录_Logging_Nosql - Fatal编程技术网

Logging 从文件日志记录移动到数据库日志记录

Logging 从文件日志记录移动到数据库日志记录,logging,nosql,Logging,Nosql,我们目前正在考虑从记录到文件,到记录到NoSQL数据库。我们公司的另一个团队正在开始使用HBase,但对于我们想要做的事情来说,这看起来相当复杂。我一直在看MongoDB,但我想得到一些建议 目前,我们在农场中有数百台服务器用于不同的应用程序。每当我们从其中一个应用程序中听到问题时,都需要一个漫长的过程——从应用程序操作中检索日志,然后是一个漫长的过程来筛选所有日志以找到问题。我们正在考虑将所有日志移到一个中心位置,并围绕它构建一个web UI,以便我们能够更轻松地访问和查询日志 哪种NoSQL

我们目前正在考虑从记录到文件,到记录到NoSQL数据库。我们公司的另一个团队正在开始使用HBase,但对于我们想要做的事情来说,这看起来相当复杂。我一直在看MongoDB,但我想得到一些建议

目前,我们在农场中有数百台服务器用于不同的应用程序。每当我们从其中一个应用程序中听到问题时,都需要一个漫长的过程——从应用程序操作中检索日志,然后是一个漫长的过程来筛选所有日志以找到问题。我们正在考虑将所有日志移到一个中心位置,并围绕它构建一个web UI,以便我们能够更轻松地访问和查询日志

哪种NoSQL数据库最适合存储和查询应用程序日志?

Couchbase 2.0(目前正在开发人员预览版中,但即将测试版)为此提供了一个高性能选项。在日志记录的情况下,您将需要非常快的写入速度,视图和视图查询将为读取/搜索/查询提供灵活性。Couchbase 2.0还将通过弹性搜索集成进行全文搜索


查看:

我看到很多公司都在使用MongoDB来存储应用程序日志。它的模式无关性对于应用程序日志来说非常灵活,在应用程序日志中,模式往往会随时更改。此外,它的特性非常有用,因为它会自动清除旧数据,以使数据适合内存

人们通过普通分组或MapReduce聚合日志,但速度没有那么快。尤其是MongoDB的MapReduce只能在单个线程中工作,其JavaScript执行开销巨大。可以解决这个问题

当您使用MongoDB进行日志记录时,需要考虑的是高写入吞吐量导致的锁争用。尽管默认情况下MongoDB的insert是fire and forget样式,但调用大量insert()会导致严重的写锁争用。这可能会影响应用程序性能,并阻止读卡器聚合/过滤存储的日志

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

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

这里有一些关于MongoDB+Fluentd的教程

  • 关于10gen博客
MongoDB的问题是,当数据量超过内存大小时,它开始变慢。此时,您可以切换到其他解决方案,如apachehadoopCassandra。如果您有上面提到的分布式日志记录层,则可以在增长过程中切换到其他解决方案。本教程介绍如何使用Fluentd将日志存储到HDFS


响应延迟,但此案例看起来非常适合:

Logstash:处理传入日志的Logstash的服务器组件

Elasticsearch:存储所有日志

Kibana:用于搜索和可视化日志的Web界面

您可以使用Logstash转发器将日志发送到Logstash。它充当日志转发代理。您可以查看各种格式的日志文件、数据库和消息存储,并将它们输入Elasticsearch数据库。 之后,您可以使用Kibana web ui查看所有内容。不要为此目的使用SQL/NoSQL数据库构建自定义解决方案

Splunk是另一个类似的商业解决方案 建筑


如果需要超实时性能,请查看基于Kafka的解决方案


更多信息: