亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Python > 正文

詳解用Python實現自動化監控遠程服務器

2024-09-09 19:02:06
字體:
來源:轉載
供稿:網友

最近發現Python課器做很多事情,在監控服務器有其獨特的優勢,耗費資源少,開發周期短。

首先我們做一個定時或者實時腳本timedtask.py,讓其定時監控目標服務器,兩種方式:

第一種:

#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time  : 2017/11/27 15:59# @Desc  : 定時任務,以需要的時間間隔執行某個命令# @File  : timedtask.py# @Software: PyCharm import time, osfrom monitorserver import alltask  def roll_back(cmd, inc = 60):  while True:    #執行方法,函數    alltask()    time.sleep(inc) roll_back("echo %time%", 5)

第二種:

#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time  : 2017/11/27 15:59# @Desc  : 定時任務,以需要的時間間隔執行某個命令# @File  : timedtask.py# @Software: PyCharm import time, os def roll_back(cmd, inc = 60):  while True:    #監控代碼文件所在位置    os.system('python /home/../monitorserver.py');    time.sleep(inc) roll_back("echo %time%", 5)

做過監控應該都知道,我們主要監控服務器,負載均衡、磁盤、內存、CPU、網絡接口(流量)、端口代碼,主要針對這些,我做了以下遠程監控,第一種和第二種監控代碼一樣,代碼monitorserver.py如下:

#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time  : 2017/11/27 15:59# @Desc  : 服務器監控代碼# @File  : monitorserver.py# @Software: PyCharm import pexpectimport re import timeimport threading """主方法127.0.0.1#遠程服務器ip地址"""def ssh_command(user, host, password, command):  ssh_new_key = 'Are you sure you want to continue connecting'  child = pexpect.spawn('ssh -l %s %s %s' % (user, host, command))  i = child.expect([pexpect.TIMEOUT, ssh_new_key, 'password: '])  if i == 0:    print 'ERROR!'    print 'SSH could not login. Here is what SSH said:'    print child.before, child.after    return None  if i == 1:    child.sendline('yes')    child.expect('password: ')    i = child.expect([pexpect.TIMEOUT, 'password: '])    if i == 0:      print 'ERROR!'      print 'SSH could not login. Here is what SSH said:'      print child.before, child.after      return None  child.sendline(password)  return child  """內存監控"""def mem_info():   child = ssh_command("遠程服務器用戶名", "127.0.0.1", "遠程服務器密碼", "cat /proc/meminfo")  child.expect(pexpect.EOF)  mem = child.before  mem_values = re.findall("(/d+)/ kB", mem)  MemTotal = mem_values[0]  MemFree = mem_values[1]  Buffers = mem_values[2]  Cached = mem_values[3]  SwapCached=mem_values[4]  SwapTotal = mem_values[13]  SwapFree = mem_values[14]  print '******************************內存監控*********************************'  print "*******************時間:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "******************"  print "總內存:",MemTotal  print "空閑內存:", MemFree  print "給文件的緩沖大小:",Buffers  print "高速緩沖存儲器使用的大小:", Cached  print "被高速緩沖存儲用的交換空間大小:", SwapCached  print "給文件的緩沖大小:", Buffers  if int(SwapTotal) == 0:    print u"交換內存總共為:0"  else:    Rate_Swap = 100 - 100*int(SwapFree)/float(SwapTotal)    print u"交換內存利用率:", Rate_Swap  Free_Mem = int(MemFree) + int(Buffers) + int(Cached)  Used_Mem = int(MemTotal) - Free_Mem  Rate_Mem = 100*Used_Mem/float(MemTotal)  print u"內存利用率:", str("%.2f" % Rate_Mem), "%"  """內核線程、虛擬內存、磁盤、陷阱和 CPU 活動的統計信息"""def vm_stat_info():  child = ssh_command("遠程服務器用戶名", "127.0.0.1", "遠程服務器密碼", "vmstat 1 2 | tail -n 1")  child.expect(pexpect.EOF)  vmstat_info = child.before.strip().split()  processes_waiting = vmstat_info[0]  processes_sleep = vmstat_info[1]  swpd = vmstat_info[2]  free = vmstat_info[3]  buff = vmstat_info[4]  cache = vmstat_info[5]  si = vmstat_info[6]  so = vmstat_info[7]  io_bi = vmstat_info[8]  io_bo = vmstat_info[9]  system_interrupt = vmstat_info[10]  system_context_switch = vmstat_info[11]  cpu_user = vmstat_info[12]  cpu_sys = vmstat_info[13]  cpu_idle = vmstat_info[14]  cpu_wait = vmstat_info[15]  st=vmstat_info[16]  print '****************************內核線程、虛擬內存、磁盤、陷阱和 CPU 活動的統計信息監控****************************'  print "*******************時間:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "******************"  print "等待運行進程的數量:", processes_waiting  print "處于不間斷狀態的進程:", processes_sleep  print "使用虛擬內存(swap)的總量:", swpd  print "空閑的內存總量:", free  print "用作緩沖的內存總量:", buff  print "用作緩存的內存總量:", cache  print "交換出內存總量 :", si  print "交換入內存總量 :", so  print "從一個塊設備接收:", io_bi  print "發送到塊設備:", io_bo  print "每秒的中斷數:", system_interrupt  print "每秒的上下文切換數:", system_context_switch  print "用戶空間上進程運行的時間百分比:", cpu_user  print "內核空間上進程運行的時間百分比:", cpu_sys  print "閑置時間百分比:", cpu_idle  print "等待IO的時間百分比:", cpu_wait  print "從虛擬機偷取的時間百分比:", st  '''cpu監控'''def cpu_info():  child = ssh_command("遠程服務器用戶名", "127.0.0.1", "遠程服務器密碼", "cat /proc/cpuinfo")  child.expect(pexpect.EOF)  cpuinfo = child.before  cpu_num = re.findall('processor.*?(/d+)', cpuinfo)[-1]  cpu_num = str(int(cpu_num) + 1)  print '***************************************cpu監控***************************************'  print "*******************時間:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "******************"  print u"CPU數目:", cpu_num  li = cpuinfo.replace('/t', '').split('/r')  CPUinfo = {}  procinfo = {}  nprocs = 0  for line in li:    if line.find("processor") > -1:      CPUinfo['CPU%s' % nprocs] = procinfo      nprocs = nprocs + 1    else:      if len(line.split(':')) == 2:        procinfo[line.split(':')[0].strip()] = line.split(':')[1].strip()      else:        procinfo[line.split(':')[0].strip()] = ''  for processor in CPUinfo.keys():    print "CPU屬于的名字及其編號、標稱主頻:",CPUinfo[processor]['model name']    print "CPU屬于其系列中的哪一代的代號:", CPUinfo[processor]['model']    print "CPU制造商:", CPUinfo[processor]['vendor_id']    print "CPU產品系列代號:", CPUinfo[processor]['cpu family']    print "CPU的實際使用主頻:", CPUinfo[processor]['cpu MHz']  """負載均衡"""def load_stat():  child = ssh_command("遠程服務器用戶名", "127.0.0.1", "遠程服務器密碼", "cat /proc/loadavg")  child.expect(pexpect.EOF)  loadavgs = child.before.strip().split()  print '************************負載均衡監控****************************'  print "*******************時間:",time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),"******************"  print "系統5分鐘前的平均負載:", loadavgs[0]  print "系統10分鐘前的平均負載:", loadavgs[1]  print "系統15分鐘前的平均負載:", loadavgs[2]  print "分子是正在運行的進程數,分母為總進程數:",loadavgs[3]  print "最近運行的進程id:", loadavgs[4]   """獲取網絡接口的輸入和輸出"""def ionetwork():  child = ssh_command("遠程服務器用戶名", "127.0.0.1", "遠程服務器密碼", "cat /proc/net/dev")  child.expect(pexpect.EOF)  netdata = child.before  li = netdata.strip().split('/n')  print '************************獲取網絡接口的輸入和輸出監控****************************'  print "*******************時間:",time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),"******************"  net = {}  for line in li[2:]:    line = line.split(":")    eth_name = line[0].strip()    # if eth_name != 'lo':    net_io = {}    net_io['Receive'] = round(float(line[1].split()[0]) / (1024.0 * 1024.0), 2)    net_io['Transmit'] = round(float(line[1].split()[8]) / (1024.0 * 1024.0), 2)    net[eth_name] = net_io  print net  """ 磁盤空間監控"""def disk_stat():  child = ssh_command("遠程服務器用戶名", "127.0.0.1", "遠程服務器密碼", "df -h")  child.expect(pexpect.EOF)  disk = child.before  disklist = disk.strip().split('/n')  disklists=[]  for disk in disklist:    disklists.append(disk.strip().split())  print '************************磁盤空間監控****************************'  print "*******************時間:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "******************"  for i in disklists[1:]:    print "/t文件系統:", i[0],    print "/t容量:", i[1],    print "/t已用:", i[2],    print "/t可用:", i[3],    print "/t已用%掛載點:", i[4]  """ 端口監控一般是遠程服務器用戶名用戶"""def getComStr():  child = ssh_command("遠程服務器用戶名", "127.0.0.1", "遠程服務器密碼", "netstat -tpln")  child.expect(pexpect.EOF)  Com = child.before  print '******************************端口監控*********************************'  print "*******************時間:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "******************"  print Com   """獲取網絡接口的輸入和輸出"""def cpu():  child = ssh_command("遠程服務器用戶名", "127.0.0.1", "遠程服務器密碼", 'cat /proc/stat | grep "cpu "')  child.expect(pexpect.EOF)  child1 = ssh_command("遠程服務器用戶名", "127.0.0.1", "遠程服務器密碼", 'cat /proc/stat | grep "cpu "')  child1.expect(pexpect.EOF)  cpus = child.before.strip().split()  cpus1 = child1.before.strip().split()  print '************************cpu使用情況****************************'  print "*******************時間:",time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),"******************"  T1=int(cpus[1])+int(cpus[2])+int(cpus[3])+int(cpus[4])+int(cpus[5])+int(cpus[6])+int(cpus[8])+int(cpus[9])  T2=int(cpus1[1]) + int(cpus1[2]) + int(cpus1[3]) + int(cpus1[4] )+ int(cpus1[5] )+int( cpus1[6] )+ int(cpus1[8] )+ int(cpus1[9])  Tol=T2-T1  Idle=int(cpus1[4]) - int(cpus[4])  print '總的cpu時間1:',T1  print '總的cpu時間2:', T2  print '時間間隔內的所有時間片:', Tol  print '計算空閑時間idle:', Idle  print "計算cpu使用率:",100*(Tol-Idle)/Tol,"%" """第一種執行"""def alltask():  try:    threads = []    t1 = threading.Thread(target=mem_info)    threads.append(t1)    t2 = threading.Thread(target=vm_stat_info)    threads.append(t2)    t3 = threading.Thread(target=cpu_info)    threads.append(t3)    t4 = threading.Thread(target=load_stat)    threads.append(t4)    t5 = threading.Thread(target=ionetwork)    threads.append(t5)    t6 = threading.Thread(target=disk_stat)    threads.append(t6)    t7 = threading.Thread(target=getComStr)    threads.append(t7)    t8 = threading.Thread(target=cpu)    threads.append(t8)    for n in range(len(threads)):      threads[n].start()  except Exception, e:    print str(e) """第二種執行"""if __name__ == '__main__':  try:    threads = []    t1 = threading.Thread(target=mem_info)    threads.append(t1)    t2 = threading.Thread(target=vm_stat_info)    threads.append(t2)    t3 = threading.Thread(target=cpu_info)    threads.append(t3)    t4 = threading.Thread(target=load_stat)    threads.append(t4)    t5 = threading.Thread(target=ionetwork)    threads.append(t5)    t6 = threading.Thread(target=disk_stat)    threads.append(t6)    t7 = threading.Thread(target=getComStr)    threads.append(t7)    t8 = threading.Thread(target=cpu)    threads.append(t8)    for n in range(len(threads)):      threads[n].start()  except Exception, e:    print str(e)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲综合| 中文字幕欧美日韩| 国产精品草莓在线免费观看| 免费91麻豆精品国产自产在线观看| 欧美日韩国产在线看| 久久久久国产精品免费| 韩国国内大量揄拍精品视频| 国产亚洲欧美日韩一区二区| 亚洲成人在线视频播放| 亚洲一区二区三区乱码aⅴ| 91高潮在线观看| 国产欧美日韩免费| 欧美视频一二三| 狠狠躁天天躁日日躁欧美| 国产精品久久久久久久久久东京| 亚洲高清福利视频| 国产精品1区2区在线观看| 亚洲女人被黑人巨大进入| 欧美日韩亚洲激情| 国产精品自拍视频| 欧美刺激性大交免费视频| 91精品视频在线看| 91亚洲精品久久久| 国产成人久久精品| 精品一区二区三区四区在线| 亚州精品天堂中文字幕| 欧美色播在线播放| 国产精品久久久久影院日本| 91精品国产综合久久男男| 久久久人成影片一区二区三区观看| 91精品中文在线| 8090理伦午夜在线电影| 欧美性猛交xxxx免费看久久久| 亚洲精品久久久久中文字幕二区| 亚洲性日韩精品一区二区| 久久综合色影院| 亚洲欧美成人精品| 国产日韩一区在线| 国产成人一区二区三区小说| 91亚洲精品久久久| 久久久亚洲福利精品午夜| 国产91色在线播放| 亚洲精品一区二区网址| 久久最新资源网| 色偷偷88888欧美精品久久久| 亚洲精品国精品久久99热一| 久久99精品久久久久久青青91| 美日韩丰满少妇在线观看| 日韩精品在线观看网站| 久热精品视频在线观看一区| 亚洲新中文字幕| 98视频在线噜噜噜国产| 国模精品视频一区二区三区| 日韩精品免费在线视频| 欧美—级a级欧美特级ar全黄| 欧美成人午夜影院| 91亚洲精品一区二区| 亚洲一区二区三区四区在线播放| 久久久久久久久爱| 久久99国产精品久久久久久久久| 国产成人精品电影| 国产精品xxx视频| 亚洲人成在线免费观看| 欧美久久精品一级黑人c片| 欧美成年人视频| 亚洲欧美另类在线观看| www.xxxx欧美| 欧美理论电影在线播放| 日韩高清电影免费观看完整版| 欧美日产国产成人免费图片| 精品久久久一区| 成人午夜激情免费视频| 欧美黄色小视频| 中文字幕在线国产精品| 欧美另类极品videosbestfree| 国产精品久久久久久久久久久久久久| 亚洲v日韩v综合v精品v| 日韩中文在线不卡| 国产一区玩具在线观看| 操91在线视频| 亚洲精品电影网站| 98精品国产高清在线xxxx天堂| 午夜精品久久久久久久男人的天堂| 欧洲日韩成人av| 欧美成人亚洲成人日韩成人| 日本亚洲欧美成人| 亚洲精品在线91| 欧美一级黑人aaaaaaa做受| 91在线直播亚洲| 精品在线欧美视频| 欧美性猛交xxxxx水多| 国产精品盗摄久久久| 蜜月aⅴ免费一区二区三区| 亚洲免费视频网站| 国产精品91在线观看| 亚洲第一中文字幕| 亚洲激情电影中文字幕| 国产在线精品一区免费香蕉| 国产精品网红直播| 亚洲最大福利网站| 狠狠久久五月精品中文字幕| www.欧美三级电影.com| 国产精品久久久久久久久久新婚| 92看片淫黄大片欧美看国产片| 国产香蕉一区二区三区在线视频| 国产精品女主播| 中文字幕久热精品视频在线| 久久免费少妇高潮久久精品99| 97人人爽人人喊人人模波多| 538国产精品一区二区在线| 久久久99久久精品女同性| 午夜精品一区二区三区在线视频| 欧美一级bbbbb性bbbb喷潮片| 成人国产精品久久久| 欧美性在线视频| 国产精品一二区| 亚洲国产精品va在看黑人| 日本在线精品视频| 亚洲黄色av女优在线观看| 国产精品国语对白| 国产亚洲精品va在线观看| 成人网页在线免费观看| 国产成人精品免高潮在线观看| 欧美性xxxx极品高清hd直播| 久久99青青精品免费观看| 美女扒开尿口让男人操亚洲视频网站| 国模私拍视频一区| 亚洲欧美另类中文字幕| 91久久中文字幕| 日韩成人久久久| 欧美性精品220| 亚洲视频网站在线观看| 国产亚洲欧美日韩美女| 欧美精品一区二区三区国产精品| 国产精品普通话| 色天天综合狠狠色| 国产精品va在线播放| 国产日产欧美a一级在线| 欧美一区二区色| 国产成人在线一区二区| 国产一区av在线| 久热在线中文字幕色999舞| 亚洲精品视频免费| 亚洲精品国产suv| 亚洲人精品午夜在线观看| 黄色一区二区在线| 日韩欧美精品网址| 国a精品视频大全| 欧美午夜丰满在线18影院| 欧美日韩中文在线| 日本久久久a级免费| 91精品91久久久久久| 欧美成人在线影院| 一本色道久久88综合日韩精品| 国产日韩视频在线观看| 久久伊人免费视频| 国产女同一区二区| 98视频在线噜噜噜国产| 欧美激情一二三| 精品视频9999| 亚洲性夜色噜噜噜7777| 亚洲一区二区三区四区视频| 精品自拍视频在线观看| 欧美国产日本高清在线|