用于日志文件聚合的 Logstash 与 Rsyslog
Posted
技术标签:
【中文标题】用于日志文件聚合的 Logstash 与 Rsyslog【英文标题】:Logstash vs Rsyslog for log file aggregation 【发布时间】:2015-11-14 11:50:26 【问题描述】:我正在研究一种从我们的 CentOs 6.x 服务器集中日志文件聚合的解决方案。在安装 Elasticsearch/Logstash/Kibana (ELK) 堆栈后,我遇到了一个 Rsyslog omelasticsearch 插件,它可以将消息从 Rsyslog 以 logstash 格式发送到 Elasticsearch,并开始问自己为什么需要 Logstash。
Logstash 有很多不同的输入插件,包括一个接受 Rsyslog 消息的插件。我是否有理由将 Logstash 用于需要从多个服务器收集日志文件内容的用例?另外,将消息从 Rsyslog 发送到 Logstash 而不是直接发送到 Elasticsearch 有什么好处吗?
【问题讨论】:
【参考方案1】:如果您真的想依靠系统在负载下运行并保持高可用性,这两种方法都不是一个可行的选择。
我们发现使用 rsyslog 发送到一个集中位置,使用 kafka 的 redis 将其归档,然后使用 logstash 发挥其魔力并传送到 Elasticsearch 是最佳选择。
阅读我们的博客here - http://logz.io/blog/deploy-elk-production/
(免责声明 - 我是 logz.io 的 VP 产品,我们提供 ELK 作为服务)
【讨论】:
【参考方案2】:如果我需要一些 rsyslog 没有的东西,我会在中间使用 Logstash。例如,从 IP 地址获取 GeoIP。
另一方面,如果我需要在 Elasticsearch 中获取 syslog 或文件内容索引,我会直接使用 rsyslog。它可以做缓冲(磁盘+内存)、过滤,您可以选择文档的外观(例如,您可以使用文本严重性而不是数字),并且可以解析非结构化数据。但主要优点是性能,rsyslog 专注于性能。这是一个关于 Logstash、rsyslog 和 Elasticsearch 的演示文稿,其中包含一些数字(以及提示和技巧): http://blog.sematext.com/2015/05/18/tuning-elasticsearch-indexing-pipeline-for-logs/
【讨论】:
【参考方案3】:我会推荐logstash。这将更容易设置,更多示例,并且经过测试它们可以组合在一起。
另外,还有一些好处,在logstash中你可以过滤和修改你的日志。
-
您可以使用有用的数据扩展日志:服务器名称、时间戳……
强制转换类型、字符串到 int 等(有助于正确的弹性索引)
通过一些规则过滤掉日志
此外,您可以设置批量大小以优化保存到弹性。 另一个功能,如果出现问题并且弹性无法处理的每秒大量日志,您可以设置 logstash 以保存一些事件队列或丢弃无法保存的事件。
【讨论】:
谢谢! Rsyslog 可以做 #1 - this article 显示如何报告主机名和时间戳。它也可以做#3 - this page 显示如何配置规则。我不认为我有 #2 的用例 - 类型转换。我们每秒没有大量的日志。因此,我正在尝试评估在我的虚拟机上安装和管理额外客户端(logstash)的权衡以及从中获得的好处。想法?链接?再次感谢! 嗯,这很有趣,看起来 rsyslog 可以处理缓冲以及扩展/过滤。可能这是一个很好的方法,而且似乎 rsyslog + elastic 可以很好地结合在一起。如果 rsyslog 工作正常,请尝试一下。 Logstash 需要相当多的 ram 内存,并且 logstash 存在一些问题,它并不完美。【参考方案4】:如果你直接从服务器到elasticsearch,你可以得到基本的文档(假设来源是json等)。对我来说,logstash 的强大之处在于通过应用业务逻辑来修改和扩展日志,从而为日志增加价值。
这是一个示例:syslog 提供了一个优先级 (0-7)。我不想有一个值为 0-7 的饼图,所以我创建了一个新字段,其中包含可用于显示的漂亮名称(“emerg”、“debug”等)。
只是一个例子......
【讨论】:
在了解了rsyslog的工作原理后,我可以说在rsyslog配置中可以相对容易地实现业务逻辑。对于您的具体示例,您可以使用 syslogseverity-text rsyslog 属性而不是 syslogseverity。以上是关于用于日志文件聚合的 Logstash 与 Rsyslog的主要内容,如果未能解决你的问题,请参考以下文章