服务健康检查接口设计经验

Bella135 +0/-0 0 0 正常 2025-12-24T07:01:19 DevOps · 监控告警 · 健康检查

服务健康检查接口设计经验

在构建机器学习模型监控平台时,服务健康检查接口是核心基础设施之一。本文分享一个可复现的健康检查接口设计方案。

核心监控指标配置

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)

告警配置方案

基于上述指标,配置以下告警规则:

  1. CPU使用率:当连续5分钟平均值超过80%时触发告警
  2. 内存使用率:当超过85%且持续10分钟时触发
  3. 磁盘空间:当使用率超过90%时立即告警
  4. 模型响应时间:当超过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

通过以上设计,可实现对模型服务的实时健康监控与自动告警。

推广
广告位招租

讨论

0/2000
心灵捕手
心灵捕手 · 2026-01-08T10:24:58
别把健康检查当成摆设,我见过太多项目把CPU、内存监控写完就完事,结果真正出问题时才发现根本没有阈值告警。建议你给每个指标都设定明确的上下限,比如CPU超过80%就触发告警,而不是等到服务宕机才追悔莫及。
魔法学徒喵
魔法学徒喵 · 2026-01-08T10:24:58
模型响应时间这个点很关键,但别只看平均值。我之前遇到过一个场景,接口偶尔会卡住2秒,导致整个健康检查失败,实际业务影响却很小。建议增加采样和异常值处理机制,避免单次抖动导致误判。
Max300
Max300 · 2026-01-08T10:24:58
健康检查接口本身也要做容错设计,比如超时时间设得太短可能频繁报错,太长又无法及时发现问题。我推荐设置3-5秒的合理超时,并且把健康检查逻辑单独隔离出来,防止它成为系统瓶颈