Logstash vs Rsyslog用于日志文件聚合



我正在为CentOs 6的集中日志文件聚合提供解决方案。x服务器。在安装了Elasticsearch/Logstash/Kibana (ELK)堆栈之后,我遇到了一个Rsyslog omelasticsearch插件,它可以以Logstash格式从Rsyslog发送消息到Elasticsearch,并开始问自己为什么需要Logstash。

Logstash有很多不同的输入插件,包括一个接受Rsyslog消息。对于需要从多个服务器收集日志文件内容的用例,我是否有理由使用Logstash ?另外,从Rsyslog发送消息到Logstash而不是直接发送到Elasticsearch是否有好处?

如果有一些我需要从它rsyslog没有的东西,我会使用Logstash在中间。例如,从IP地址获取GeoIP。

另一方面,如果我需要在Elasticsearch中索引syslog或文件内容,我会直接使用rsyslog。它可以进行缓冲(磁盘+内存)、过滤,您可以选择文档的外观(例如,您可以输入文本严重性而不是数字),并且它可以解析非结构化数据。但是主要的优点是性能,rsyslog关注的是性能。以下是关于Logstash, rsyslog和Elasticsearch的一些数字(以及技巧和技巧)的演示:http://blog.sematext.com/2015/05/18/tuning-elasticsearch-indexing-pipeline-for-logs/

我推荐logstash。这将更容易设置,更多的例子,并测试它们是否适合在一起。

还有一些好处,在logstash中你可以过滤和修改你的日志。

  1. 你可以用有用的数据扩展日志:服务器名,时间戳,…
  2. 将类型,字符串转换为int等(用于正确的弹性索引)
  3. 通过一些规则过滤掉日志

此外,您可以设置批大小以优化保存为弹性。另一个功能是,如果出现问题,并且每秒有大量的日志,elastic无法处理,您可以设置logstash,它将保存一些事件队列或删除无法保存的事件。

如果您直接从服务器到elasticsearch,您可以获得基本文档(假设源是json等)。对我来说,logstash的强大之处是通过应用业务逻辑来修改和扩展日志,从而为日志增加价值。

这里有一个例子:syslog提供一个优先级级别(0-7)。我不想有一个饼状图,其中的值是0-7,所以我做了一个新的字段,其中包含漂亮的名字("emerg","debug"等),可用于显示。

如果您真的希望依赖系统在负载下运行并具有高可用性,那么这两种方法都不是可行的选择。

我们发现使用rsyslog发送到一个集中的位置,使用kafka的redis进行归档,然后使用logstash完成它的魔法并发送到Elasticsearch是最好的选择。

在这里阅读我们的博客- http://logz.io/blog/deploy-elk-production/

(免责声明-我是logz的副总裁产品。

最新更新