![如何处理、转换和重新发送来自 syslogd 的 1000req/sec 日志条目?](https://linux22.com/image/587252/%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E3%80%81%E8%BD%AC%E6%8D%A2%E5%92%8C%E9%87%8D%E6%96%B0%E5%8F%91%E9%80%81%E6%9D%A5%E8%87%AA%20syslogd%20%E7%9A%84%201000req%2Fsec%20%E6%97%A5%E5%BF%97%E6%9D%A1%E7%9B%AE%EF%BC%9F.png)
我目前有两台机器,每秒接收大约 1000 个 HTTP 请求,并且每个请求都会生成一个日志条目。此日志集中在另一台机器上运行的 syslog 守护程序上。
由于不太相关的原因,我需要将这些日志发送到内部发布/订阅服务器(每个日志条目将是通过 UDP 发送的 JSON 有效负载),以便进行[近]实时的进一步处理。
我考虑将所有内容保留到 syslog 守护进程,因为我仍然需要集中这些日志,但想知道如何将其从那里转移到发布/订阅服务器。目前我脑海中浮现的几件事并不是特别好:
- 使用 syslog-ng 和管道作为目的地,并有一个小进程从那里获取内容,对其进行处理并通过 UPD 发送
- 有一个小进程跟踪集中日志文件,处理新条目并通过 UPD 发送它们。
- …
我很想听听一些更有经验的人可能遇到过类似的问题。理想情况下,syslogd 会从不同的机器接收日志,执行所需的 JSON 转换,通过 UPD 发送,然后将其本地写入集中日志文件。一切都很有争议,可以讨论,因为可能还有其他我从未听说过的解决方案。
这里对性能没有真正的要求(1000 个请求/秒是一个非常小的规模)。这里唯一真正的要求是它应该尽可能接近实时(大约 10 秒的延迟或其他延迟是可以接受的)。