设计
项目名称:LinuxMM
监控平台:Linux
使用模块:psutil、Paramiko
前端框架:Bootstrap
后端框架:DJango
监控方式
远程读取信息的方式一般分两种
推式:在每台主机上部署获取信息的脚本,然后采用某种方式发送给监控机。
优点:
缺点:
拉式:脚本只部署在监控机上,主动从目标主机上读取信息。
优点:代码只存放在监控机即可
缺点:每次都要发送执行命令;另外,psutil 模块还是需要安装到目标服务器的,可以下载解压安装包后执行 python3 setup.py install 。
简单起见,我们这里使用拉式。
设计草图
【首页】
【详情页】
需求分析
设计数据库,表结构
实现登录功能
登录成功后,可以添加主机
点击一条主机,可以查看到主机当前 CPU、内存等资源占用情况
点击编辑功能,可以修改主机信息,如 IP、标签等
主要技术点
数据库设计和 Web 开发相关知识,参考 Web 开发模块
主机信息获取,可使用 psutil 模块
CPU 使用率图表可使用百度图表
实现
代码仓库:https://gitee.com/luhuadong/Python_Learning/tree/master/13th_week/homework/linuxmm
数据表设计
创建数据库
CREATE DATABASE IF NOT EXISTS linuxmm DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
选择数据库
use linuxmm
创建数据表
CREATE TABLE host(
id int unsigned NOT NULL auto_increment PRIMARY KEY COMMENT 'ID号',
tag varchar(32) NOT NULL COMMENT '标签',
ip varchar(32) NOT NULL COMMENT 'IP地址',
cpu smallint unsigned DEFAULT NULL COMMENT 'CPU',
mem bigint unsigned DEFAULT NULL COMMENT '内存',
disk bigint unsigned DEFAULT NULL COMMENT '硬盘',
stat tinyint unsigned default 0 COMMENT '状态',
cdate datetime COMMENT '登记时间'
);
查看表结构
mysql> desc host;
+-------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key