python监控服务器cpu和内存使用_python 监测内存和cpu的使用率实例

import paramiko

import pymysql

import time

linux = ['192.168.0.179']

def connectHost(ip, uname='shenyuming', passwd='ajiongqqq'):

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(ip, username=uname, password=passwd,port=22)

return ssh

def MainCheck():

try:

while True:

time.sleep(1)

for a in range(len(linux)):

ssh = connectHost(linux[a])

# 查询主机名称

cmd = 'hostname'

stdin, stdout, stderr = ssh.exec_command(cmd)

host_name = stdout.readlines()

host_name = host_name[0]

# 查看当前时间

csj = 'date +%T'

stdin, stdout, stderr = ssh.exec_command(csj)

curr_time = stdout.readlines()

curr_time = curr_time[0]

# 查看cpu使用率,并将信息写入到数据库中(取三次平均值)

cpu = "vmstat 1 3|sed '1d'|sed '1d'|awk '{print $15}'"

stdin, stdout, stderr = ssh.exec_command(cpu)

cpu = stdout.readlines()

cpu_usage = str(round((100 - (int(cpu[0]) + int(cpu[1]) + int(cpu[2])) / 3), 2)) + '%'

# 查看内存使用率,并将信息写入到数据库中

mem = "cat /proc/meminfo|sed -n '1,4p'|awk '{print $2}'"

stdin, stdout, stderr = ssh.exec_command(mem)

mem = stdout.readlines()

mem_total = round(int(mem[0]) / 1024)

mem_total_free = round(int(mem[1]) / 1024) + round(int(mem[2]) / 1024) + round(int(mem[3]) / 1024)

mem_usage = str(round(((mem_total - mem_total_free) / mem_total) * 100, 2)) + "%"

sql = "insert into memory_and_cpu values('%s','%s','%s','%s')" % (

host_name, curr_time, cpu_usage, mem_usage)

db = connectDB()

sqlDML(sql, db)

except:

print("连接服务器 %s 异常" % (linux[a]))

def connectDB(dbname='test11'):

if dbname == 'test11':

db = pymysql.connect("localhost", "root", "shen123", "test11")

return db

def sqlDML(sql, db):

cr = db.cursor()

cr.execute(sql)

db.commit()

cr.close()

#

if __name__ == '__main__':

MainCheck()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值