zoukankan      html  css  js  c++  java
  • 利用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%
  • 相关阅读:
    Linux设备驱动之Ioctl控制
    虚拟内存与物理内存的区别
    怎么远程控制他人电脑
    二维数组和指针
    二维数组和指针(C语言)
    帧率、码流与分辨率相关知识
    深入理解FIFO
    安装lsb_release
    Linux初学之vmware Workstation 网络连接三种模式
    RTSP协议学习笔记
  • 原文地址:https://www.cnblogs.com/baicai37/p/13535666.html
Copyright © 2011-2022 走看看