#!/usr/bin/python3 """ 监控采集多台主机的load io数据,被监控主机在hosts列表按要求添加 tab_header: datetime ip loadaverage_5 loadaverage_10 loadaverage_15 mem_all mem_use mem_idle mem_use% disk_kb_read/s disk_kb_write/s network_rxkb/s network_txkb/s """ import paramiko import time import os dt = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) #print(dt) d = time.strftime("%Y-%m-%d",time.localtime()) t = time.strftime("%H:%M:%S",time.localtime()) dtshow = d + "_"+ t #print(dtshow) #tab head handle logName = "rui.qin.o.logs" tab_header = "datetime ip loadaverage_5 loadaverage_10 loadaverage_15 mem_all mem_use mem_idle mem_use% disk_kb_read/s disk_kb_write/s network_rxkb/s network_txkb/s\n" if not os.path.exists(logName): with open(logName,"w") as log_w: log_w.write(tab_header) else: pass #logName = "/opt/rui.qin.o/NetTools.logs" #remote exec ping hosts,remote exec ping aim host use username/passwd or passwdless hosts=[ #'hostname="10.112.17.53",port=22,username="jenkins",password=""', #'hostname="10.110.93.11",port=22,username="jenkins",password=""', 'hostname="10.110.176.192",port=22,username="root",password="n"', #'hostname="10.110.73.74",port=22,username="rui.qin",password=""', #'hostname="10.110.92.125",port=22,username="jenkins",password=""', #'hostname="10.110.92.123",port=22,username="jenkins",password=""', ] #for ips in pingAimIps: # tabstr = tabstr + " " + ips #print(tabstr) #time.sleep(10) #if not os.path.exists(logName): # cmd = "touch " + logName # print(cmd) # #os.system(touch logName) #time.sleep(10) #if tabstr not in open('/opt/rui.qin.o/NetTools.logs').read(): # openfs = open("/opt/rui.qin.o/NetTools.logs","a+") # openfs.seek(0,0) # openfs.write(tabstr) #print("True") #else: #print("False") # pass ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #counts=10 #showcontent01 = "" #showcontent03 = "" for i in hosts: #showcontent02 = "" varHeader = "当前监测主机:" varHost = varHeader + str(i.split(',')) #print(varHost) #print(f"{varHeader}" + i.split(',')) #HN='"' + i.split(',')[0].split('=')[1].replace('"',"") + '"' HN=i.split(',')[0].split('=')[1].replace('"','') #print(HN) #print("{} {}".format(varHeader,HN)) #print(dtshow + " " + HN) showcontent01 = dtshow + " " + HN #print(showcontent01) Port=int(i.split(',')[1].split('=')[1]) #print(Port) userName=i.split(',')[2].split('=')[1].replace('"','') #print(userName) passWord=i.split(',')[3].split('=')[1].replace('"','') #print(passWord) # ssh.connect(hostname=HN,port=Port,username=userName,password=passWord) #++stdin,stdout,stderr = ssh.exec_command("du -sh /home/jenkins/rui.qin.o/") #++result = stdout.read() #++print(bytes.decode(result)) #获取主机挂载点list #print(os.system("df -h |awk ' NR>1 {if ($1==$NF){printf $1}else{print $6}}'")) #stdin,stdout,stderr = ssh.exec_command("df -h | awk 'NR>1 {if ($1==$NF){print $1}else {print($5,$6)}}'") #stdin,stdout,stderr = ssh.exec_command("df -h | awk 'NR>1 {if ($1==$NF){print $1}else {print($6)}}'") #stdin,stdout,stderr = ssh.exec_command("ping -c %s 100.64.43.12 |grep rtt |awk '{print $4}' |awk -F'/' '{print $2}'") #stdin,stdout,stderr = ssh.exec_command("sudo apt-get install sysstat && sudo apt-get install iotop") #软件组件安装 #print(HN) stdin_init,stdout_init,stderr_init = ssh.exec_command("sudo apt-get -y install sysstat iotop") time.sleep(1) ''' stdin,stdout,stderr = ssh.exec_command("iostat -d -k 1 1") res_0661 = bytes.decode(stdout.read()) print(res_0661) time.sleep(1) stdin,stdout,stderr = ssh.exec_command("iostat -c 1 1") res_0662 = bytes.decode(stdout.read()) print(res_0662) time.sleep(1) stdin,stdout,stderr = ssh.exec_command("sudo iotop -b -d 1 -n 1 -o -u jenkins -qqq") res_0663 = bytes.decode(stdout.read()) print(res_0663) time.sleep(1) stdin,stdout,stderr = ssh.exec_command("iostat -d -x -k 1") res_0664 = bytes.decode(stdout.read()) print(res_0664) time.sleep(1) ''' stdin,stdout,stderr = ssh.exec_command("/usr/bin/w | grep average | awk '{print $10,$11,$12}'") cpu_la = bytes.decode(stdout.read()) cpu_la_res = cpu_la.split(',') #print(cpu_la_res) cpu_la_5 = cpu_la_res[0] cpu_la_10 = cpu_la_res[1] cpu_la_15 = cpu_la_res[2] #print(cpu_la_5 + cpu_la_10 + cpu_la_15) #print(stderr.read()) #res_0665 = bytes.decode(stdout.read()) #print(HN + "\t" + res_0665) #time.sleep(19) """ tps kB_read/s kB_wrtn/s kB_read kB_wrtn """ #stdin,stdout,stderr = ssh.exec_command("iostat -d -m | sed -n '3P' && iostat -d -m | grep sda") stdin,stdout,stderr = ssh.exec_command("iostat -d -k | grep nvme0n1 | awk '{print $3,$4}'") #print(bytes.decode(stdout.read())) disk_io_res = bytes.decode(stdout.read()).lstrip() #print(disk_io_res) #time.sleep(19) #disk_io_read_kb_s = disk_io_res.split("\t")[1] #print(len(disk_io_read_kb_s)) #disk_io_write_kb_s = disk_io_res.split(" ")[1] #print(disk_io_res_read_kb_s + disk_io_write_kb_s) #time.sleep(1) """ stdin,stdout,stderr = ssh.exec_command("iostat -d -m") res_0666 = bytes.decode(stdout.read()) print(res_0666) time.sleep(1) """ """ rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil """ #stdin,stdout,stderr = ssh.exec_command("sar -n DEV 1 2 | grep 'Average' | sed -n '1P' && sar -n DEV 1 2 | grep ens4f0| grep Average || sar -n DEV 1 2 | grep ens160|grep Average ") #stdin,stdout,stderr = ssh.exec_command("sar -n DEV 1 2 | grep ens4f0| grep Average | awk '{print $5,$6}' || sar -n DEV 1 2 | grep ens160|grep Average | awk '{print $5,$6}'") stdin,stdout,stderr = ssh.exec_command("sar -n DEV 1 2 | grep enx000ec670d28f| grep 平均时间 | awk '{print $5,$6}'&& sar -n DEV 1 2 | grep ens160|grep Average | awk '{print $5,$6}'") network_io_res = bytes.decode(stdout.read()).lstrip().rstrip().strip() #print(network_io_res) time.sleep(1) #memory stdin_m,stdout_m,stderr_m = ssh.exec_command("free -m | grep '内存'| awk '{print $2,$3,$4,$3/$2}'") mem = bytes.decode(stdout_m.read()) time.sleep(1) #print(mem) results = dtshow + "\t" + HN + "\t" + cpu_la_5 + '\t' + cpu_la_10 + '\t' + cpu_la_15.replace('\n','').replace('\r','') + '\t' + mem.replace('\n','') + '\t' + disk_io_res.replace('\n','').replace('\n','') + '\t' + network_io_res.replace("\r","").replace("\n","") + '\n' print(results) time.sleep(0.5) if os.path.exists(logName): with open(logName,"a+") as log_w: log_w.write(results) """ stdin,stdout,stderr = ssh.exec_command("sar -n DEV 1 2 | grep 'Average' | sed -n '1P' && sar -n DEV 1 2 | grep ens160| grep Average") res_0777 = bytes.decode(stdout.read()) print(res_0777) time.sleep(1) """ """ #valueX[] = "" for ii in range(len(pingAimIps)): #print(ii) #valueX[ii] = "" #cmd="ping -c {} {}|grep rtt |awk '{print \$4}' |awk -F'/' '{print \$2}'".format(counts,ii) #print(cmd) #cmd="ping -c 10 %s |grep rtt |awk '{print $4}' |awk -F'/' '{print $2}'"%(ii) #cmd="ping -c 10 %s |grep round-trip |awk '{print $4}' |awk -F'/' '{print $2}'"%(ii) cmd="ping -c 6 %s |grep dev |awk '{print $4}' |awk -F'/' '{print $2}'"%(pingAimIps[ii]) #print(ii) #print(showcontent02) #print(cmd) stdin,stdout,stderr = ssh.exec_command(cmd) res = stdout.read() #print(res) #print(type(res)) result = res.split(b'\n') result01 = result[0] res = result01.split(b'\n')[0] resok = bytes.decode(res) #showcontent02 = showcontent02 + " " + pingAimIps[ii] + " " + resok showcontent02 = showcontent02 + " " + resok #print(showcontent02) #valueX[ii] = valueX[ii] + " " + pingAimIps[ii] + " " + resok #print(showcontent02) #print(valueX[ii]) #print(showcontent01 + showcontent02) #print(showcontent02) ##print(resok) #showceontent02 = showcontent02 + " " +resok #showcontent02 = showcontent01 + " " + ii + " " + resok #showcontent02 = HN + " " + ii + " " + resok #print(showcontent02) #print(showcontent02) #print(showcontent02) #print("\n") #print(type(res)) #print(type(result01)) #showcontent03 = showcontent01 + showcontent02 #print(showcontent03) #showcontent03 = showcontent01 + " " + showcontent02 #print(showcontent03) """