• shell脚本


    开发脚本自动部署及监控

    1.编写脚本自动部署反向代理、web、nfs;

    要求: I、部署nginx反向代理三个web服务,调度算法使用加权轮询;

    #!/bin/bash
    
    ngxStatus=`ps -aux |grep -v grep |grep -c nginx`
    
    function ngxProxyInstall(){
    if [ -e /usr/sbin/nginx ];
        then
            echo 'nginx already installed'p
            exit 0000
    else
            yum clean all
            yum install epel-release -y
            yum install nginx -y
            echo 'install nginx successful'
    fi
    if [ -e /etc/nginx/nginx.conf ];
        then
            /usr/bin/cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
            sed -ri '/^http/a\t upstream michael { 
    	 server 192.168.145.135 weight=3;
    server 192.168.145.137; server 192.168.145.136; }' /etc/nginx/nginx.conf sed -ri '/^ *location / {/a\t proxy_pass http://michael;' /etc/nginx/nginx.conf echo "welcome to beijing" >/usr/share/nginx/html/index.html echo 'Configuration successful' fi if [ $ngxStatus -lt 2 ]; then systemctl start nginx echo 'start nginx successful' fi } function nfsInstall(){ if [ -e /usr/sbin/nfs]; then echo'NFS already installed' exit 0000 else yum clean all yum install rpcbind nfs-utils -y echo 'install NFS successful' fi if [ -z /etc/exports ]; then echo '/share 192.168.145.0/24(rw,sync,fsid=0)' > /etc/exports echo 'deploy Exports successful' fi mkdir -p /share chmod -R o+w /share mount -t nfs 192.168.145.130:/share /usr/share/nginx/html systemctl enable nfs-server.service systemctl enable rpcbind.service systemctl start rpcbind.service systemctl start nfs-server.service } ngxProxyInstall nfsInstall

      

             II、所有web服务使用共享存储nfs,保证所有web都对其有读写权限,保证数据一致性

    #!/bin/bash
    ngxStatus=`ps -aux |grep -v grep |grep -c nginx`
    
    function ngxWebInstall(){
    if [ -e /usr/sbin/nginx ];
        then
            echo 'nginx already installed'p
            exit 0000
    else
            yum clean all
            yum install epel-release -y
            yum install nginx -y
            echo 'install nginx successful'
    fi
    if [ -e /etc/nginx/nginx.conf ];
        then
            /usr/bin/cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
            sed -ri '/^ *location / {/a\t	 root /usr/share/nginx/html;' /etc/nginx/nginx.conf
            echo "welcome web" >/usr/share/nginx/html/index.html
            echo 'Configuration successful'
    fi
    if [ $ngxStatus -lt 2 ];
     then
            systemctl start nginx
            echo 'start nginx successful'
    fi
    }
    
    function nfsWebInstall(){
    if [ -e /usr/sbin/nfs];
        then
            echo'NFS already installed'
            exit 0000
    else
            yum clean all
            yum install rpcbind nfs-utils -y
            echo 'install NFS successful'
    fi
    
    if [ -z /etc/exports ];
        then
            echo '/share 192.168.145.0/24(rw,sync,fsid=0)' > /etc/exports
            echo 'deploy Exports successful'
    fi
    
    mount -t nfs 192.168.145.130:/share /usr/share/nginx/html
    
    systemctl enable nfs-server.service
    systemctl enable rpcbind.service
    systemctl start rpcbind.service
    systemctl start nfs-server.service
    
    }
    
    ngxWebInstall
    nfsWebInstal

    2.编写监控脚本,监控集群内所有服务存活状态,内存剩余率检测,异常则发送报警邮件

    第一步:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import sys
    import smtplib
    import email.mime.multipart
    import email.mime.text
    
    server = 'smtp.163.com'
    port = '25'
    
    def sendmail(server,port,user,pwd,msg):
        smtp = smtplib.SMTP()
        smtp.connect(server,port)
        smtp.login(user, pwd)
        smtp.sendmail(msg['from'], msg['to'], msg.as_string())
        smtp.quit()
        print('邮件发送成功email has send out !')
    
    
    if __name__ == '__main__':
        msg = email.mime.multipart.MIMEMultipart()
        msg['Subject'] = '你是风儿我是沙,缠缠绵绵来你家'
        msg['From'] = 'python4_mail@163.com'
        msg['To'] = 'python4_recvmail@163.com'
        user = 'python4_mail'
        pwd = 'sbalex3714'
        content='%s
    %s' %('
    '.join(sys.argv[1:4]),' '.join(sys.argv[4:])) #格式处理,
    专门针对我们的邮件格式
    
        txt = email.mime.text.MIMEText(content, _charset='utf-8')
        msg.attach(txt)
    
        sendmail(server,port,user,pwd,msg)
    

    第二步:将上述文件内容拷贝到/usr/bin/my_mail并chmod+x /usr/bin/my_mail 

    第三步:

    #!/bin/sh
    
    
    function ngxMonitor(){  #监控nginx服务
    ps aux | grep nginx| grep -v grep &>/dev/null
    if [ $? -ne 0 ];
        then
            msg="TIME:$(date +%F_%T)
                HOSTNAME:$(hostname)
                IPADDR:$(/usr/sbin/ifconfig |awk 'NR==2{print $2}')
                MSG:Nginx program is crash, Waiting to restart"
            echo '$msg'
            /usr/bin/my_mail $msg
            systemctl restart nginx
    fi
    }
    
    function nfsMonitor(){ #监控nfs服务
    ps aux | grep nfs| grep -v grep &>/dev/null
    if [ $? -ne 0 ];
        then
            msg="TIME:$(date +%F_%T)
                HOSTNAME:$(hostname)
                IPADDR:$(/usr/sbin/ifconfig |awk 'NR==2{print $2}')
                MSG:NFS program is crash, Waiting to restart"
            echo '$msg'
            /usr/bin/my_mail $msg
            systemctl restart nginx
    fi
    }
    
    function memMonitor(){  #监控内存
    mem_use=`free | awk 'NR==2{print $3}'`
    mem_total=`free | awk 'NR==2{print $2}'`
    mem_per=`echo "scale=2;$mem_use/$mem_total"|bc -l |cut -d. -f2`
    
    if [ ! -e /usr/bin/bc ];
        then
            yum install bc -y
            echo "bc install successful"
    fi
    if [ $mem_per -gt 80 ];
        then
            msg="TIME:$(date +%F_%T)
                HOSTNAME:$(hostname)
                IPADDR:$(/usr/sbin/ifconfig |awk 'NR==2{print $2}')
                MSG:Memory usage exceeds the limit,current value is ${mem_per}%"
                echo $msg
                /usr/bin/my_mail $msg
    fi
    }
    
    
    ngxMonitor  &>>/tmp/monitor.log
    nfsMonitor  &>>/tmp/monitor.log
    memMonitor  &>>/tmp/monitor.log

    3.编写计划任务,定时运行监控脚本,完成监控操作

    * * * * * /shell/sysCheck.sh
    

      

  • 相关阅读:
    就数据平台建设,80%的500强企业都有一个共性
    就数据平台建设,80%的500强企业都有一个共性
    8.2.1.8 IS NULL Optimization NULL 优化:
    8.2.1.7 Use of Index Extensions 使用索引扩展
    8.2.1.5 Engine Condition Pushdown Optimization 引擎条件下推优化
    8.2.1.5 Engine Condition Pushdown Optimization 引擎条件下推优化
    java解析XML几种方式小结
    rsyslog imfile 模块说明
    rsyslog 解决日志截断不读取问题
    解决rsyslog 断电或者被kill 重发问题
  • 原文地址:https://www.cnblogs.com/Michael--chen/p/6611789.html
Copyright © 2020-2023  润新知