我正在尝试使用Windows服务器上的RabbitMQ + ELK构建日志管道。
RabbitMQ - > Logstash - > ElasticSearch - > Kibana。
理想情况下,我想拥有2个RabbitMQ实例,2个Logstash实例,3个ElasticSearch实例和1个Kibana实例。
有人设置过这样的东西吗?我知道我们可以通过在yml中设置集群名称来轻松设置ElasticSearch集群。 lagstash写入ES集群的机制是什么?
我应该在每个实例中设置RabbitmQ + Logstash组合,这样如果MQ在负载均衡器后面,每个MQ都有自己的logstash输出实例,并从那里数据进入集群。
答案 0 :(得分:1)
从技术上讲,您可以使用elasticsearch输出插件或Elasticsearch_http输出插件直接从Logstash写入ES(如果使用与Logstash不兼容的ES版本)。对于企业场景而言,您需要容错并处理数量,因此最好使用RabbitMQ / Redis。
您的上述配置看起来不错,但是您的Rabbit群集的输入将来自一个或多个Logstash发货人(在日志所在的客户端计算机上运行的实例),这将指向HA RabbitMQ群集。然后是Logstash索引器,其输入将配置为查看RabbitMQ队列并将其输出到弹性搜索集群。
希望有所帮助。
答案 1 :(得分:1)
不建议将数据从Logstash直接放到ES。 ES写入速度很慢,因此在高负载下您可能会丢失数据。
想法是在Logstash和ES之间添加代理。
Logstash - >代理 - > Elasticsearch
Logstash支持Redis和RabbitMQ作为代理。
此代理可以处理大型输入并用作队列机制。
Logstash将Redis作为主要选择(由于设置和监控的简单性)。