我已经按照下面提到的架构实现了logstash(在测试中)。

组件分解

  • Rsyslog客户端:默认情况下,所有Linux destros中都安装了syslog,我们只需要配置rsyslog即可将日志发送到远程服务器。
  • Logstash: Logstash将接收来自syslog客户端的日志,并且它将
    存储在Redis中。
  • Redis: Redis将充当代理,代理将保留由代理发送的日志数据,然后再对logstash进行索引。拥有代理将提高Logstash服务器的性能,Redis充当日志数据的缓冲区,直到Logstash对其进行索引并存储为止。由于它在RAM中太快了。
  • Logstash:是,两个logstash实例,第一个用于syslog服务器,
    第二个用于从redis读取数据并将其发送到elasticsearch。
  • Elasticsearch:中央日志服务器的主要目标是在一个地方收集所有日志,此外它还应提供一些有意义的数据进行分析。就像您应该能够在指定时间段内搜索特定应用程序的所有日志数据。因此,我们的logstash服务器上必须具有搜索和良好索引功能。为此,我们将安装另一个名为elasticsearch的开源工具.Elasticsearch使用一种建立索引的机制,然后搜索该索引以使其更快。它是一种用于文本数据的搜索引擎。
  • Kibana: Kibana是一种用户友好的查看,搜索和可视化方式
    您的日志数据

  • 但是我有点与redis混淆。在这种情况下,我将在Logstash服务器上运行3个Java进程,并在一个Redis上运行,这将耗费大量时间。

    问题
    我可以只使用一个logtash和 Elasticsearch 吗?还是最好的方法是什么?

    最佳答案

    我实际上正在我的公司中设置logstash,redis,elasticsearch和kibana(又名ELK架构)。

    我将进程分配在虚拟机之间。虽然您可以将它们放在同一台计算机上,但是如果计算机死了,会发生什么呢?然后,您将剩下索引器并同时聚类。

    您还存在无法在Elasticsearch上正确复制分片的问题。由于只有一台服务器,因此不会复制这些分片,并且群集的运行状况将始终为黄色。您需要添加足够的服务器以避免split-brain scenario

    为什么保留Redis?

    由于Redis可以与多个logstash索引器进行通信,因此一个关键点是,这使索引对您的托运人透明,因为如果一个索引器发生故障,则替代项将承担负载。这使您的设置具有高可用性。

    这不仅是运送日志并将它们编入索引和进行搜索的问题。尽管您的设置可能会在很小的情况下正常工作,但人们使用ELK设置要做的事情是数百台服务器,甚至数千台服务器,因此ELK体系结构是可以扩展的。所有这些服务器也将需要由称为Puppet的东西进行远程管理。

    最后,如果您尚未阅读,建议您阅读James Turnbull撰写的Logstash Book。

    以下是到目前为止对我有帮助的一些更受推荐的书:

  • Pro木偶,第二版
  • Elasticsearch Cookbook,第二版
  • Redis食谱
  • 行动中的Redis
  • 掌握Elasticsearch
  • ElasticSearch服务器
  • Elasticsearch:权威指南
  • 木偶类型和提供程序
  • 木偶3食谱
  • 10-06 12:36
    查看更多