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