我正在研究从CentOs 6.x服务器集中日志文件聚合的解决方案。在安装Elasticsearch / Logstash / Kibana(ELK)堆栈之后,我遇到了一个Rsyslog omelasticsearch插件,该插件可以以logstash格式从Rsyslog向Elasticsearch发送消息,并开始问自己为什么需要Logstash。
Logstash有许多不同的输入插件,包括接受Rsyslog消息的插件。是否有理由将Logstash用于我需要从多个服务器收集日志文件内容的用例?此外,将消息从Rsyslog发送到Logstash是否有好处,而不是将它们直接发送到Elasticsearch?
答案 0 :(得分:4)
如果我需要一些rsyslog没有的东西,我会在中间使用Logstash。例如,从IP地址获取GeoIP。
另一方面,如果我需要在Elasticsearch中获取索引的syslog或文件内容,我会直接使用rsyslog。它可以进行缓冲(磁盘+内存),过滤,您可以选择文档的外观(例如,您可以设置文本严重性而不是数字),并且它可以解析非结构化数据。但主要优势是性能,rsyslog专注于此。这是一个关于Logstash,rsyslog和Elasticsearch的一些数字(以及技巧和窍门)的演示: http://blog.sematext.com/2015/05/18/tuning-elasticsearch-indexing-pipeline-for-logs/
答案 1 :(得分:3)
我建议使用logstash。这将更容易设置,更多示例,并且它们经过测试以适合在一起。
此外,还有一些好处,在logstash中,您可以过滤和修改日志。
此外,您可以设置批量大小以优化保存到弹性。 另一个特性,如果出现问题并且弹性无法处理每秒疯狂的日志数量,您可以设置logstash,它会保存一些事件队列或丢弃无法保存的事件。
答案 2 :(得分:2)
如果你直接从服务器到elasticsearch,你可以获得基本文件(假设源是json等)。对我来说,logstash的强大功能是通过应用业务逻辑来修改和扩展日志,从而为日志增加价值。
以下是一个示例:syslog提供优先级(0-7)。我不想要一个饼图,其值为0-7,所以我创建了一个包含漂亮名称的新字段(" emerg"," debug",等)可以用于显示。
只是一个例子......
答案 3 :(得分:2)
如果您真的想依靠系统在负载下运行并且具有高可用性,那么它们都不是可行的选择。
我们发现使用rsyslog发送到集中位置,使用kafka的redis对其进行存档,然后使用logstash来实现其魔力,并将其发送到Elasticsearch是最佳选择。
阅读我们的博客here - http://logz.io/blog/deploy-elk-production/
(免责声明 - 我是logz.io的副总裁产品,我们提供ELK服务)