📋 故障排查流程
问题发现
→
信息收集
→
问题定位
→
方案制定
→
实施修复
→
验证修复
→
事后复盘
问题分级
| 级别 |
名称 |
响应时间 |
影响范围 |
| P0 |
致命 |
5 分钟 |
系统完全不可用 |
| P1 |
严重 |
30 分钟 |
核心功能不可用 |
| P2 |
一般 |
2 小时 |
部分功能受影响 |
| P3 |
轻微 |
24 小时 |
轻微影响或无影响 |
🚀 安装问题
Node.js 安装失败
问题现象: command not found: node
- 检查是否已安装:
which node
- 使用 nvm 安装 (推荐):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install --lts
nvm use --lts
- 验证安装:
node -v && npm -v
OpenClaw 安装失败
问题现象: Permission denied
# 方案 1: 手动下载安装
curl -fsSL https://claude.ai/install.sh -o install.sh
chmod +x install.sh
sudo ./install.sh
# 方案 2: 使用 npm 安装
sudo npm install -g @anthropic-ai/claude-code
🔐 认证与配置问题
API Key 无效
错误信息: INVALID_API_KEY - 提供的 API Key 无效或已过期
# 1. 检查环境变量
echo $ANTHROPIC_API_KEY
# 2. 检查格式 (应以 sk-ant-开头)
echo $ANTHROPIC_API_KEY | grep "^sk-ant-"
# 3. 重新设置
export ANTHROPIC_API_KEY="sk-ant-api03-xxxxxxxxxxxxx"
# 4. 验证 API Key
curl -X POST https://api.anthropic.com/v1/messages \
-H "Authorization: Bearer $ANTHROPIC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-4-20250514","max_tokens":10,"messages":[{"role":"user","content":"Hi"}]}'
工作区信任问题
解决方案: 输入 Y 确认信任,或预先配置信任目录
claude config set trusted_directories '["/path/to/project"]'
⚡ 任务执行问题
任务卡住不执行
| 可能原因 | 诊断方法 | 解决方案 |
| Agent 繁忙 |
GET /agents 查看状态 |
等待或切换到其他 Agent |
| 队列堵塞 |
检查待处理任务数量 |
取消不必要的任务 |
| 资源不足 |
检查 CPU/内存使用率 |
扩容或优化任务 |
| 网络问题 |
检查 API 连接 |
检查网络和代理配置 |
Token 超限问题
错误: CONTEXT_LENGTH_EXCEEDED - 超过模型 token 限制
# 方案 1: 减少上下文 (在 CLAUDE.md 中指定关注目录)
cat > CLAUDE.md << EOF
# 项目说明
只关注以下目录:
- src/routers/
- src/schemas/
忽略以下目录:
- node_modules/
- .git/
EOF
# 方案 2: 分批次处理
claude "先实现用户认证模块"
claude "接下来实现订单管理模块"
# 方案 3: 使用小模型
export ANTHROPIC_MODEL="claude-sonnet-4-20250514"
💻 代码生成问题
生成的代码无法运行
示例: ImportError: cannot import name 'FastAPI' from 'fastapi'
# 1. 检查包版本
pip show fastapi
# 2. 升级/降级
pip install --upgrade fastapi
# 或
pip install fastapi==0.104.1
# 3. 让 AI 修复
claude "检测到 FastAPI 导入错误,请修复兼容性问题"
代码风格不一致
解决方案: 配置 CLAUDE.md 明确规范 + 使用格式化工具
# 添加代码规范到 CLAUDE.md
cat >> CLAUDE.md << EOF
## 代码风格规范
- 变量和函数:snake_case
- 类名:PascalCase
- 缩进:4 空格
- 导入顺序:标准库 → 第三方库 → 本地模块
EOF
# 使用格式化工具
pip install black isort
black src/
isort src/
🧪 测试相关问题
测试覆盖率不达标
# 1. 识别未覆盖的代码
pytest tests/ --cov=src --cov-report=html
open htmlcov/index.html
# 2. 让 AI 生成补充测试
claude "以下代码行未被测试覆盖,请生成对应的测试用例"
# 3. 运行补充测试
pytest tests/ --cov=src --cov-fail-under=80
测试间歇性失败
可能原因: 测试数据污染、外部依赖不稳定、并发问题
# 解决方案:隔离测试数据 + Mock 外部依赖
@pytest.fixture
def clean_db():
db.drop_all()
db.create_all()
yield db
db.drop_all()
@patch('requests.post')
def test_external_api(mock_post):
mock_post.return_value.status_code = 200
# 测试逻辑
🚢 CI/CD 部署问题
K8s 部署失败 - ImagePullBackOff
# 1. 查看 Pod 详情
kubectl describe pod order-service-xxx -n test
# 2. 查看事件日志
kubectl get events -n test --sort-by='.lastTimestamp'
# 3. 检查镜像拉取凭证
kubectl get secret registry-credentials -n test -o yaml
# 4. 更新凭证
kubectl create secret docker-registry registry-credentials \
--docker-server=harbor.internal.com \
--docker-username=admin \
--docker-password=Harbor12345 \
-n test
健康检查失败
解决方案: 延长初始延迟时间,确保应用实现了健康检查端点
# Helm Chart values.yaml
healthCheck:
readinessProbe:
initialDelaySeconds: 30 # 从 10 增加到 30
periodSeconds: 10
livenessProbe:
initialDelaySeconds: 60 # 从 30 增加到 60
periodSeconds: 20
# 确保应用实现健康检查端点
@app.get("/health/ready")
def health_ready():
return {"status": "ready"}
🔒 安全问题
API Key 泄露紧急处理
⚠️ 立即执行以下步骤:
- 立即撤销泄露的 API Key (登录 Anthropic Console → API Keys → Revoke)
- 从 Git 历史中删除:
java -jar bfg.jar --delete-files .env
git reflog expire --expire=now --all
git gc --prune=now --aggressive
- 轮换所有相关凭证 (生成新的 API Key)
- 审计 API 调用记录 (检查异常调用)
- 添加预防措施 (git-secrets / pre-commit hooks)
容器安全漏洞
# 使用 Trivy 扫描
trivy image order-service:latest
# 修复方案:
# 1. 使用最小化基础镜像
FROM python:3.12-slim
# 2. 多阶段构建
FROM node:22 AS builder
...
FROM python:3.12-slim
COPY --from=builder ...
# 3. 非 root 用户运行
RUN useradd -m -u 1000 appuser
USER appuser
📊 日志分析
日志位置
| 组件 | 日志路径 |
| OpenClaw | ~/.openclaw/logs/ |
| Claude Code | ~/.claude/logs/ |
| 应用日志 | /var/log/app/ 或 stdout |
| Jenkins | /var/jenkins_home/jobs/*/builds/*/log |
| K8s Pods | kubectl logs <pod-name> -n <namespace> |
常用日志分析命令
# 实时查看日志
tail -f /var/log/app/application.log
# 搜索错误
grep -i "error\|exception\|critical" application.log
# 查看错误上下文
grep -B 5 -A 5 "ERROR" application.log
# 按时间过滤
awk '/2026-03-16 10:00:00/,/2026-03-16 11:00:00/' application.log
# JSON 日志分析
cat application.log | jq 'select(.level == "ERROR")'
🆘 紧急恢复流程
K8s 回滚操作
# 1. 查看部署历史
kubectl rollout history deployment/order-service -n test
# 2. 回滚到上一个版本
kubectl rollout undo deployment/order-service -n test
# 3. 回滚到指定版本
kubectl rollout undo deployment/order-service -n test --to-revision=5
# 4. 验证回滚
kubectl rollout status deployment/order-service -n test
数据库回滚
# 使用 Alembic 回滚迁移
alembic downgrade -1 # 回滚一个版本
alembic downgrade head~3 # 回滚三个版本
alembic downgrade base # 回滚到初始状态
# 从备份恢复
pg_restore -U postgres -d orders_db -Fc backup_20260315.dump
📞 联系支持
| 问题类型 | 联系方式 | 响应时间 |
| P0 级故障 |
电话 + Slack |
5 分钟 |
| P1 级故障 |
Slack + 邮件 |
30 分钟 |
| P2 技术问题 |
GitHub Issues |
24 小时 |
| P3 一般咨询 |
社区论坛 |
48 小时 |
紧急联系人:
On-call 工程师:+86-XXX-XXXX-XXXX
技术负责人:tech-lead@example.com
产品负责人:product-owner@example.com