我已经按照下面提到的架构实现了logstash(在测试中)。
组件分解
存储在Redis中。
第二个用于从redis读取数据并将其发送到elasticsearch。
您的日志数据
但是我有点与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。
以下是到目前为止对我有帮助的一些更受推荐的书: