本文作者:丁辉
Ingress流量问题排查指南
排查流程图
1 | 流量异常 → 云监控确认 → 定位异常IP → 分析请求路径 → 检查User-Agent → 判断问题类型 → 制定解决方案 |
核心排查命令集共
1. 快速定位问题范围
查看最近1小时最活跃的客户端IP
1
kubectl logs <ingress-controller-pod> --since=1h | awk '{print $1}' | sort | uniq -c | sort -nr | head -10
查看最近1小时最频繁的请求路径
1
kubectl logs <ingress-controller-pod> --since=1h | awk '{print $7}' | sort | uniq -c | sort -nr | head -10
2. 深入分析特定IP行为
查看特定IP的详细访问记录
1
kubectl logs <ingress-controller-pod> --since=1h | grep '可疑IP'
分析特定IP的User-Agent
1
kubectl logs <ingress-controller-pod> --since=1h | grep '可疑IP' | awk -F'"' '{print $6}' | sort | uniq
查看特定IP访问的路径分布
1
kubectl logs <ingress-controller-pod> --since=1h | grep '可疑IP' | awk '{print $7}' | sort | uniq -c | sort -nr
3. 分析特定接口/路径
查看特定接口的访问详情
1
kubectl logs <ingress-controller-pod> --since=1h | grep "接口路径" | head -20
统计接口的响应状态码分布
1
kubectl logs <ingress-controller-pod> --since=1h | grep "接口路径" | awk '{print $9}' | sort | uniq -c
4. 实时监控
实时查看Ingress访问日志
1
kubectl logs -f <ingress-controller-pod>
实时查看特定服务的日志
1
kubectl logs -f <后端服务pod>
日志字段解析指南
关键字段说明:
$1- 客户端IP地址$7- 请求路径和参数$9- HTTP状态码- 引号内第6个字段 - User-Agent
- 倒数第6个字段 - 请求处理时间(秒)
- 方括号内字段 - 转发的K8s服务
常见问题模式识别
1. 爬虫/自动化脚本特征
- 单一IP高频访问
- User-Agent包含
bot、crawler、python、go等 - 规律的请求间隔
2. API滥用特征
- 针对特定API接口的高频调用
- 异常的POST/PUT请求模式
- 大量4xx状态码
3. 性能问题特征
- 请求处理时间普遍较长(>5秒)
- 大量5xx状态码
- 特定的慢接口
4. 安全威胁特征
- 扫描行为(访问不存在的路径)
- 注入攻击特征(SQL、XSS等)
- 暴力破解(大量登录尝试)
解决方案工具箱
1. 紧急限流措施
1 | # =============================================== |
2. IP封禁
1 | # =============================================== |
3. 优化配置
1 | apiVersion: v1 |
4. 安全加固配置
1 | apiVersion: v1 |
5. 日志与监控配置
1 | apiVersion: v1 |
6. 高级限流策略
方法 A:使用注解(推荐)
1 | apiVersion: networking.k8s.io/v1 |
- 优点:官方支持,简单。
- 缺点:无法直接实现
$request_uri分路径的限流。
方法 B:Server / Configuration Snippet
1 | apiVersion: networking.k8s.io/v1 |
- 这里可以写原生 NGINX 指令,并在 ingress-nginx 的 server 块中生效。
- 注意:需要确认你使用的 ingress-nginx 版本允许
server-snippet注解。
7. 实际应用示例
1 | apiVersion: networking.k8s.io/v1 |
配验证命令
1 | # 验证配置语法是否正确 |
监控和告警设置
1. 关键监控指
- QPS(每秒请求数)
- 错误率(4xx/5xx)
- 响应时间P95/P99
- 带宽使用率
2. 告警阈值建议
1 | # 异常流量检测规则示例 |
💡 经验总结
快速诊断清单:
- ✅ 先看IP分布 - 找到异常源头
- ✅ 再看请求路径 - 定位问题接口
- ✅ 分析User-Agent - 判断请求性质
- ✅ 检查响应时间和状态码 - 确认影响范围
- ✅ 关联后端服务日志 - 深入根本原因
I'm so cute. Please give me money.
- 本文链接: https://blog.offends.cn/Kubernetes/网关/Ingress/Ingress流量问题排查指南.html
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。