1 环境准备
在需要监控的服务器上:
a.安装openssh
b.安装Python3
c.安装psutil (pip3 install psutil)
d.确保本地与远程机器的22端口的连通
2 执行文件准备(放在被监控的机器上)
例如下面的代码主要监控CPU、内存和硬盘的信息:
monitor.py
#!/bin/env python3 import json import psutil as pu result = {} mem = pu.virtual_memory() result["内存使用率"] = "%.2f%%"%mem.percent result["CPU使用率"] = "%.2f%%"%pu.cpu_percent(interval = 2) for id in pu.disk_partitions(): if id.opts != 'cdrom': disk_name = id.device.split(':')[0] disk_info = pu.disk_usage(id.device) disk_pct = "%.2f%%"%disk_info.percent result["硬盘%s使用率"%disk_name] = disk_pct data = json.dumps(result) print(data)
3 监控机器上
# pip3 install paramiko # pip3 install pandas
代码
# coding:utf-8 import paramiko import json import pandas as pd # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname='192.168.37.100', port=22, username='root', password='123456') # 执行命令 stdin, stdout, stderr = ssh.exec_command('/usr/local/python3/bin/python3 /root/monitor.py') # 获取命令结果 result = stdout.read() data = json.loads(result) result_df = pd.Series(data).to_frame('监控信息') print(result_df) # 关闭连接 ssh.close()
4 执行结果
监控信息 内存使用率 49.50% CPU使用率 0.00% 硬盘/dev/mapper/centos-root使用率 0.00% 硬盘/dev/sda1使用率 0.00%