将所有 EC2 Web 服务器实例 Apache 日志集中到一个位置的最佳方法是创建一个“LogServer”EC2 Micro 实例并将所有 Apache 配置指向它吗?不确定如何执行此操作,想知道是否有人可以提供帮助。我需要通过 Syslog 执行此操作吗?
答案1
您可以通过 syslog 执行此操作,并且我认为拥有日志服务器听起来不错。至于如何执行此操作,我建议阅读一下,因为这是一个非常常见的问题,您可以从这里开始: Apache 远程登录
答案2
如果你想自己动手,可以使用 syslog,一种方法是利用管道,就像这样
CustomLog "| /usr/sbin/rotatelogs /var/log/httpd/access_log.%Y-%m-%d-%H_%M_%S 86400"
在此示例中,apache 访问日志通过 rotatelogs 实用程序传输到文件(参见开头的“|”)。您可以将其替换为自己的脚本,将日志传输到您想要的任何位置。
答案3
我假设你正在使用系统D基于Linux,Rsyslog更适合这种情况:
在中央日志服务器上
允许服务器从端口上的客户端接收日志514通过UDP协议取消注释上述行/etc/rsyslog.conf:
$ModLoad imudp
$UDPServerRun 514
在客户端上
允许客户端发送阿帕奇通过编辑将错误、访问、代理和 SSL 日志发送到中央服务器阿帕奇配置文件/etc/httpd/conf/httpd.conf:
ErrorLog "|/usr/bin/logger -i -t httpd-host1 -p daemon.warning --server syslog.example.com --udp"
CustomLog "|/usr/bin/logger -i -t httpd-host1 -p daemon.info --server syslog.example.com --udp" combined
PS:使用任意标签来区分从不同客户端收到的日志。这里我使用了主机1作为标签。
在客户端上重新启动 httpd:
systemctl restart httpd
在中央日志服务器和客户端上,重新启动 rsyslogd :
systemctl restart rsyslog
检查中央日志服务器上的日志:
grep 'httpd-host1' /var/log/messages