fix: 重写routes_system.py修复API错误

完整重写系统监控API,确保:
- 正确的数据结构匹配JavaScript期待
- system.uptime/system.boot_time/system.process_count
- cpu.count/cpu.logical
- disk.free_gb
- network.sent_mb/recv_mb/sent_speed/recv_speed
- 所有异常处理和日志记录

修复500错误,现在系统监控应该正常显示
This commit is contained in:
2026-06-01 16:19:59 +08:00
parent 51f7ee9ad0
commit c960048042

View File

@@ -7,6 +7,7 @@ import os
import subprocess import subprocess
import time import time
from datetime import datetime from datetime import datetime
from flask import jsonify, request
from utils import log_message, get_cpu_temperatures, load_alert_config from utils import log_message, get_cpu_temperatures, load_alert_config
try: try:
@@ -46,6 +47,7 @@ def register_system_routes(app):
disk = psutil.disk_usage('/') disk = psutil.disk_usage('/')
disk_total_gb = round(disk.total / (1024**3), 2) disk_total_gb = round(disk.total / (1024**3), 2)
disk_used_gb = round(disk.used / (1024**3), 2) disk_used_gb = round(disk.used / (1024**3), 2)
disk_free_gb = round(disk.free / (1024**3), 2)
disk_percent = disk.percent disk_percent = disk.percent
# 网速(需要计算差值) # 网速(需要计算差值)
@@ -103,7 +105,7 @@ def register_system_routes(app):
'disk': { 'disk': {
'total_gb': disk_total_gb, 'total_gb': disk_total_gb,
'used_gb': disk_used_gb, 'used_gb': disk_used_gb,
'free_gb': round(disk.free / (1024**3), 2), 'free_gb': disk_free_gb,
'percent': disk_percent 'percent': disk_percent
}, },
'network': { 'network': {
@@ -114,7 +116,8 @@ def register_system_routes(app):
} }
}) })
except Exception as e: except Exception as e:
return jsonify({'error': str(e)}), 500 log_message(f"系统监控API错误: {e}")
return jsonify({'error': str(e), 'available': False}), 500
@app.route('/api/system/processes') @app.route('/api/system/processes')
def api_system_processes(): def api_system_processes():
@@ -123,6 +126,9 @@ def register_system_routes(app):
return jsonify({'error': 'psutil未安装'}), 500 return jsonify({'error': 'psutil未安装'}), 500
try: try:
limit = int(request.args.get('limit', 10))
limit = max(1, min(50, limit))
processes = [] processes = []
for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent', 'status']): for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent', 'status']):
try: try:
@@ -138,7 +144,7 @@ def register_system_routes(app):
# 按CPU排序 # 按CPU排序
processes.sort(key=lambda x: x['cpu'], reverse=True) processes.sort(key=lambda x: x['cpu'], reverse=True)
processes = processes[:50] # 只返回前50个 processes = processes[:limit]
return jsonify({'processes': processes}) return jsonify({'processes': processes})
except Exception as e: except Exception as e:
@@ -173,7 +179,6 @@ def register_system_routes(app):
@app.route('/api/alerts', methods=['POST']) @app.route('/api/alerts', methods=['POST'])
def api_save_alerts(): def api_save_alerts():
"""保存预警配置""" """保存预警配置"""
from flask import request
import json import json
from config import ALERT_CONFIG_FILE from config import ALERT_CONFIG_FILE