必须30秒内自动恢复Mistral AI服务中断,通过Docker健康检查(5s间隔/3s超时/3次重试)、on-failure:3重启策略及Prometheus+钉钉告警联动实现;需在Dockerfile中HEALTHCHECK置于CMD前,docker-compose.yml中配置一致healthcheck与restart策略,并启用metrics暴露或cAdvisor采集指标,最后验证kill进程后8秒内重启、日志连续、15秒告警触达。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当Mistral AI推理服务突然中断、响应超时或健康接口返回503时,必须在30秒内触发自动恢复动作,避免下游业务断连。这套机制不依赖人工介入,靠Docker健康检查+重启策略+外部告警三者联动实现。
配置容器健康检查与自动重启
打开部署目录下的Dockerfile,在CMD指令前插入以下健康检查声明:
HEALTHCHECK --interval=5s --timeout=3s --retries=3 \CMD curl -f http://localhost:8000/health || exit 1
这一步必须加在CMD之前,否则容器启动后健康检查不会生效——Docker只识别最后一个HEALTHCHECK指令。
编辑docker-compose.yml,为每个服务实例添加restart: on-failure:3策略,并确保healthcheck块与Dockerfile中定义完全一致:
healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 5s timeout: 3s retries: 3
【retries=3是关键阈值】:少于3次失败不触发重启,避免瞬时抖动误判;超过3次则立刻终止容器并按策略拉起新实例。
接入Prometheus监控与钉钉告警
方法一:直接暴露/metrics端点
在Mistral服务启动参数中追加--metrics-enabled true --metrics-port 9091,确保应用内嵌的Prometheus指标服务器开启。
方法二:用cAdvisor采集容器层指标
在docker-compose.yml中新增cAdvisor服务,挂载/proc:/proc:ro和/sys:/sys:ro,并通过http://cadvisor:8080/metrics抓取GPU显存、OOMKilled事件等底层异常。
配置Prometheus的prometheus.yml,添加如下job:
- job_name: 'mistral-inference' static_configs: - targets: ['mistral-inference-0:9091', 'mistral-inference-1:9091']
创建告警规则文件alert.rules,写入核心判断逻辑:
groups:- name: mistral-alerts rules: - alert: MistralInstanceDown expr: probe_success{job="mistral-inference"} == 0 for: 15s labels: severity: critical annotations: summary: "Mistral实例{{ $labels.instance }}已失联"
将Alertmanager配置为通过Webhook推送至钉钉机器人,需在receivers中指定webhook_configs并填入机器人的webhook_url。
验证自愈流程是否生效
第一步:手动模拟服务崩溃
进入任意一个Mistral容器内部,执行kill -9 1强制终止主进程。
第二步:观察容器状态变化
运行docker ps -a | grep mistral,确认该实例状态在Exited (137)后约8秒内变为Up X seconds——这是健康检查间隔(5s)+超时(3s)的自然叠加结果。
第三步:检查日志连续性
执行docker logs mistral-inference-0 --since "10s ago",应看到新容器启动日志中包含Starting inference server on port 8000,且无报错堆栈。
第四步:触发一次真实告警
临时停掉一个实例的健康接口(如修改其/health路由返回500),等待15秒后查看钉钉群是否收到告警消息——若未收到,检查Alertmanager日志中是否有Failed to send notification错误。


















