flask+mysql+html搭建实时监控CPU内存利用率功能
时间: 2023-07-29 08:11:45 浏览: 147
如何监控mysql,redis运行状况(CPU,内存)
3星 · 编辑精心推荐
好的,我可以帮你详细介绍如何使用 Flask、MySQL 和 HTML 技术来搭建实时监控 CPU 和内存利用率的功能。
1. 安装 Flask 和 MySQLdb
首先,需要安装 Flask 和 MySQLdb 模块。你可以使用 pip 来安装这两个模块:
```
pip install flask
pip install mysqlclient
```
2. 创建 Flask 应用程序
创建一个名为 `app.py` 的文件,输入以下代码:
```python
from flask import Flask, render_template, request
import MySQLdb
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
```
这段代码创建了一个名为 `app` 的 Flask 应用程序,并定义了一个名为 `index` 的路由函数,用于渲染 `index.html` 模板。
3. 创建 MySQL 数据库
在 MySQL 数据库中创建一个名为 `cpu_memory_monitor` 的数据库,并创建一个名为 `utilization` 的表,用于存储 CPU 和内存利用率的数据。表结构如下:
```sql
CREATE TABLE `utilization` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cpu` float NOT NULL,
`memory` float NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
4. 编写数据库连接代码
在 `app.py` 中添加以下代码,用于连接 MySQL 数据库:
```python
db = MySQLdb.connect(host='localhost', user='root', passwd='password', db='cpu_memory_monitor', charset='utf8')
```
请将 `host`、`user`、`passwd` 替换为你的 MySQL 数据库的相关信息。
5. 编写数据插入代码
在 `app.py` 中添加以下代码,用于将 CPU 和内存利用率的数据插入到 MySQL 数据库中:
```python
def insert_data(cpu, memory):
cursor = db.cursor()
sql = "INSERT INTO utilization (cpu, memory) VALUES (%s, %s)"
try:
cursor.execute(sql, (cpu, memory))
db.commit()
except:
db.rollback()
```
6. 编写获取数据代码
在 `app.py` 中添加以下代码,用于从 MySQL 数据库中获取最新的 CPU 和内存利用率数据:
```python
def get_data():
cursor = db.cursor()
sql = "SELECT cpu, memory FROM utilization ORDER BY id DESC LIMIT 1"
cursor.execute(sql)
result = cursor.fetchone()
return result
```
7. 编写 HTML 模板
创建一个名为 `index.html` 的 HTML 模板,输入以下代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>CPU & Memory Monitor</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
setInterval(function() {
$.ajax({
type: "GET",
url: "/data",
dataType: "json",
success: function(data) {
$("#cpu").html(data.cpu.toFixed(2) + "%");
$("#memory").html(data.memory.toFixed(2) + "%");
},
error: function() {
console.log("Error");
}
});
}, 1000);
});
</script>
</head>
<body>
<h1>CPU & Memory Monitor</h1>
<p>CPU: <span id="cpu">0.00%</span></p>
<p>Memory: <span id="memory">0.00%</span></p>
</body>
</html>
```
这段代码使用了 jQuery 库来实现 Ajax 请求,定时获取最新的 CPU 和内存利用率数据,并将数据展示在页面上。
8. 编写获取数据接口
在 `app.py` 中添加以下代码,用于返回最新的 CPU 和内存利用率数据:
```python
@app.route('/data')
def get_utilization():
result = get_data()
utilization = {'cpu': result[0], 'memory': result[1]}
return utilization
```
9. 编写获取 CPU 和内存利用率的代码
在 `app.py` 中添加以下代码,用于获取当前的 CPU 和内存利用率:
```python
import psutil
def get_utilization():
cpu = psutil.cpu_percent()
memory = psutil.virtual_memory().percent
return cpu, memory
```
10. 完整代码
最后,将以上代码整合到一起,`app.py` 的完整代码如下:
```python
from flask import Flask, render_template, request
import MySQLdb
import psutil
app = Flask(__name__)
db = MySQLdb.connect(host='localhost', user='root', passwd='password', db='cpu_memory_monitor', charset='utf8')
def insert_data(cpu, memory):
cursor = db.cursor()
sql = "INSERT INTO utilization (cpu, memory) VALUES (%s, %s)"
try:
cursor.execute(sql, (cpu, memory))
db.commit()
except:
db.rollback()
def get_data():
cursor = db.cursor()
sql = "SELECT cpu, memory FROM utilization ORDER BY id DESC LIMIT 1"
cursor.execute(sql)
result = cursor.fetchone()
return result
def get_utilization():
cpu = psutil.cpu_percent()
memory = psutil.virtual_memory().percent
return cpu, memory
@app.route('/')
def index():
return render_template('index.html')
@app.route('/data')
def get_utilization():
result = get_data()
utilization = {'cpu': result[0], 'memory': result[1]}
return utilization
if __name__ == '__main__':
app.run(debug=True)
```
在终端中运行 `python app.py` 命令,访问 `http://localhost:5000` 即可查看实时监控 CPU 和内存利用率的功能。
阅读全文