如何将所有 EC2 Apache 日志集中到一台服务器

如何将所有 EC2 Apache 日志集中到一台服务器

将所有 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

相关内容