我爱小虾 发表于 2017-12-23 20:11:31

自动化部署nginx负载均衡及监控短信报警

  题:
  开发脚本自动部署及监控
  1.编写脚本自动部署反向代理、web、nfs;
  要求:
  I、部署nginx反向代理三个web服务,调度算法使用加权轮询;
  II、所有web服务使用共享存储nfs,保证所有web都对其有读写权限,保证数据一致性;
  2.编写监控脚本,监控集群内所有服务存活状态,内存、磁盘剩余率检测,异常则发送报警邮件
  3.编写计划任务,定时运行监控脚本,完成监控操作
  ------------------------------------------------------
  1、安装nginx及nfs服务端
  #!/bin/bash
#insatll nginx proxyIP=`ifconfig |awk -F" " 'NR==2{print $2}'`#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 {        ip_hash;         server 192.168.17.126;      server 192.168.17.127;    }      server {        ip_hash;          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.17.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    fidone2、安装客户端nginx-nfs# cat install_nginx.sh#!/bin/bash#insatll nginx   IP=`ifconfig |awk -F" " 'NR==2{print $2}'`#insyall nginx proxyfunction install_nginx() {yum install nginx -yecho "welcome to 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.17.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    fidone3、编写监控脚本,监控集群内所有服务存活状态,内存、磁盘剩余率检测,异常则发送报警邮件#!/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),' '.join(sys.argv)) #格式处理,专门针对我们的邮件格式   txt = email.mime.text.MIMEText(content, _charset='utf-8')    msg.attach(txt)   sendmail(server,port,user,pwd,msg)2)将监控脚本重命名为mail,拷贝到/usr/bin/mail.赋x权限3)定时监控脚本#!/bin/shfunction ngxMonitor(){#监控nginx服务ps aux | grep nginx| grep -v grep &>/dev/nullif [ $? -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 nginxfi}function nfsMonitor(){ #监控nfs服务ps aux | grep nfs| grep -v grep &>/dev/nullif [ $? -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 nginxfi}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 -q    echo "bc install successful"fiif (( $mem_per > 10 )); 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 $msgfi}function diskMonitor(){#监控磁盘space_use=`df $disk |awk 'NR==2{print $5}'|cut -d% -f1`if [ $space_use -gt 80 ];then    msg="TIME:$(date +%F_%T)         HOSTNAME:$(hostname)         IPADDR:$(/usr/sbin/ifconfig |awk 'NR==2{print $2}')         MSG:Disk space usage exceeds the limit,current value is ${space_use}%"    echo $msg    /usr/bin/my_mail $msgfi}    ngxMonitor&>>/tmp/monitor.lognfsMonitor&>>/tmp/monitor.logmemMonitor&>>/tmp/monitor.logdiskMonitor &>>/tmp/monitor.log 4、计划任务,每天早上9点执行00 09 * * * /shell/sysCheck.sh分 时 日 月 周
页: [1]
查看完整版本: 自动化部署nginx负载均衡及监控短信报警