博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本
阅读量:5272 次
发布时间:2019-06-14

本文共 5330 字,大约阅读时间需要 17 分钟。

开发脚本自动部署及监控

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

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

#!/bin/bashngxStatus=`ps -aux |grep -v grep |grep -c nginx`function ngxProxyInstall(){if [ -e /usr/sbin/nginx ];    then        echo 'nginx already installed'p        exit 0000else        yum clean all        yum install epel-release -y        yum install nginx -y        echo 'install nginx successful'fiif [ -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 { \n\t server 192.168.145.135 weight=3;             \n\t server 192.168.145.137;\n\t server 192.168.145.136;\n\t }' /etc/nginx/nginx.conf        sed -ri '/^ *location \/ \{/a\\t\t proxy_pass http:\/\/michael;' /etc/nginx/nginx.conf        echo "welcome to beijing" >/usr/share/nginx/html/index.html        echo 'Configuration successful'fiif [ $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 0000else        yum clean all        yum install rpcbind nfs-utils -y        echo 'install NFS successful'fiif [ -z /etc/exports ];    then        echo '/share 192.168.145.0/24(rw,sync,fsid=0)' > /etc/exports        echo 'deploy Exports successful'fimkdir -p /sharechmod -R o+w /sharemount -t nfs 192.168.145.130:/share /usr/share/nginx/htmlsystemctl enable nfs-server.servicesystemctl enable rpcbind.servicesystemctl start rpcbind.servicesystemctl start nfs-server.service}ngxProxyInstallnfsInstall

  

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

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

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

第一步:

#!/usr/bin/python# -*- coding: UTF-8 -*-import sysimport smtplibimport email.mime.multipartimport email.mime.textserver = '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/my_mail并chmod+x /usr/bin/my_mail 

第三步:

#!/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        echo "bc install successful"fiif [ $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 $msgfi}ngxMonitor  &>>/tmp/monitor.lognfsMonitor  &>>/tmp/monitor.logmemMonitor  &>>/tmp/monitor.log

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

* * * * * /shell/sysCheck.sh

  

 

转载于:https://www.cnblogs.com/Michael--chen/p/6611789.html

你可能感兴趣的文章
Struts框架----进度1
查看>>
Round B APAC Test 2017
查看>>
MySQL 字符编码问题详细解释
查看>>
Ubuntu下面安装eclipse for c++
查看>>
Windows 2003全面优化
查看>>
格而知之2:UIView的autoresizingMask属性探究
查看>>
我的Hook学习笔记
查看>>
js中的try/catch
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
整理推荐的CSS属性书写顺序
查看>>
css & input type & search icon
查看>>
Octotree Chrome安装与使用方法
查看>>
趣谈Java变量的可见性问题
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
ssm框架之将数据库的数据导入导出为excel文件
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
验证组件FluentValidation的使用示例
查看>>
0320-学习进度条
查看>>
解决windows系统的oracle数据库不能启动ora-00119和ora-00130的问题
查看>>
ip相关问题解答
查看>>