暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

智慧运维平台-主机操作管理

IT那活儿 2025-04-01
103

点击上方“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()

审核通过后,可在操作功能界面选择此操作进行日志检索功能;

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


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


END


本文作者:王 帅(上海新炬中北团队)

本文来源:“IT那活儿”公众号

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

评论