利用paramiko和psutil远程监控

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%
原文地址:https://www.cnblogs.com/baicai37/p/13535666.html