远程开发状态检查
远程开发时从进程、HTTP、浏览器、数据四个层面检查服务状态的方法。
#type / synthesis
#status / evergreen
#tech / dev
#tech / ops
[!info] related notes
远程开发状态检查
远程开发时,服务跑在远端、浏览器在本地,排查问题需要从多个层面分别验证。把”状态”分成四类看,比盲目查日志更高效。
第一层:进程状态
服务有没有跑起来。
Docker Compose 管理的服务
docker compose ps
docker compose logs -f api
docker compose logs -f web
docker compose logs -f ai-service
直接运行的服务
ss -lntp
ss -lntp | grep 8080
ss -lntp 列出所有正在监听的 TCP 端口,比 netstat 更快。
tmux 窗口
如果服务跑在 tmux 窗口里,直接切过去看输出:
tmux select-window -t dev
第二层:HTTP 状态
服务起来了,但能不能正常响应。
健康检查接口
后端最好有 /health 端点:
curl http://localhost:8080/health
curl http://localhost:8000/health
云原生开发中,health check 是基础工程能力。没有的话建议加上。
前端页面
curl -I http://localhost:5173
只看响应头,确认返回 200。
API 接口
curl http://localhost:8080/api/users
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com","password":"123456"}'
第三层:浏览器状态
SSH 端口转发建立后,本地浏览器打开 http://localhost:5173,用 DevTools 检查:
| 检查项 | 位置 |
|---|---|
| Network 请求是否成功 | DevTools → Network |
| Console 有没有报错 | DevTools → Console |
| SSE / WebSocket 是否持续连接 | DevTools → Network(WS 标签) |
| 接口状态码 | DevTools → Network → 点击请求 |
| 前端环境变量是否正确 | Console 打印或 Network 请求 URL |
| Cookie / Token 是否正确 | DevTools → Application → Cookies |
第四层:数据状态
服务正常但数据有问题。
PostgreSQL
psql "$DATABASE_URL"
Redis / Valkey
redis-cli -u "$REDIS_URL"
对象存储
通常通过后端接口测试,不建议前端直接拿 secret 测。
排查顺序
遇到问题时按从外到内的顺序排查:
浏览器报错?
→ 看 Network 和 Console
→ 请求发出去了吗?
→ 没发出去:前端代码 / 环境变量问题
→ 发出去了但报错:
→ 4xx:请求参数 / 认证问题
→ 5xx:后端服务问题
→ 看 docker compose logs
→ curl 直接测后端接口
→ 检查数据库连接
→ 连接失败:
→ SSH 隧道断了?重连
→ 后端没起来?看进程状态
→ 端口错了?ss -lntp 确认
健康检查端点建议
每个服务都暴露一个简单的 health 端点:
# Python / FastAPI
@app.get("/health")
def health():
return {"status": "ok"}
// Go
func healthHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(`{"status":"ok"}`))
}
// Node.js / Express
app.get('/health', (req, res) => {
res.json({ status: 'ok' });
});
Docker Compose 中可以配置 healthcheck 自动检测:
services:
api:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 5s
retries: 3