跳转到内容

远程服务器故障排查指南

当生产服务器出问题,你需要的是分钟级的诊断,不是几小时。OpenCode 能读相关日志、交叉对照近期变更,并在你保持对服务器控制权的同时给出修复建议。

何时使用此案例

  • 服务在线但变慢、出错,或间歇性返回 5xx。
  • 日志很多,不知道哪个子系统是源头。
  • 需要动手修复,但想先听个第二意见再重启任何东西。

前置配置

  • 本机已安装 OpenCode
  • 能 SSH 访问受影响的服务器
  • 对相关日志和配置文件有读权限

步骤

  1. 准确描述症状

    用一段话讲清楚:什么坏了、什么时候开始的、你已排除的可能。

    今日 14:00 UTC 起,结账服务大约 3% 的请求返回 504。p99 延迟从 800ms 涨到 6s。过去 6 小时没有部署。应用节点 CPU 和内存正常。我还没重启过任何东西。

  2. 拉取相关日志

    让 OpenCode 拉取合适时间段的日志并暴露异常。

    SSH 到 prod-app 集群(凭据在 1Password)。拉取结账服务最近 2 小时的 stdout 和 stderr。暴露错误模式、堆栈跟踪、异常的延迟尖刺。不要包含正常流量。

  3. 与近期变更做关联

    即使没有部署,基础设施变更依然可能相关。

    检查过去 24 小时的基础设施变更(Terraform、ingress、DNS)。把每项变更与延迟上升的时间点做交叉对照。

  4. 形成假设

    让 OpenCode 给出最可能的根因和验证方法。

    基于日志和基础设施变更,给我一个排名前 3 的延迟上升假设列表。每个给出支持证据和一个可执行/排除的命令。

  5. 在不打挂的前提下验证

    始终先走影响最小的验证路径。绝不直接跳到重启。

    # 示例:检查下游是否超时
    curl -w '%{time_total}\n' -o /dev/null -s https://internal.api/ping
  6. 执行最小、安全的修复

    验证后,做能解决问题的最小改动。如果修复有风险,先和同事确认。

    假设假设 #2 已确认,请提出最小、最安全的改动。给我精确的命令、接下来 10 分钟要监控什么、回滚方案。

  7. 写一份事后记录

    即使是小事,也要把发生了什么、为什么、该改什么记下来。

    写一份 1 页的事后记录到 incidents/2026-06-27-checkout-504.md,包含:时间线、根因、缓解措施、一条预防措施(告警、runbook、测试或重构)。

关键提示词

用 [vault path] 里的凭据 SSH 到 [host]。拉取 [service] 最近 [N hours] 的日志并暴露错误模式、堆栈跟踪、延迟异常。再检查同窗口的基础设施变更。给出 [symptom] 排名前 3 的假设——每个给出支持证据和一个验证命令。不要执行任何破坏性操作。

验证重点

  • 已识别并记录明确的根因
  • 修复已生效,指标恢复基线
  • 事后记录已写并分享给团队
  • 若告警缺失,已记录 follow-up 补齐

常见坑点

  • 先重启:重启可能掩盖证据并引发二次事故。永远先诊断再行动。
  • 只看一个日志文件:症状常常跨多个日志。从所有相关日志中拉取,不只挑”明显”那个。
  • 跳过事后记录:没有记录,同样的事故会在 3 个月后重演。

相关文档

  • 故障排查 — OpenCode 常见问题与解决方法
  • TUI — 用于跨服务器并行工作的多会话终端 UI

相关案例

相关文档

下一步