1、需求:
(1)在局域网内计算机运行python程序,检测每台计算机的的cpu、内存占用情况
(2)检测到的内容上传到mongodb
(3)管理员可以在网页上查到相关计算机运行指标的变化
2、环境准备
(1)安装python3.72
(2)安装flask、psutil、pymongo
(3)安装mongodb4.0
3、代码实现
3.1在mongdb建立数据表
建立数据库:use monitor
建立数据集:db.createCollection("monitor",{'host':'192.168.1.1'},{'boot_start':''},{'boot_start':''},{'cpu_usage':'192.168.1.1'},{'ram':''},{'ram_percent':''},{'recordDate':''},)
3.2python功能开发
monitor.py--------------------监控信息写入数据库 monitor.bat------------------windows运行脚本,在自动运行中加入,每15分钟运行一次 monitorservice.py------------将数据写成jsonobject格式传给前台 eharts1.html------------------echars、ajax实现自动绘图,自动生成多条曲线 具体代码如下: monitor.py组件监控计算机状态,将cpu占用率写入数据库
#Author:zhangguoqing
#目标:调取监控数据并保存到数据库
#引用类库
import socket
import psutil
import time
import pymongo
import threading
import sched
from random import randint
#连接数据库
DBSerSetPara = {
"ip":'localhost',
"port":27017,
"DbName":"monitor",
"SetName":"baseInfo"
}
conn = pymongo.MongoClient(DBSerSetPara["ip"],DBSerSetPara["port"])
db = conn.monitor #连接数据库
tblmonitor = db.tblmonitor #连接数据集合
DictMonitor = {}
#获取监控信息
def funMonitor():
#获得主机名称
host_name = socket.gethostname()
#获得主机ip
host_ip = socket.gethostbyname_ex(host_name)[2][0]
# 获得启动时间
boot_start = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(psutil.boot_time()))
# 主线程延迟0.5
time.sleep(0.5)
# cpu_usage
cpu_usage = psutil.cpu_percent()
# RAM
ram = int(psutil.virtual_memory().total / (1027 * 1024))
# RAM占用比例
ram_percent = psutil.virtual_memory().percent
#如下代码为数据插入字典
IPAddressEndNumber = str(randint(1, 10)) #为了单机展示效果好一些,