我们有在Ubuntu服务器上运行的Tomcat。 它运行一个networking服务,向互联网开放。
有时会突然出现交通堵塞,并且下降。 Tomcat访问日志中没有任何exception。 我想这是因为一些请求是如此“沉重”,他们永远不会完成,因此不logging到Tomcat的访问日志。
有没有办法configurationUbuntu 或第三方工具以下面的格式logging传入的请求?
date,时间,URL(带查询string参数),IP地址(客户端)
每个请求应该有一行。 每个请求在执行之前都应该被logging下来。 只有传入端口80和443的请求应该被logging。
2种可能的解决scheme。
LOG
目标。 警告:iptables不会被HTTP知道。 除了请求的url之外,您将获得所有您想要的信息。 安装nginx(或Apache)并将其configuration为Tomcat之前的简单反向代理。 以下是您可以在nginx的虚拟主机中使用的示例configuration。 默认的访问日志格式应该给你你需要的信息。
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无法提供请求,它应该logging在nginx(也在Tomcat中)。