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:
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user