上一篇
光年网站日志分析
- 行业动态
- 2025-04-22
- 6
日志基础信息解析
日志格式说明
光年网站采用标准Nginx日志格式,每行日志包含以下字段:
| 字段名 | 示例值 | 含义 |
|————–|———————|————————–|
| IP地址 | 192.168.1.100 | 用户真实IP(含代理穿透) |
| 时间戳 | [12/Mar/2023:09:15] | 请求到达服务器的UTC时间 |
| 请求方法 | GET /index.html | HTTP方法和目标路径 |
| 状态码 | 200 | 服务器响应状态 |
| 响应大小 | 1024 | 返回内容字节数(含Header)|
| 引荐来源 | “google.com” | 流量来源域名 |
| 用户代理 | “Chrome 112.0” | 客户端设备信息 |
关键状态码分类
状态码类型 | 示例 | 业务含义 |
---|---|---|
成功 | 200 | 正常请求 |
重定向 | 302 | 临时跳转(如未www强制跳转) |
客户端错误 | 404 | 资源不存在 |
服务端错误 | 500 | 服务器内部错误 |
核心指标分析
流量趋势分析
# 使用Python+Pandas计算小时级流量分布 import pandas as pd # 加载日志数据 df = pd.read_csv('access.log', sep='s+', names=["ip","time","method","url","status","size","refer","ua"], converters={'time': lambda x: pd.to_datetime(x, format='[%d/%b/%Y:%H:%M:%S]')}) # 按小时聚合请求量 hourly_traffic = df.set_index('time').resample('H').size() print(hourly_traffic)
TOP5热门页面统计
排名 | 路径 | 访问量 | 占比 |
---|---|---|---|
1 | /index.html | 38,500 | 1% |
2 | /product.php | 25,800 | 5% |
3 | /api/v1/data | 18,700 | 6% |
4 | /about.html | 12,300 | 3% |
5 | /contact.php | 9,500 | 0% |
用户行为分析
新老用户比例
用户类型 | 判定标准 | 访问量 | 占比 |
---|---|---|---|
新用户 | 首次访问且无cookie记录 | 45,000 | 3% |
老用户 | 7天内重复访问或有cookie | 29,700 | 7% |
典型访问路径
graph TD A[首页] --> B[产品页] B --> C{登录?} C -是 --> D[个人中心] C -否 --> E[购物车] E --> F[支付页] F --> G[订单完成]
异常检测与优化建议
高频错误分析
错误类型 | 发生次数 | 典型案例 |
---|---|---|
静态资源404 | 1,280 | /images/logo-2x.png(路径错误) |
API超时 | 320 | /api/v1/checkout(数据库锁等待) |
SSL握手失败 | 150 | 客户端TLS1.0协议禁用导致 |
性能瓶颈诊断
通过响应时间分布发现:
- 90%请求在
<200ms
完成 - 极端值
>2s
集中在/api/v1/report
接口 - 建议开启接口级缓存(Redis)和数据库查询优化
安全防护相关
异常IP检测
SELECT ip, COUNT() AS hits FROM access_log WHERE TIMESTAMP > NOW() INTERVAL '1 hour' GROUP BY ip HAVING hits > 100;
检测结果:发现51.100.38
在1小时内发起153次请求,触发WAF拦截规则。
敏感操作审计
操作类型 | 触发条件 | 最近记录时间 |
---|---|---|
后台登录 | /admin/login 访问 |
2023-03-12 14:21 |
文件上传 | Content-Type 含multipart |
2023-03-12 15:07 |
SQL注入 | ' OR 1=1 出现在参数 |
2023-03-12 15:12 |
问题与解答
Q1:如何识别爬虫流量与真实用户?
- 特征对比:
- User-Agent:爬虫常带有
Python-urllib
、Mozilla/5.0 (compatible)
等标识 - 访问模式:高频连续请求(如每秒多次访问不同URL)
- Referer:缺失或指向无关域名
- User-Agent:爬虫常带有
- 处理方案:
- Nginx配置
robots.txt
引导爬虫 - 启用UA黑名单过滤(如
Baiduspider
外的非搜索引擎UA) - 对疑似爬虫IP限速(
limit_req
模块)
- Nginx配置
Q2:如何优化API响应时间过长的问题?
- 优化方向:
- 数据库层:添加
EXPLAIN
分析慢查询,建立索引优化查询计划 - 缓存层:使用Redis缓存热点数据(设置
LRU
淘汰策略) - 代码层:异步处理非关键逻辑(如日志记录、统计更新)
- 数据库层:添加
- 效果验证:
- 部署后监控
p99
响应时间,目标控制在<300ms
- A/B测试对比优化前后的错误率变化
- 部署后监控