Лучший способ собрать все журналы Apache для всех моих экземпляров EC2 Web Server в одном месте, создать экземпляр EC2 Micro «LogServer» и указать на него все конфигурации Apache? Не знаю, как это сделать, и не знаю, может ли кто-нибудь помочь в этом. Мне нужно делать это через системный журнал?
Я предполагаю, что вы используете SystemD На базе Linux Rsyslog лучше подходит в этой ситуации:
На центральном сервере журналов
Разрешить серверу получать журналы от клиентов через порт 514 через udp раскомментировав приведенные выше строки на /etc/rsyslog.conf :
$ModLoad imudp
$UDPServerRun 514
О клиентах
Разрешить клиентам отправлять Apache журналы ошибок, доступа, агента и SSL на центральный сервер путем редактирования Apache Файл конфигурации /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
P.S: Используйте любой тег для объекта, чтобы различать журналы, полученные от разных клиентов. Здесь я использовал host1 как тег.
Перезапустите httpd на клиентах:
systemctl restart httpd
На центральном сервере журналов и клиентах перезапустите rsyslogd:
systemctl restart rsyslog
Проверьте журналы на центральном сервере журналов:
grep 'httpd-host1' /var/log/messages
Вы можете использовать syslog, если хотите свернуть свой собственный, один из способов - использовать канал, например
CustomLog "| /usr/sbin/rotatelogs /var/log/httpd/access_log.%Y-%m-%d-%H_%M_%S 86400"
В этом примере журнал доступа apache передается в файл через утилиту rotatelogs (см. "|" В начале). Вы можете заменить его своим собственным скриптом, который отправляет журнал куда угодно.
Вы можете сделать это через системный журнал, и мне кажется, что наличие сервера журналов - это нормально. Чтобы узнать, как это сделать, я бы посоветовал почитать, поскольку это очень распространенная проблема, вы можете начать здесь: Удаленный вход в Apache