点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!


功能简介
在智慧运维平台-操作中心-运维配置-操作管理-操作,界面中可以添加对主机进行操作的操作步骤:

操作功能-提供了丰富的脚本类型可以选择:

功能演示
下面以python脚本对云化主机批量进行日志检索为例:
脚本内容:
#!/home/bomc/miniconda2/bin/python2.7
# -*- coding:utf-8 -*-
from paramiko import SSHClient, AutoAddPolicy
import multiprocessing
import threading
import os
import sys
import time
import datetime
importstring
sys.path.append("/home/bomc/python")
import passwd
import command
import ftp_con
import cx_Oracle
import iboss_pods
reload(sys)
sys.setdefaultencoding('utf-8')
def host_def(sql_select):
password = passwd.crypto.decode("gAAAAABcpVuKaEnScGgRGl7Z2zVurdZVMDAYlIQ==")
try:
db = cx_Oracle.connect('username',password,'passwd')
curs = db.cursor()
result = curs.execute(sql_select)
rows = curs.fetchall()
db.close()
except Exception as e:
raise e
return rows
def run(task):
auto_task = command.ssh_comm(task[0],task[1],task[2],task[3])
return auto_task
def ftp_upload(host_ip,username,passwd,localfile,remote_patch,remote_file):
try:
ftp = ftp_con.myFtp(host_ip)
ftp.login(username,passwd)
except Exception as e:
print "ftp 登陆失败,请检查--------"
else:
ftp.uploadfile(localfile,remote_patch,remote_file)
ftp.close()
print(remote_patch+'/'+remote_file+' upload sucessfully !!!!')
def pod_value(containername):
rows = []
try:
pod_name = iboss_pods.Dockermnage()
pods = pod_name.get_pod('iboss')
for pod in pods:
if pod['name'].split('-')[0] == containername:
rows.append(pod['hostIP'])
return rows
except Exception as e:
print e
def main():
today = datetime.datetime.now()
now_date = today.strftime('%Y%m%d%H%M')
filename = keyword+'_'+now_date+'.log'
localfile = '/oracle/data/'+filename
rows=[]
p=multiprocessing.Pool(processes=12)
sql_select = "select t.hostip,t.function,t.username,t.password,t.rootpassword,t.bomcpassword from crm_machine_info t where t.function in ('nkyh') and t.status=1"
if log_type == 'server':
path = '/var/log/paas/jcrm/'
cmd = 'cd %s;grep -C 100 %s jcrm*.log' % (path,keyword)
elif log_type == 'tracelog':
path = '/var/log/paas/jcrm/'
cmd = 'cd %s;grep -C 500 %s srp-*.log' % (path,keyword)
elif log_type == 'monitor':
path = '/var/log/paas/jcrm/omtrace'
cmd = 'cd %s;grep -C 100 %s *.log' % (path,keyword)
else:
print"输入有误,请重试-------------"
print cmd
forline in host_def(sql_select):
host = line[0]
name = line[2]
password1 = line[3]
password = passwd.crypto.decode(password1)
ifline[4] == None:
bomcname = 'bomc'
bomcword1 = line[5]
bomcword = passwd.crypto.decode(bomcword1)
elif line[5] == None:
bomcname = 'root'
bomcword1 = line[4]
bomcword = passwd.crypto.decode(bomcword1)
host_com = [host,name,password,cmd]
rows.append(p.apply_async(run,(host_com,)))
log_file=open(localfile,'a')
for n in rows:
try:
host_message = n.get(timeout=2500)
iflen(host_message) > 2:
for i in host_message:
log_file.write(i+'\n')
except Exception ase:
printe
log_file.close()
out_file1 = localfile
print out_file1
file_size = os.path.getsize(localfile)
print file_size
sys.exit(0)
if __name__ == '__main__':
main()
审核通过后,可在操作功能界面选择此操作进行日志检索功能;

检索结束后可以点击任务名称查看任务详情:


该功能赋予了运维人员及开发人员进行快速的日志检索能力,减少了逐台对主机进行操作时的风险。

本文作者:王 帅(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




