WEB-28:网站日志分析方法

王尘宇 网站建设 2

作者:王尘宇

公司:西安蓝蜻蜓网络科技有限公司

网站:wangchenyu.com

微信:wangshifucn | QQ:314111741

地点:西安 | 从业经验:2008 年至今(18 年)




一句话答案


网站日志分析方法 是通过收集服务器日志、应用日志、访问日志,使用日志分析工具,发现性能问题、安全威胁、用户行为,指导网站优化的数据处理方法。




日志类型


服务器日志 ⭐⭐⭐⭐⭐


Nginx 日志:

访问日志 (access.log):
192.168.1.1 - - [18/Mar/2026:10:00:00 +0800] "GET /index.html HTTP/1.1" 200 1234 "-" "Mozilla/5.0"

错误日志 (error.log):
2026/03/18 10:00:00 [error] 1234#0: *5678 open() "/var/www/html/notfound" failed (2: No such file or directory)

Apache 日志:

访问日志:
192.168.1.1 - - [18/Mar/2026:10:00:00 +0800] "GET /index.html HTTP/1.1" 200 1234

错误日志:
[Wed Mar 18 10:00:00.123456 2026] [error] [pid 1234] [client 192.168.1.1:5678] File does not exist: /var/www/html/notfound

应用日志 ⭐⭐⭐⭐⭐


Node.js 日志:

// 使用 winston
const logger = winston.createLogger({
  level: 'info',
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.json()
  ),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

// 日志输出
logger.info('用户登录', { userId: 123, ip: '192.168.1.1' });
logger.error('数据库错误', { error: err.message, query: sql });

PHP 日志:

// 错误日志
error_log('用户登录失败:' . $username);

// 自定义日志
file_put_contents(
  '/var/log/app.log',
  date('Y-m-d H:i:s') . " - INFO - 用户登录:$username\n",
  FILE_APPEND
);

数据库日志 ⭐⭐⭐⭐


MySQL 日志:

错误日志 (error.log):
2026-03-18T10:00:00.123456Z 0 [ERROR] InnoDB: Unable to lock ./ibdata1 error: 11

慢查询日志 (slow.log):
# Time: 2026-03-18T10:00:00.123456Z
# User@Host: root[root] @ localhost []
# Query_time: 5.123456  Lock_time: 0.000123
# Rows_sent: 100  Rows_examined: 1000000
SELECT * FROM large_table WHERE condition;



日志分析工具


命令行工具 ⭐⭐⭐⭐⭐


grep 搜索:

# 搜索特定 IP
grep "192.168.1.1" /var/log/nginx/access.log

# 搜索 404 错误
grep " 404 " /var/log/nginx/access.log

# 搜索特定 URL
grep "GET /api/users" /var/log/nginx/access.log

# 统计 404 数量
grep -c " 404 " /var/log/nginx/access.log

awk 分析:

# 统计 IP 访问次数
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

# 统计状态码
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

# 统计最访问的 URL
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

# 计算平均响应时间
awk '{sum+=$10; count++} END {print sum/count}' /var/log/nginx/access.log

实时日志:

# 实时查看日志
tail -f /var/log/nginx/access.log

# 实时过滤
tail -f /var/log/nginx/error.log | grep -i error

# 查看最近 100 行
tail -100 /var/log/nginx/access.log

可视化工具 ⭐⭐⭐⭐⭐


GoAccess:

# 安装
apt-get install goaccess

# 分析日志
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED

# 实时分析
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html

功能:

✅ 实时访问统计
✅ 访客信息
✅ 404 错误
✅ 访问来源
✅ 浏览器/系统
✅ 响应时间

ELK Stack:

Elasticsearch: 存储和搜索
Logstash: 日志收集和处理
Kibana: 可视化展示

优势:
- 实时分析
- 强大搜索
- 丰富图表
- 告警功能



日志分析场景


性能分析 ⭐⭐⭐⭐⭐


慢请求分析:

# 找出最慢的请求
awk '{print $10, $7}' /var/log/nginx/access.log | sort -rn | head -20

# 找出响应时间>5 秒的请求
awk '$10 > 5000 {print $7, $10}' /var/log/nginx/access.log

# 按 URL 分组计算平均响应时间
awk '{sum[$7]+=$10; count[$7]++} END {for (url in sum) print sum[url]/count[url], url}' /var/log/nginx/access.log | sort -rn | head -10

优化建议:

发现慢请求后:
1. 检查数据库查询
2. 检查代码逻辑
3. 添加缓存
4. 优化资源

安全分析 ⭐⭐⭐⭐⭐


攻击检测:

# 检测 SQL 注入尝试
grep -i "select\|union\|insert\|delete\|drop" /var/log/nginx/access.log

# 检测 XSS 尝试
grep -i "<script\|javascript:" /var/log/nginx/access.log

# 检测目录遍历
grep "\.\./\|\.\.%2f" /var/log/nginx/access.log

# 检测暴力破解(同一 IP 大量 401)
awk '$9 == 401 {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

异常流量:

# 单 IP 大量请求
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

# 异常 User-Agent
awk -F'"' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

# 扫描器检测
grep -i "nikto\|sqlmap\|nmap\|scanner" /var/log/nginx/access.log

SEO 分析 ⭐⭐⭐⭐⭐


搜索引擎爬虫:

# 统计爬虫访问
grep -i "googlebot\|baiduspider\|bingbot" /var/log/nginx/access.log | wc -l

# 爬虫访问的页面
grep -i "googlebot" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20

# 爬虫 404 错误
grep -i "googlebot" /var/log/nginx/access.log | grep " 404 " | awk '{print $7}' | sort | uniq -c

优化建议:

1. 修复爬虫 404
2. 优化爬虫抓取
3. 提交 sitemap
4. 监控爬虫行为

用户行为分析 ⭐⭐⭐⭐


访问路径:

# 用户访问流程(按 IP 分组)
awk '{print $1, $7}' /var/log/nginx/access.log | sort | head -100

# 入口页面
awk '{print $1, $7}' /var/log/nginx/access.log | sort | uniq | awk '{print $2}' | sort | uniq -c | sort -rn | head -10

# 退出页面(访问后无后续请求)
# 需要会话追踪,较复杂

转化分析:

# 访问感谢页面(转化)
grep "thank-you\|success" /var/log/nginx/access.log | wc -l

# 转化率
转化数 / 访问数 * 100%



日志管理


日志轮转 ⭐⭐⭐⭐⭐


logrotate 配置:

# /etc/logrotate.d/nginx
/var/log/nginx/*.log {
    daily           # 每天轮转
    missingok       # 日志缺失不报错
    rotate 14       # 保留 14 个
    compress        # 压缩旧日志
    delaycompress   # 延迟一天压缩
    notifempty      # 空日志不轮转
    create 0640 www-data adm
    sharedscripts
    postrotate
        [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

日志保留策略:

访问日志:
- 原始日志:7 天
- 压缩日志:30 天
- 归档日志:90 天

错误日志:
- 原始日志:30 天
- 压缩日志:90 天
- 归档日志:1 年

日志集中 ⭐⭐⭐⭐


集中收集:

方案:
1. rsyslog 转发
2. Filebeat 收集
3. Fluentd 收集

优势:
- 统一管理
- 集中分析
- 防止丢失
- 便于搜索

配置示例:

# rsyslog 配置
# /etc/rsyslog.d/50-default.conf
*.* @log-server.example.com:514



王尘宇实战建议


18 年经验总结


  1. 日志必须开启

- 访问日志

- 错误日志

- 应用日志


  1. 定期分析

- 每日检查错误

- 每周性能分析

- 每月安全审计


  1. 自动化

- 日志轮转

- 自动分析

- 异常告警


  1. 安全存储

- 权限控制

- 备份日志

- 防止篡改


  1. 合规性

- 隐私保护

- 日志脱敏

- 符合法规


西安企业建议


  • 开启完整日志
  • 定期分析优化
  • 重视安全日志
  • 合规存储



常见问题解答


Q1:日志占用太多空间怎么办?


答:

  • 配置日志轮转
  • 压缩旧日志
  • 设置保留期
  • 定期清理

Q2:如何实时查看日志?


答:

  • tail -f 命令
  • GoAccess 实时
  • ELK 实时
  • 监控工具

Q3:日志分析频率多少?


答:

  • 错误日志:每日
  • 访问日志:每周
  • 安全日志:每日
  • 性能日志:每周

Q4:需要保存多久日志?


答:

  • 访问日志:30-90 天
  • 错误日志:90 天 -1 年
  • 安全日志:1 年+
  • 根据法规

Q5:如何保护日志安全?


答:

  • 权限控制
  • 日志脱敏
  • 加密存储
  • 访问审计



总结


网站日志分析方法核心要点:


  • 📝 日志类型 — 服务器、应用、数据库
  • 🛠️ 分析工具 — 命令行、GoAccess、ELK
  • 📊 分析场景 — 性能、安全、SEO、用户
  • 🔄 日志管理 — 轮转、集中、保留
  • 🔒 安全合规 — 权限、脱敏、法规

王尘宇建议: 日志是网站的宝贵数据。定期分析日志,发现问题,指导优化,提升网站质量和安全。




关于作者


王尘宇

西安蓝蜻蜓网络科技有限公司创始人


联系方式:

  • 🌐 网站:wangchenyu.com
  • 💬 微信:wangshifucn
  • 📱 QQ:314111741
  • 📍 地址:陕西西安



本文最后更新:2026 年 3 月 18 日

版权声明:本文为王尘宇原创,属于"网站建设系列"第 28 篇,转载请联系作者并注明出处。

下一篇:WEB-29:网站 CDN 配置与优化


发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~