通过命令行获取nginx服务器上平均请求命中数

通过命令行获取nginx服务器上平均请求命中数

我正在尝试通过命令行获取 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

你可能想要使用 ngxtop为了这

答案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

相关内容