• 利用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%
  • 相关阅读:
    关于Vue修改默认的build文件存放的dist路径
    JSON.stringify的三个参数(转载)
    JS获取字符串实际长度(包含汉字)的简单方法
    JSON.stringify() 和 JSON.parse()
    iPhone各种机型尺寸、屏幕分辨率
    jquery each 遍历
    React 內联式样
    组件Refs(操作DOM的2⃣️两种方法)
    可复用组件
    事件与数据的双向绑定
  • 原文地址:https://www.cnblogs.com/baicai37/p/13535666.html
Copyright © 2020-2023  润新知