我有几个客户端在给定的 Ubuntu 服务器上运行多个低流量网站。设置这些内容时,我总是将每个 Nginx 虚拟主机配置为写入其自己的访问|错误日志文件。
这种方法几乎适用于所有情况,但有一种情况会时不时地困扰我,那就是当一个网站受到某种暴力攻击或甚至是奇怪的异常事件的攻击,这些攻击虽然不是恶意的,但却会产生同样不必要和不需要的流量。
我可以看到 CPU 和内存峰值,但我不知道如何快速识别哪个网站受到严重影响。通常我会tail -f
在每个网站访问日志上运行几秒钟,直到找到写入频率高于预期的日志。
我想知道是否有某种单行脚本可以帮助我快速识别这些访问日志文件中哪个增长最快或写入最多或诸如此类。只要能让我比目前费力的方法更快地找到目标就行。
答案1
假设您将日志文件保存在 /var/log/nginx 下,并且名称包含 access,则可以达到以下效果:
find /var/log/nginx -type f -iname '*access*' -exec wc -l '{}' \+ | sort -n
您将发现日志文件按照点击次数排序,最繁忙的文件最后打印。
请注意,这是一个“或多或少”的迹象,如果您遭受了 Syn 洪水攻击或类似攻击,您应该检查其他内容。