У нас Tomcat работает на сервере Ubuntu. Он запускает веб-службу, открытую для Интернета.
Иногда бывает внезапный всплеск трафика и он падает. В журналах доступа Tomcat нет ничего необычного. Я предполагаю, что это связано с тем, что некоторые запросы настолько «тяжелые», что они никогда не завершаются и, следовательно, не записываются в журналы доступа Tomcat.
Есть ли способ настроить Ubuntu или сторонний инструмент регистрировать входящие запросы в следующем формате (ниже)?
Дата, время, URL (с параметрами строки запроса), IP-адрес (клиента)
В запросе должна быть одна строка. Каждый запрос должен регистрироваться перед его выполнением. Регистрируются только входящие запросы к портам 80 и 443.
Установите nginx (или Apache) и настройте его как простой обратный прокси перед Tomcat. Ниже приведен пример конфигурации, которую вы можете использовать на виртуальном хосте в nginx. Формат журнала доступа по умолчанию должен предоставить вам необходимую информацию.
server {
listen 80;
server_name www.example.org example.org;
location /context/ {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tomcat-server:8080/context/;
}
access_log /var/log/nginx/www.example.org-access.log;
error_log /var/log/nginx/www.example.org-error.log;
}
Изменить: даже если Tomcat не смог обработать запрос, он должен быть зарегистрирован в nginx (а также в Tomcat).
2 возможных решения для вас.
LOG
target на странице руководства iptables. предостережение: iptables НЕ поддерживает http. Вы получите всю необходимую информацию, кроме запрошенного URL.