Pythonサーバモニタ


Pythonサーバモニタ
  • 一、paramikoとpsutil
  • をインストールする
  • 二、遠隔監視を実現する
  • 三、問題CryptographyDepresationWarning
  • 一、paramikoとpsuilのインストール
    pip install paramiko
    pip install psutil
    

    二、遠隔監視を実現する
  • モニタ入口run_perf.py
  • import os
    from utils import *
    
    
    def run_perf(host, port, user, password):
        """
            ,    
        """"
        base = os.getcwd()
        cmd_file = base + r'/script.txt'
        client = connect_to_server(host, port, user, password)
        with open(cmd_file) as fp:
            cmd = fp.read()
            exec_script(client, cmd)
        close_connection(client)
    
    if __name__ == '__main__':
        run_perf('10.2.2.100', 22, 'root', 'password')
    
  • リモート接続utils.py
  • import json
    import paramiko
    import psutil
    
    
    def connect_to_server(host, port, user, password):
        """
        SSH      
        """"
        client = paramiko.SSHClient()
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        client.connect(host, port, user, password)
        return client
    
    
    def exec_script(client, script):
        """
            
        """"
        stdin, stdout, stderr = client.exec_command(script)
        for line in stdout.readlnes():
            data = json.loads(line)
            print(data)
    
    
    def close_connection(client):
        """
             
        """"
        client.clsoe()
    
  • モニタスクリプトscript.py
  • python <<EOF
    import json
    import psutil as pu
    
    
    data = ()
    mem_info = {}
    mem = pu.virtual_memory()
    mem_info['total'] = mem.total
    mem_info['available'] = mem.available
    mem_info['percent'] = mem.percent
    mem_info['used'] = mem.used
    mem_info['free'] = mem.free
    cpu_info = pu.cpu_percent(interval=2, percpu=True)
    
    data['mem_info'] = mem_info
    data['cpu_info '] = cpu_info
    data = json.dumps(data)
    print(data)
    EOF
    

    三、問題CryptographyDepresationWarning
  • 原因:paramikoはcryptographyに依存し、最新のcryptographyには廃棄されたAPIがある.
  • 解放方案uninstall最新版、インストール2.4.2 pip uninstall cryptography pip install cryptography=2.4.2
  • PS:リファレンスリンクhttps://psutil.readthedocs.io/en/latest/