首页 > 代码库 > 开发脚本自动部署及监控

开发脚本自动部署及监控


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

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

#!/bin/sh ngxStatus=`ps aux | grep -v grep |grep -c nginx` function ngxProxyInstall() {if [ -e /usr/sbin/nginx ];
  then echo "nginx already installed" exit 111else yum install epel-release -y -q yum install gcc-* glibc-* openssl openssl-devel pcre pcre-devel zlib zlib-devel -y -q yum install nginx -y -q echo "install nginx successful"fi
if [ -f /etc/nginx/nginx.conf ];
  then /bin/cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak sed -ri ‘/^http/a\\t upstream luchuangao { \n\t server 192.168.126.132 weight=3;\n\t server 192.168.126.133;\n\t server 192.168.126.134;\n\t }‘ /etc/nginx/nginx.conf sed -ri ‘/^ *location \/ \{/a\\t\t proxy_pass http://luchuangao;‘ /etc/nginx/nginx.conf echo "Configuration successful"fiif [ $ngxStatus -lt 2 ];
  then systemctl start nginx echo "Start nginx successful"fi}function nfsInstall() {if [ -e /usr/sbin/rpcinfo ];then echo "nfs already installed" exit 222else yum install rpcbind nfs-utils -y -q echo "install NFS successful"fiif [ ! -d /share ];
  then mkdir -p /share chmod -R o+w /sharefiecho ‘/share 192.168.126.0/24(rw,sync,fsid=0)‘ > /etc/exportssystemctl enable rpcbind.servicesystemctl enable nfs-server.service
systemctl start rpcbind.servicesystemctl start nfs-server.serviceecho "Start NFS successful"} ngxProxyInstallnfsInstall

  

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

#poxy上安装nginx代理,nfs客户端,脚本如下[root@proxy mnt]# cat install_nginx.sh#!/bin/bash#insatll nginx proxy  IP=`ifconfig | awk -F" " ‘/inet/{print $2}‘ | head -1`  #insyall nginx proxyfunction install_nginx() {yum remove nginx -yyum install nginx -ytouch /etc/nginx/conf.d/proxy.confcat > /etc/nginx/conf.d/proxy.conf <<EOF    upstream web {        server 192.168.16.54;        server 192.168.16.55;    }        server {        listen 80;        server_name $IP;        location / {            proxy_pass http://web;        }    }EOFsystemctl start nginx} #install nfs serverfunction install_nfs_server() {yum install rpcbind nfs-utils -y[ -d /share ] || mkdir  /share && chmod o+w /shareecho "/share 192.168.16.128/24(rw,sync,fsid=0)" > /etc/exportssystemctl start rpcbind.servicesystemctl start nfs-server.service}while :do    read -p "please choice your install server{nginx|nfs}: " server    if [ $server = "nginx" ]    then        install_nginx    elif [ $server = "nfs" ]    then        install_nfs_server    else        exit    fidone  [root@python_web01 mnt]# cat install_nginx.sh#!/bin/bash#insatll nginx proxy  IP=`ifconfig | awk -F" " ‘/inet/{print $2}‘ | head -1`  #insyall nginx proxyfunction install_nginx() {yum install nginx -yecho "python_web01" >/usr/share/nginx/html/index.htmlsystemctl start nginx} #install nfs serverfunction install_nfs_server() {yum install rpcbind nfs-utils -ysystemctl start rpcbind.servicesystemctl start nfs-server.servicemount -t nfs 192.168.16.128:/share /usr/share/nginx/html/}while :do    read -p "please choice your install server{nginx|nfs}: " server    if [ $server = "nginx" ]    then        install_nginx    elif [ $server = "nfs" ]    then        install_nfs_server    else        exit    fidone

  

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

步骤一:准备发送邮件的工具#!/usr/bin/python# -*- coding: UTF-8 -*-import sysimport smtplibimport email.mime.multipartimport 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\n%s‘ %(‘\n‘.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/mail并chmod+x /usr/bin/mail步骤三:然后新建监控脚本servermonitor.sh#!/bin/bashcpu_limit=0 #cpu使用超过90%则报警,此处我们为了得到报警邮件的实验效果,直接设置成0mem_limit=0 #内存使用超过90%则报警,同上disk=‘/dev/sda1‘ #需要监控的磁盘名disk_inode_limit=0 #磁盘inode使用超过90%则报警,同上disk_space_limit=0 #磁盘空间使用超过90%则报警,同上function monitor_cpu(){    cpu_free=`vmstat 1 5 |awk ‘NR>=3{x = x + $15} END {print x/5}‘ |awk -F. ‘{print $1}‘`    cpu_use=$((100-cpu_free))    if [ $cpu_use -gt $cpu_limit ]        then            msg="TIME:$(date +%F_%T)                 HOSTNAME:$(hostname)                 IPADDR:$(ifconfig |awk ‘NR==2{print $2}‘)                 MSG:CPU usage exceeds the limit,current value is ${cpu_use}%"            echo $msg            /usr/bin/mail $msg    fi}function monitor_mem(){    mem_total=`free |awk ‘NR==2{print $2}‘`    mem_use=`free |awk ‘NR==2{print $3}‘`    mem_per=`echo "scale=2;$mem_use/$mem_total" |bc -l|cut -d. -f2`    if [ $mem_per -gt $mem_limit ]        then            msg="TIME:$(date +%F_%T)                 HOSTNAME:$(hostname)                 IPADDR:$(ifconfig |awk ‘NR==2{print $2}‘)                 MSG:Memory usage exceeds the limit,current value is ${mem_per}%"            echo $msg            /usr/bin/mail $msg    fi}function monitor_disk_inode(){    inode_use=`df -i $disk |awk ‘NR==2{print $5}‘ |cut -d% -f1`    if [ $inode_use -gt $disk_inode_limit ]        then            msg="TIME:$(date +%F_%T)                 HOSTNAME:$(hostname)                 IPADDR:$(ifconfig |awk ‘NR==2{print $2}‘)                 MSG:Disk inode usage exceeds the limit,current value is ${inode_use}%"            echo $msg            /usr/bin/mail $msg    fi}function monitor_disk_space(){    space_use=`df $disk |awk ‘NR==2{print $5}‘|cut -d% -f1`    if [ $space_use -gt $disk_space_limit ]        then            msg="TIME:$(date +%F_%T)                 HOSTNAME:$(hostname)                 IPADDR:$(ifconfig |awk ‘NR==2{print $2}‘)                 MSG:Disk space usage exceeds the limit,current value is ${space_use}%"            echo $msg            /usr/bin/mail $msg    fi}monitor_cpu &>> /tmp/monitor.logmonitor_mem &>> /tmp/monitor.logmonitor_disk_inode &>> /tmp/monitor.logmonitor_disk_space &>> /tmp/monitor.log步骤四:编写计划任务* * * * * /root/servermonitor.sh

  

开发脚本自动部署及监控