服务健康检查接口设计经验
在构建机器学习模型监控平台时,服务健康检查接口是核心基础设施之一。本文分享一个可复现的健康检查接口设计方案。
核心监控指标配置
from flask import Flask, jsonify
import psutil
import time
app = Flask(__name__)
@app.route('/health', methods=['GET'])
def health_check():
# CPU使用率监控
cpu_percent = psutil.cpu_percent(interval=1)
# 内存使用率监控
memory = psutil.virtual_memory()
memory_percent = memory.percent
# 磁盘空间监控
disk = psutil.disk_usage('/')
disk_percent = (disk.used / disk.total) * 100
# 模型服务响应时间
start_time = time.time()
try:
# 模拟模型推理请求
response_time = time.time() - start_time
model_response_time = response_time * 1000 # 转换为毫秒
except Exception as e:
model_response_time = 9999
health_status = {
'timestamp': time.time(),
'cpu_percent': cpu_percent,
'memory_percent': memory_percent,
'disk_percent': disk_percent,
'model_response_time_ms': model_response_time,
'status': 'healthy' if all([
cpu_percent < 80,
memory_percent < 85,
disk_percent < 90,
model_response_time < 2000
]) else 'unhealthy'
}
return jsonify(health_status)
告警配置方案
基于上述指标,配置以下告警规则:
- CPU使用率:当连续5分钟平均值超过80%时触发告警
- 内存使用率:当超过85%且持续10分钟时触发
- 磁盘空间:当使用率超过90%时立即告警
- 模型响应时间:当超过2秒时触发告警
建议使用Prometheus + Grafana组合,配置对应的监控告警规则:
- name: model_health
rules:
- alert: HighCPUUsage
expr: rate(node_cpu_seconds_total{mode="idle"}[5m]) < 0.2
for: 5m
labels:
severity: warning
通过以上设计,可实现对模型服务的实时健康监控与自动告警。

讨论