Compare commits

..

22 Commits
test ... master

@ -7,4 +7,8 @@ RUBY_ONLINE_SIZE_URL=http://test-data.educoder.net/api/home/online_num
NET_SPEED_PATH=/data/ww/py_sys_monitor/info/net_speed
ACCESS_LOG_PATH=/data/ww/py_sys_monitor/info/access_log
JUNK_PATH=/data/ww/py_sys_monitor/logs/junk
CPU_ALARM_THRESHOLD=70
MEMORY_ALARM_THRESHOLD=70
IO_ALARM_THRESHOLD=70
```

@ -9,8 +9,11 @@ from .route.route import route_bp
def create_app():
app = Flask(__name__)
# CORS(app, resources={r"/*": {"origins": "*"}}) # 允许所有源访问所有端点
CORS(app, resources={r"/*": {"origins": ["http://172.16.100.126", "http://113.246.243.98:61136"]}}, supports_credentials=True)
# CORS(app, supports_credentials=True)
CORS(app, resources={r"/*": {"origins": "*"}}, supports_credentials=True)
# CORS(app, resources={r"/*": {"origins": "*", "methods": "GET,POST,PUT,DELETE,OPTIONS"}}) # 允许所有源访问所有端点
# CORS(app, resources={r"/*": {"origins": ["http://111.8.143.97", "http://113.246.243.98"]}}, supports_credentials=True)
app.register_blueprint(route_bp)
@ -29,6 +32,7 @@ def create_app():
log_file_path = '/data/ww/py_sys_monitor/info/access_log'
def log_request_response(response):
response_data = response.get_json(silent=True)
if "route.get_resource" == request.endpoint:
@ -55,4 +59,4 @@ def create_app():
app.after_request(log_request_response)
return app
return app

@ -3,5 +3,5 @@ import logging
def get_cpu_percent():
cpu_percent = psutil.cpu_percent(interval=1)
logging.info(f'CPU usage: {cpu_percent}%')
logging.debug(f'CPU usage: {cpu_percent}%')
return cpu_percent

@ -3,5 +3,5 @@ import logging
def get_io_percent():
disk_usage = psutil.disk_usage('/')
logging.info(f'Disk usage: {disk_usage.percent}%')
logging.debug(f'Disk usage: {disk_usage.percent}%')
return disk_usage.percent

@ -3,7 +3,9 @@ import os
import requests
import logging
from dotenv import load_dotenv
load_dotenv()
ruby_recent_login_url = os.getenv("RUBY_RECENT_LOGIN_URL", "http://test-data.educoder.net/api/home/online_users.json")
ruby_oline_size_url = os.getenv("RUBY_ONLINE_SIZE_URL", "http://test-data.educoder.net/api/home/online_num")
@ -17,13 +19,17 @@ def get_recent_login_info(page_index=1, page_size=10):
data = {"status":-1,"message":"响应失败"}
try:
url = f"{ruby_recent_login_url}?limit={page_size}&page={page_index}"
response = requests.get(url)
response = requests.get(url, timeout=5)
data = response.json()
response.raise_for_status() # 如果响应状态码不是 200会引发 HTTPError
logging.info(f"请求{url} 返回参数: {data}")
except requests.exceptions.RequestException as e:
logging.debug(f"请求{url} 返回参数: {data}")
except ValueError:
# 处理可能的请求错误
logging.info(f"recent_login_info请求发生错误: {e}")
logging.error("online_size解析错误")
except requests.exceptions.HTTPError:
logging.error(f"online_size: {ruby_recent_login_url}请求发生错误")
except requests.exceptions.ConnectTimeout:
logging.error(f"online_size: {ruby_recent_login_url}请求超时")
return data
@ -36,13 +42,18 @@ def get_online_size():
"""
try:
url = ruby_oline_size_url
response = requests.get(url)
response = requests.get(url, timeout=5)
response.raise_for_status() # 如果响应状态码不是 200会引发 HTTPError
data = response.json()
logging.info(f"请求{url} 返回参数: {data}")
logging.debug(f"请求{url} 返回参数: {data}")
return data.get('data', {}).get('online_num', 0)
except requests.exceptions.RequestException as e:
except ValueError:
# 处理可能的请求错误
logging.info(f"online_size请求发生错误: {e}")
return 0
logging.error("online_size解析错误")
except requests.exceptions.HTTPError:
logging.error(f"online_size: {ruby_oline_size_url}请求发生错误")
except requests.exceptions.ConnectTimeout:
logging.error(f"online_size: {ruby_oline_size_url}请求超时")
return 0

@ -3,5 +3,5 @@ import logging
def get_memory_percent():
virtual_memory = psutil.virtual_memory()
logging.info(f'Memory usage: {virtual_memory.percent}%')
logging.debug(f'Memory usage: {virtual_memory.percent}%')
return virtual_memory.percent

@ -4,7 +4,9 @@ import time
import os
from datetime import datetime, timedelta
from collections import deque
from dotenv import load_dotenv
load_dotenv()
log_file_path = os.getenv("NET_SPEED_PATH", '/data/ww/py_sys_monitor/info/net_speed')
def ensure_log_file_exists():

@ -1,6 +1,8 @@
import os
import json
from dotenv import load_dotenv
load_dotenv()
log_file_path = os.getenv("ACCESS_LOG_PATH", '/data/ww/py_sys_monitor/info/access_log')
def get_request_info(page_index=1, page_size=10):

@ -1,5 +1,6 @@
import os
from flask import Blueprint, request, jsonify
import random
import app.cpu_usage as cpu_usage
import app.io_usage as io_usage
import app.memory_usage as memory_usage
@ -9,9 +10,15 @@ import app.request_info as request_info
import app.imitate_thread as imitate_thread
import app.sys_clean as sys_clean
import app.sys_control as sys_control
from dotenv import load_dotenv
load_dotenv()
route_bp = Blueprint('route', __name__)
cpu_alarm_threshold = float(os.getenv('CPU_ALARM_THRESHOLD', '70'))
io_alarm_threshold = float(os.getenv('IO_ALARM_THRESHOLD', '70'))
memory_alarm_threshold = float(os.getenv('MEMORY_ALARM_THRESHOLD', '70'))
# 资源使用情况
@route_bp.route('/api/sys/resource', methods=['GET'])
def get_resource():
@ -20,7 +27,7 @@ def get_resource():
memory_percent = memory_usage.get_memory_percent()
online = login_info.get_online_size()
status = 0
if cpu_percent >= 70 or memory_percent >= 70 or io_percent >= 50:
if cpu_percent > cpu_alarm_threshold or memory_percent > memory_alarm_threshold or io_percent > io_alarm_threshold:
status = 1
return jsonify({
@ -29,6 +36,9 @@ def get_resource():
'cpu_percent': cpu_percent,
'io_percent': io_percent,
'memory_percent': memory_percent,
'cpu_alarm_threshold': cpu_alarm_threshold,
'io_alarm_threshold': io_alarm_threshold,
'memory_alarm_threshold': memory_alarm_threshold,
})
# 获取过去12小时网络传输速度

@ -5,7 +5,9 @@ import random
import string
from flask import jsonify
import logging
from dotenv import load_dotenv
load_dotenv()
log_directory = os.getenv("JUNK_PATH", '/data/ww/py_sys_monitor/logs/junk')
def get_junk_file():

@ -1,5 +1,6 @@
from app import create_app
from dotenv import load_dotenv
load_dotenv()
app = create_app()
if __name__ == '__main__':

Loading…
Cancel
Save