flask搭建CPU、内存、硬盘实时资源监控,并写入mysql,通过前端展示
时间: 2023-08-22 13:09:39 浏览: 99
好的,这是一个比较复杂的问题,需要分几步来实现。
1. 安装依赖
首先需要安装 psutil 和 flask 模块,可以使用 pip 命令进行安装:
```
pip install psutil flask
```
其中 psutil 是一个跨平台的系统监控库,可以用来获取各种系统信息,flask 则是一个轻量级的 Web 框架,可以用来搭建 Web 应用。
2. 编写监控代码
编写一个 python 文件,例如 monitor.py,用来获取 CPU、内存、硬盘等系统信息,并将这些信息写入 MySQL 数据库中。代码如下:
```python
import psutil
import MySQLdb
# 连接 MySQL 数据库
db = MySQLdb.connect(
host='localhost',
user='root',
password='123456',
database='monitor',
charset='utf8'
)
cursor = db.cursor()
# 获取 CPU、内存、硬盘等系统信息
def get_system_info():
# CPU 使用率
cpu_percent = psutil.cpu_percent(interval=1)
# 内存使用情况
memory = psutil.virtual_memory()
total_memory = memory.total
used_memory = memory.used
memory_percent = memory.percent
# 硬盘使用情况
disk = psutil.disk_usage('/')
total_disk = disk.total
used_disk = disk.used
disk_percent = disk.percent
# 将系统信息写入 MySQL 数据库
sql = "INSERT INTO system_info (cpu_percent, total_memory, used_memory, memory_percent, total_disk, used_disk, disk_percent) VALUES (%s, %s, %s, %s, %s, %s, %s)"
values = (cpu_percent, total_memory, used_memory, memory_percent, total_disk, used_disk, disk_percent)
cursor.execute(sql, values)
db.commit()
# 每秒钟获取一次系统信息,写入 MySQL 数据库
while True:
get_system_info()
```
在这段代码中,我们使用 psutil 库获取 CPU 使用率、内存使用情况、硬盘使用情况等系统信息,并将这些信息写入 MySQL 数据库中。注意,我们在每秒钟获取一次系统信息,并写入数据库。
3. 编写 Flask 应用
接下来,我们需要编写一个 Flask 应用,用来展示系统监控信息。代码如下:
```python
from flask import Flask, render_template
import MySQLdb
app = Flask(__name__)
# 连接 MySQL 数据库
db = MySQLdb.connect(
host='localhost',
user='root',
password='123456',
database='monitor',
charset='utf8'
)
cursor = db.cursor()
# 定义路由,展示系统监控信息
@app.route('/')
def index():
# 从 MySQL 数据库中获取系统监控信息
cursor.execute("SELECT * FROM system_info ORDER BY id DESC LIMIT 10")
results = cursor.fetchall()
results.reverse()
return render_template('index.html', results=results)
if __name__ == '__main__':
app.run()
```
在这段代码中,我们使用 Flask 框架编写了一个 Web 应用,并定义了一个路由,用来展示系统监控信息。在路由函数中,我们从 MySQL 数据库中获取最近的 10 条系统监控信息,并将这些信息传递给模板文件 index.html。
4. 编写模板文件
最后,我们需要编写一个模板文件 index.html,用来展示系统监控信息。代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<title>系统监控</title>
</head>
<body>
<table>
<thead>
<tr>
<th>CPU 使用率</th>
<th>内存使用情况</th>
<th>硬盘使用情况</th>
</tr>
</thead>
<tbody>
{% for result in results %}
<tr>
<td>{{ result[1] }}%</td>
<td>{{ result[3] }} / {{ result[2] }} ({{ result[4] }}%)</td>
<td>{{ result[6] / 1024 / 1024 / 1024 }} / {{ result[5] / 1024 / 1024 / 1024 }} GB ({{ result[7] }}%)</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
```
在这个模板文件中,我们使用了 Flask 模板引擎的语法,展示了 CPU 使用率、内存使用情况、硬盘使用情况等系统监控信息。
5. 运行应用
最后,我们可以在终端中运行 Flask 应用:
```
export FLASK_APP=app.py
flask run
```
然后在浏览器中访问 http://localhost:5000/,就可以看到系统监控信息了。
阅读全文