linux

如何通过nginx日志找出慢查询

小樊
44
2025-03-03 06:58:09
栏目: 编程语言

通过Nginx日志找出慢查询可以通过以下步骤进行:

  1. 配置Nginx日志格式

示例配置:

http {
    log_format mylog '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent "http_referer" "http_user_agent" "http_x_forwarded_for" request_time';
    access_log /var/log/nginx/access.log mylog;
}
  1. 分析慢查询
awk '$6 > 5 {print $0}' /usr/local/nginx/logs/access.log
awk '$6 > 5 {print $0}' /usr/local/nginx/logs/access.log | sort | uniq -c | sort -n -r
  1. 使用脚本自动化
#!/bin/sh
export PATH=/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin;
export LANG=zh_CN.GB2312;

function usage() {
    echo "Usage: $0 [options] [log_file]"
    exit 1;
}

function slowlog() {
    local log_file=$1
    local slow_pages=30
    local total_requests=0
    local total_time=0

    awk -v log_file="$log_file" '
    {
        split($7, time_arr, " ");
        total_requests++;
        total_time += time_arr[1];
        if (time_arr[1] > 5) {
            print $0;
        }
    }
    END {
        print "Total requests:", total_requests;
        print "Average request time:", total_time / total_requests, "seconds";
    }
    ' "$log_file" | sort -t: -k6,6nr | head -n $slow_pages | sed 's/:/\t/g'
}

case "$1" in
    -h)
        usage
        ;;
    *)
        slowlog "$@"
        ;;
esac

执行脚本:

chmod +x slow.sh
./slow.sh /var/log/nginx/access.log
  1. 使用ELK Stack进行日志分析

通过上述步骤,可以有效地从Nginx日志中找出慢查询,并进行相应的性能优化。

0
看了该问题的人还看了