我正在尝试通过命令行获取 1 分钟内服务器上平均请求命中的数据。如果有人能帮助我,我将非常感激。
答案1
虽然我不太确定你想要完成什么,但我有一个想法:只需使用 netcat 直接从互联网上获取请求:
netcat -k -l 1.2.3.4 8080 >/tmp/requests.log
确保将 1.2.3.4 替换为您的服务器的 IP 地址,将 8080 替换为其正在监听的端口(例如,可以是 80)。如果您的 nginx 服务器监听 IP 0.0.0.0,netcat 将能够抓取任何传入请求并记录它们。如果 ngingx 正在监听 1.2.3.4,您必须先停止它,然后 netcat 才能监听 1.2.3.4 和与 ngingx 相同的端口。
请注意,在某些 Linux 系统上,netcat
您必须输入nc
。
还要注意,无论 netcat 抓取什么,nginx 都无法读取,因此您的网站访问者将收到错误消息。
如果端口号低于1024,netcat需要root权限才能打开该端口。
答案2
答案3
如果您尝试从现有日志中获取平均分钟级数据,则需要执行以下操作:
cat /var/log/nginx/access.log | sed -E 's/.[0-9]{2}/[A-Za-z]{3}/[0-9]{4}:([0-9]{2}:[0-9]{2})./\1/' | uniq -c