IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    通过 Nginx 的 access_log 分析网站的流量

    Teacher Du发表于 2025-01-12 14:23:00
    love 0

    在当今数字化时代,网站流量分析对于理解用户行为、优化网站性能以及制定营销策略至关重要。本文将探讨如何通过分析 Nginx 的 access_log 获取网站流量的多维度数据,并给出具体操作步骤和分析方法。

    日志格式

    在开始分析前,我们需要了解 access_log 的默认日志格式。通常情况 access_log 的日志格式如下:

    1
    2
    3
    log_format combined '$remote_addr - $remote_user [$time_local] '
    '"$request" $status $body_bytes_sent '
    '"$http_referer" "$http_user_agent"';

    这个格式包含以下字段:

    字段说明
    $remote_addr客户端 IP 地址
    $remote_user客户端用户名
    $time_local本地时间
    $request请求方法、请求 URI 以及 HTTP 版本
    $statusHTTP 状态码
    $body_bytes_sent发送给客户端的字节数
    $http_referer请求来源的 URL
    $http_user_agent客户端浏览器的用户代理字符串

    Nginx 访问量分析

    要统计网站的总访问量,可通过计算 access_log 文件的行数来实现。在 Linux 系统中可以使用 wc -l 命令,该命令会输出 access.log 文件的行数,即为网站总访问量:

    1
    wc -l access.log

    了解访问量在不同时间段的分布情况,有助于我们发现网站访问高峰和低谷。可以使用 awk 命令按小时或分钟统计请求数,下面的命令会输出按小时或分钟统计的请求数,并且显示请求数最多的前 100 个时间点:

    1
    2
    3
    4
    # 每小时统计请求数
    awk '{print $4}' access.log | cut -c 14-15 | sort | uniq -c | sort -nr | head -n 100
    # 每分钟统计请求数
    awk '{print $4}' access.log | cut -c 14-18 | sort | uniq -c | sort -nr | head -n 100

    访问来源分析

    分析访问来源 IP 可以了解用户主要来自哪些地区或网络环境。使用 awk 和 sort 命令可以统计访问量最多的 IP 地址,该命令会输出访问量最多的前 10 个 IP 地址及其访问次数:

    1
    awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10

    查看访问来源 URL 有助于我们了解用户是如何找到我们网站的。可以使用以下命令统计访问来源最多的 URL,该命令会输出访问来源最多的前 10 个 URL 及访问次数:

    1
    awk '{print $11}' access.log | sort | uniq -c | sort -nr | head -n 10

    页面访问分析

    了解哪些页面访问量最高可帮助我们优化这些页面的性能和内容。使用 awk 命令可统计访问最频繁的页面,下面命令会输出访问最频繁的前 100 个页面及其访问次数:

    1
    awk '{print $7}' access.log | sort | uniq -c | sort -rn | head -n 100

    分析页面的访问时间可以发现哪些页面的加载时间较长,需要优化。在 Nginx 的 log_format 中加入 $request_time 字段,然后使用以下命令列出传输时间超过 3 秒页面,该命令会输出传输时间超过 3 秒的页面及其出现的次数,仅显示前 20 条记录:

    1
    cat access.log | awk '($NF > 3){print $7}' | sort -n | uniq -c | sort -nr | head -20

    用户行为分析

    分析用户代理字符串可以了解用户使用的浏览器类型和版本。使用 awk 命令可统计不同浏览器的访问次数,该命令会输出不同浏览器访问次数及其用户代理字符串:

    1
    awk -F '"' '{print $6}' access.log | sort | uniq -c | sort -nr | head -n 10

    通过分析用户的访问路径可以了解用户在网站中的导航行为。可以使用以下命令统计访问路径的长度和频率,该命令会输出访问路径的长度及其出现的次数,仅显示前 10 条记录:

    1
    awk '{print $7}' access.log | awk -F '/' '{print NF-1}' | sort | uniq -c | sort -nr | head -n 10

    性能分析

    响应时间是衡量网站性能的重要指标之一。可使用以下命令统计响应时间的分布情况,该命令会输出响应时间及其出现次数,仅显示前 10 条记录:

    1
    awk '{print $NF}' access.log | sort -n | uniq -c | sort -nr | head -n 10

    HTTP 状态码反映了请求的成功与否以及错误类型。可以使用以下命令统计不同状态码的出现次数,该命令会输出不同状态码及其出现的次数,仅显示前 10 条记录:

    1
    awk '{print $9}' access.log | sort | uniq -c | sort -nr | head -n 10


沪ICP备19023445号-2号
友情链接