我有多个 Apache 服务器,我想集中管理它们的访问日志。我想知道是否可以使用命名管道和 netcat 来实现这一点,但我担心可能会发生以下两种情况:
中央日志将无法读取,因为如果 2 个服务器恰好同时写入日志,netcat 只会合并 2 个日志行。例如,第一个日志行将写入一半,然后另一个开始。所以问题是 netcat 是否有某种针对这种竞争条件的保护措施?
如果 netcat 崩溃,Apache 进程将被阻止,因为它将无法再写入命名管道,因为没有进程会从此管道读取数据。这是一个合理的担忧吗?
我计划的设置如下:
在共享存储服务器上,我将运行类似
nc -l [port_number] > shared_access_log
在每台装有 Apache 的机器上,我都会运行类似
nc [ip_of_shared_server] [port_number] < [path_to_named_pipe]
然后我将把每个 Apache 服务器访问日志指向命名管道。
关于我对混合日志条目的第一个担忧,我当时正在考虑在共享服务器上编写一个简单的服务器,它将确保按照从其他每个服务器接受日志条目的顺序写入日志条目。但我不确定这是否真的有必要。
谢谢!