Apache2 记录到包含服务器 IP 地址的文件

Apache2 记录到包含服务器 IP 地址的文件

我们正在努力实现运行 apache2 的 amazon ec2 网络服务器的负载平衡。在我们建立更好的日志系统之前,我们希望每个实例都简单地将其服务器日志写入共享卷(目前使用 sshfs 共享)

我们遇到的问题是,如果两个实例写入同一个共享日志文件 (/shared-volume/access.log),由于 sshfs 缺乏文件锁定,我们的一些日志会被破坏

由于我们希望实例彼此相同,我们想到的短期解决方案是让 apache 记录到 /shared/log/apache2/[instance-ip]-access.log

这可能吗?

尝试了这个和其他的变体,但似乎日志文件总是被静态解释。

CustomLog /shared/log/apache2/%{SERVER_ADDR}-access.log "%h %l %u %t \"%r\" %>s %b %D"

答案1

这确实似乎有效,有什么缺点吗?

CustomLog "|cat >> /shared/log/apache2/`hostname`-access.log" "%h %l %u %t \"%r\" %>s %b %D" 

答案2

是否可以将解释后退一步,例如移至 mount 命令?Bash 会将“$HOSTNAME”转换为主机名。不要将日志记录到 /shared/log/apache2/,而是记录到 /shared/log,但要确保 /shared/log 实际上是ssh-host:/var/log/apache/$HOSTNAME/。这样,您就可以保持配置相同。

相关内容