4

我想知道在基础设施中使用 redis 作为代理的优缺点是什么?

目前,我的所有代理都发送到中央 NXLog 服务器,该服务器代理对 logstash --> ES 的请求。

在我的 nxlog 收集器和 logstash 之间使用 redis 服务器可以获得什么?对我来说,这似乎毫无意义,因为 nxlog 已经拥有良好的内存和磁盘缓冲区,以防 logstash 出现故障。

我会得到什么?

谢谢

4

5 回答 5

1

我开始使用redis是因为我觉得它会分离输入和过滤部分。至少在我对配置进行了很多更改的时期。

如您所知,如果您更改 logstash 配置,则必须重新启动该东西。当他重新开始工作时,所有客户端(在我的情况下通过 syslog)注定要重新连接到 logstash 守护进程。

通过在前面放置一个索引器,该索引器保存相对静态的输入配置并将所有内容推送到 redis,我能够重新启动 logstash,而不会导致整个数据中心出现故障。我遇到了一些问题,因为我们的开发人员(还)没有时间来减少发送到 syslog 的无用日志的数量,从而导致服务器溢出。在我们使用logstash之前,它们溢出了用于日志的磁盘空间——虽然更普遍的问题...... :)

于 2015-03-01T10:57:24.670 回答
1

在重负载上:直接调用 ES (HTTP) 可能很危险,如果 ES 出现故障,您可能会遇到问题。

Redis 可以处理更多(更多)写入请求并将其以异步逻辑发送到 ES(HTTP)。

于 2014-11-28T16:09:03.527 回答
0

当与 Logstash 一起使用时,Redis 充当消息队列。您可以有多个作者和多个读者。

通过使用 Redis(或任何其他队列服务),您可以通过向“集群”添加更多服务器来横向扩展 Logstash。这对于小型操作无关紧要,但对于大型安装非常有用。

于 2014-05-07T02:33:10.660 回答
0

在我们构建 ELK 基础设施时,我们最初在使用 logstash 索引器(从 redis 读取)时遇到了很多问题。Redis 会备份并最终死掉。我相信这是因为,为了不丢失日志文件,redis 被配置为不时将缓存持久化到磁盘。当队列“太大”(但仍在可用磁盘空间内)时,redis 会死掉,并带走所有缓存的条目。

如果这是 redis 可以做到的最好的,我不会推荐它。

幸运的是,我们能够解决索引器的问题,这通常会使 redis 队列为空。我们将监控设置为在队列备份时快速发出警报,这是索引器再次不满意的好兆头。

希望有帮助。

于 2014-09-11T16:58:21.843 回答
0

将 Logstash 与 Redis 一起使用时,您可以将 Redis 配置为仅将所有日志条目存储在内存中,这需要内存队列(如 memcache)。

您可能会遇到 Logstash 不会处理发送的日志数量的情况,并且它可能会不断降低您的系统(在我们的环境中观察到)。

如果您觉得 Redis 对您的磁盘来说是一种开销,您可以将其配置为将所有日志存储在内存中,直到它们被 logstash 处理。

于 2014-09-04T22:08:19.837 回答