Grok服务健康检查需暴露/health端点并配置Docker Compose healthcheck,包括test命令、15s间隔、5s超时、3次重试和≥60s(推荐≥90s)start_period,且须确保GROK_API_KEY已设置、端口映射正确、响应为200 OK及JSON格式。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

需要确认Grok模型服务是否持续可用,避免因进程假死、API无响应或依赖中断导致线上推理请求失败,必须在部署层配置可被外部探测的健康检查接口。
确认Grok服务已暴露/health端点
启动Grok服务时,必须显式启用健康检查路由。若使用官方SDK启动,默认不开启该功能,需手动注入中间件或修改启动参数。
检查当前服务是否已监听/health路径:执行curl -I http://localhost:8080/health,返回200 OK且响应头含Content-Type: application/json即表示端点已就绪。
若返回404或连接拒绝,说明服务未启用健康检查——此时不能直接配置监控,必须先修改启动逻辑。
为Grok服务添加Ping型健康检查接口
方法一:通过环境变量启用内置健康端点(适用于Grok SDK v3.5+)
启动容器时添加-e GROK_ENABLE_HEALTH_CHECK=true,并确保端口映射正确:-p 8080:8080。该方式会自动注册GET /health,返回{"status":"healthy","timestamp":"..."}。
【必须设置GROK_API_KEY环境变量,否则/health接口将返回401】
方法二:在反向代理层注入轻量健康响应(Nginx示例)
在location /health { return 200 '{"status":"healthy"}'; }后重载配置。此方式绕过Grok进程,仅检测HTTP服务层存活,不验证模型推理能力。
方法三:自定义Go健康检查中间件(需修改服务代码)
在HTTP路由注册前插入如下逻辑:
http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(map[string]string{"status": "healthy"})})
该写法不依赖Grok SDK内部机制,但需重新编译部署。
配置Docker Compose健康检查指令
第一步:打开docker-compose.yml文件,在对应Grok服务的services.grok下添加healthcheck区块。
第二步:填入以下配置:
healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health"] interval: 15s timeout: 5s retries: 3 start_period: 60s
注意:若服务启动耗时较长(如加载大模型权重),start_period必须设为≥90s,否则Docker会在初始化完成前反复判定为unhealthy并重启容器。
第三步:保存文件,执行docker-compose up -d --force-recreate grok使新健康检查生效。
第四步:运行docker-compose ps,观察STATUS列是否出现healthy字样;若仍显示starting或unhealthy,立即执行docker-compose logs grok | tail -20排查端点访问失败原因。


















