63 lines
1.6 KiB
Python
63 lines
1.6 KiB
Python
"""
|
||
健康检查端点
|
||
"""
|
||
import psutil
|
||
import logging
|
||
from datetime import datetime
|
||
from flask import jsonify
|
||
|
||
logger = logging.getLogger(__name__)
|
||
|
||
def get_memory_usage():
|
||
"""获取内存使用(MB)"""
|
||
process = psutil.Process()
|
||
memory_mb = process.memory_info().rss / 1024 / 1024
|
||
return round(memory_mb, 2)
|
||
|
||
def get_cpu_usage():
|
||
"""获取CPU使用率(%)"""
|
||
return psutil.cpu_percent(interval=0.1)
|
||
|
||
def register_health_routes(app):
|
||
"""注册健康检查路由到Flask应用"""
|
||
|
||
@app.route('/status')
|
||
def status():
|
||
"""整体状态检查"""
|
||
return jsonify({
|
||
'status': 'ok',
|
||
'service': 'multi-camera-monitor',
|
||
'timestamp': datetime.now().isoformat()
|
||
})
|
||
|
||
@app.route('/memory')
|
||
def memory():
|
||
"""内存使用"""
|
||
return jsonify({
|
||
'memory_mb': get_memory_usage(),
|
||
'unit': 'MB'
|
||
})
|
||
|
||
@app.route('/cpu')
|
||
def cpu():
|
||
"""CPU使用"""
|
||
return jsonify({
|
||
'cpu_percent': get_cpu_usage(),
|
||
'unit': '%'
|
||
})
|
||
|
||
@app.route('/health')
|
||
def health():
|
||
"""综合健康检查(用于Docker)"""
|
||
try:
|
||
# 简单检查
|
||
memory = get_memory_usage()
|
||
cpu = get_cpu_usage()
|
||
return jsonify({
|
||
'status': 'healthy',
|
||
'memory_mb': memory,
|
||
'cpu_percent': cpu
|
||
}), 200
|
||
except Exception as e:
|
||
logger.error(f"健康检查失败: {e}")
|
||
return jsonify({'status': 'unhealthy', 'error': str(e)}), 500 |