Logstash设置的建议

Rah*_*til 12 logstash

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

在此输入图像描述

组件分解

  • Rsyslog客户端:默认情况下,syslog安装在所有Linux解析器中,我们只需配置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服务器和一个redis上运行3个java进程,这将需要hugh ram.

问题 我可以只使用一个logstash和弹性搜索吗?或者最好的方法是什么?

Bri*_*ian 8

我实际上是在我的公司设置logstash,redis,elasticsearch,kibana(又名ELK架构).

我在虚拟机之间分配了进程.虽然您可以将它们放在同一台机器上,但如果机器死机会发生什么?然后,您将同时保留索引器和群集.

您还遇到无法在Elasticsearch上正确复制分片的问题.由于您只有一台服务器,因此不会复制分片,并且您的群集运行状况将始终为黄色.您需要添加足够的服务器以避免裂脑情况.

为什么要保留Redis?

由于Redis可以与多个logstash索引器进行通信,因此一个关键点是,这使得索引对您的发货人而言是透明的,因为如果一个索引器发生故障,交替发送器将获得负载.这使您的设置具有高可用性.

这不仅仅是运送日志并将其编入索引和搜索的问题.虽然您的设置可能会在非常小的情况下工作,但人们使用ELK设置的东西是数百台服务器,甚至数千台,因此ELK架构可以扩展.所有这些服务器也需要通过名为Puppet的东西进行远程管理.

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

以下是迄今为止帮助我的一些推荐书籍:

  • Pro Puppet,第二版
  • Elasticsearch Cookbook,第二版
  • Redis Cookbook
  • Redis在行动中
  • 掌握Elasticsearch
  • ElasticSearch服务器
  • Elasticsearch:权威指南
  • 木偶类型和提供者
  • Puppet 3 Cookbook


Ben*_*Lim 8

如果将所有实例放在计算机中,则只能使用一个logstash和elasticsearch.Logstash使用文件输入插件直接读取syslog文件.

否则,您必须使用两个logstash和redis.这是因为logstash没有任何缓冲机制,因此需要redis作为其代理来缓冲日志事件.Redis不使用更多的ram.当logstash从中读取日志事件时,内存将释放.如果redis使用大型ram,则必须添加logstash worker以更快地处理日志.