自动化运维吧 关注:32贴子:46
  • 3回复贴,共1

十年运维经验的老司机告诉你carry 500台服务器的正确姿势

只看楼主收藏回复

一般打中型公司的运维都是比较苦逼的存在,
痛点1:经常穿梭于蜘蛛网一样的机房中,那种几百台服务器齐声怒吼的恐怖声音有没有把你从梦中惊醒过,肉体上的痛苦已经使他们(包括我)痛苦不堪,
痛点2:还要面临服务器经常宕机,服务因为内存,硬盘,网络.......等等各种原因死掉
痛点3:使用服务器同事的冷眼,抱怨


1楼2018-03-23 15:29回复
    1、内存信息的读取。
    通过远程执行‘cat /proc/meminfo’可以获取内存相关信息。这里我只读取MemTotal和MemFree的信息。需要读取其他信息可以利用正则表达式匹配获取其他数据。例子把这两个信息输出到标准输出中,实际应用可以通过crontab定时执行脚本,把结果写入文件,可以给传给监控系统,当超越一定阀值的时候进行相应的处理


    2楼2018-03-26 21:52
    回复
      广告
      立即查看
      废话不说上代码
      import paramiko
      import re
      #设置主机列表
      host_list=({'ip':'192.168.98.130', 'port':22, 'username':'root', 'password':'123'},
      {'ip':'192.168.98.131', 'port':22, 'username':'root', 'password':'123'},)
      ssh = paramiko.SSHClient()
      # 设置为接受不在known_hosts 列表的主机可以进行ssh连接
      ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
      for host in host_list:
      ssh.connect(hostname=host['ip'], port=host['port'], username=host['username'], password=host['password'])
      print(host['ip'])
      stdin, stdout, stderr = ssh.exec_command('cat /proc/meminfo')
      str_out = stdout.read().decode()
      str_err = stderr.read().decode()
      if str_err != "":
      print(str_err)
      continue
      str_total = re.search('MemTotal:.*?\n', str_out).group()
      print(str_total)
      totalmem = re.search('\d+',str_total).group()
      str_free = re.search('MemFree:.*?\n', str_out).group()
      print(str_free)
      freemem = re.search('\d+',str_free).group()
      use = round(float(freemem)/float(totalmem), 2)
      print('当前内存使用率为:'+ str(use))
      ssh.close()


      3楼2018-03-27 21:50
      回复


        IP属地:广东5楼2019-11-21 15:32
        回复