我目前有两台机器,每秒接收大约 1000 个 HTTP 请求,并且每个请求都会生成一个日志条目。此日志集中在另一台机器上运行的 syslog 守护程序上。
由于不太相关的原因,我需要将这些日志发送到内部发布/订阅服务器(每个日志条目将是通过 UDP 发送的 JSON 有效负载),以便进行[近]实时的进一步处理。
我考虑将所有内容保留到 syslog 守护进程,因为我仍然需要集中这些日志,但想知道如何将其从那里转移到发布/订阅服务器。目前我脑海中浮现的几件事并不是特别好:
- 使用 syslog-ng 和管道作为目的地,并有一个小进程从那里获取内容,对其进行处理并通过 UPD 发送
- 有一个小进程跟踪集中日志文件,处理新条目并通过 UPD 发送它们。
- …
我很想听听一些更有经验的人可能遇到过类似的问题。理想情况下,syslogd 会从不同的机器接收日志,执行所需的 JSON 转换,通过 UPD 发送,然后将其本地写入集中日志文件。一切都很有争议,可以讨论,因为可能还有其他我从未听说过的解决方案。
这里对性能没有真正的要求(1000 个请求/秒是一个非常小的规模)。这里唯一真正的要求是它应该尽可能接近实时(大约 10 秒的延迟或其他延迟是可以接受的)。