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%
  • 相关阅读:
    php isset()与empty()的使用
    , , 的区别
    让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    当导航条滚动到顶部时固定到顶部
    JS:window.onload的使用
    jquery里面.length和.size()有什么区别
    2017.4.13(内置函数)作业
    文件内容的增删改查
    用户登陆程序,密码三次错误自动锁定用户名。
  • 原文地址:https://www.cnblogs.com/baicai37/p/13535666.html
Copyright © 2011-2022 走看看