logging - 将Scribe集中式日志记录输出发送到Elasticsearch的最佳方法

标签 logging elasticsearch logstash scribe

我们目前正在为我们的众多服务构建集中式日志记录平台。该计划是在每个应用程序服务器上安装一个划线器客户端,它将日志转发到中央划线器服务器。

中央划线服务器当前正在将所有聚合日志记录到磁盘。但是现在我们想在ElasticSearch上为它们建立索引以进行可视化。

我的确切问题是:什么是将日志从中央划线服务器的输出转发到ElasticSearch进行索引的最佳方式(最健壮,容错,计算量较少和内存高效)?

几个值得探讨的想法:

  • 抄写服务器->文件-> Logstash-> ElasticSearch
  • 抄写服务器->文件-> [X]-> RabbitMQ-> Logstash-> ElasticSearch
  • 抄写服务器->文件-> [Y]-> ElasticSearch
  • Scriber服务器-> [Z]-> Elasticsearch

  • X,Y或Z有什么好的选择吗?哪个是最好的方法?请提出建议。

    谢谢。

    最佳答案

    根据我的说法,Z选项是最好的方法。 ElasticSearch适用于容错系统。此机制有分片和副本定义。但是您必须考虑内存效率。索引文档的数量将随时间增加,并且至少需要2倍的存储空间,因为默认配置文件中只有一个分片和一个副本定义。

    编辑:
    如果您已经有中央划线服务器,则假定您在中央服务器上拥有所有日志消息。但是,如果您的中央服务器没有消息传递结构,则所有选项都可以用于您的应用程序。如果要异步实现索引,则可以使用RabbitMQApache solition。我认为您可以看看 Elasticsearch performance considerations进行索引编制。您每秒的索引计数是多少?这对您的应用程序至关重要吗?我的另一个建议是MongoDB。如果您不坚持使用ElasticSearch,我建议您搜索MongoDB。您应该检查此comparison.

    关于logging - 将Scribe集中式日志记录输出发送到Elasticsearch的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26538131/

    相关文章:

    java - log4j2 配置 XML 文件,用于 2 个日志文件,每次运行都有新文件夹

    c# - common.logging - 在应用程序配置文件中找到的重定向

    elasticsearch - 如何在Kibana中安装/启用Elastic APM仪表板

    java - 如何在本地计算机上启动logback + logstash?

    java - 如何以编程方式配置 appender 或初始化 log4j2 中的日志记录?

    java - 如何在这个简单的 Java Logging 实现中附加到日志文件?

    elasticsearch - 无法遍历数组字段ES 6.1

    elasticsearch - 如何在elasticsearch中将bucket键排序为整数?

    nginx - 使用两个配置文件时的Logstash混合输出

    elasticsearch - logstash中的sql_last_value始终为351