DDoS(分布式拒绝服务)攻击会严重影响Node.js应用的可用性。以下是识别DDoS攻击的关键日志特征和检测方法:
异常请求量激增
请求模式异常
资源消耗异常
# 统计IP访问频率(前20名)
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20
# 统计URL访问频率
cat access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -20
# 统计5xx错误数量
grep " 50[0-9] " access.log | wc -l
# 统计429(太多请求)错误
grep " 429 " access.log | wc -l
检查以下异常:
- ECONNRESET
错误突然增加
- socket hang up
错误增多
- ETIMEDOUT
错误增加
- 进程崩溃重启频率增加
使用日志分析工具
实现实时监控
// 使用express-rate-limit中间件示例
const rateLimit = require('express-rate-limit');
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15分钟
max: 100, // 每个IP限制100个请求
message: "请求过于频繁,请稍后再试"
});
app.use(limiter);
设置告警阈值
通过持续监控这些指标并设置适当的告警阈值,可以及时发现并应对针对Node.js应用的DDoS攻击。