当前位置: 首页 > 编程日记 > 正文

开发脚本自动部署及监控

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

要求:

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

#!/bin/shngxStatus=`ps aux | grep -v grep |grep -c nginx`function ngxProxyInstall() {
if [ -e /usr/sbin/nginx ];thenecho "nginx already installed"exit 110
elseyum install epel-release -y -qyum install gcc-* glibc-* openssl openssl-devel pcre pcre-devel zlib zlib-devel -y -qyum install nginx -y -qecho "install nginx successful"
fi
if [ -f /etc/nginx/nginx.conf ];then/bin/cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.baksed -ri '/^http/a\\t upstream luchuangao { \n\t server 192.168.152.135 weight=3;\n\t server 192.168.152.136;\n\t server 192.168.152.137;\n\t }' /etc/nginx/nginx.confsed -ri '/^ *location \/ \{/a\\t\t proxy_pass http://luchuangao;' /etc/nginx/nginx.confecho "Configuration successful"
fi
if [ $ngxStatus -lt 2 ];thensystemctl start nginxecho "Start nginx successful"
fi
}function nfsInstall() {
if [ -e /usr/sbin/rpcinfo ];thenecho "nfs already installed"exit 111
elseyum install rpcbind nfs-utils -y -qecho "install NFS successful"
fiif [ ! -d /share ];thenmkdir -p /sharechmod -R o+w /share
fi
echo '/share 192.168.152.0/24(rw,sync,fsid=0)' > /etc/exports
systemctl enable rpcbind.service
systemctl enable nfs-server.service
systemctl start rpcbind.service
systemctl start nfs-server.service
echo "Start NFS successful"
}ngxProxyInstall
nfsInstall

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

#!/bin/shngxStatus=`ps aux | grep -v grep |grep -c nginx`
ipAddress="192.168.152.134"function ngxWebInstall(){
if [ -e /usr/sbin/nginx ];thenecho "nginx already installed"exit 110
else#yum install gcc-* glibc-* openssl openssl-devel pcre pcre-devel zlib zlib-devel -y -qyum install nginx -y -qecho "install nginx successful"
fi
if [ -f /etc/nginx/nginx.conf ];then/bin/cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.baksed  -ri '/^ *location \/ \{/a\\t\t root /data/www/html;\n\t\t index index.html;' /etc/nginx/nginx.confmkdir -p /data/www/htmlecho `hostname` > /data/www/html/index.htmlecho "Configuration successful"
fi
if [ $ngxStatus -lt 2 ];thensystemctl start nginxecho "Start nginx successful"
fi
}function nfsInstall(){
if [ ! -e /usr/sbin/rpcinfo ];thenyum install rpcbind nfs-utils -y -qecho "install NFS successful"
fi
systemctl enable rpcbind.service
systemctl enable nfs-server.service
systemctl start rpcbind.service
systemctl start nfs-server.service
mount -t nfs $ipAddress:/share /data/www/html/
echo "welcome luchuangao" > /data/www/html/test.html
}ngxWebInstall
nfsInstall

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

步骤一:准备发送邮件的工具

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
import smtplib
import email.mime.multipart
import 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)

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

步骤三:然后新建监控脚本sysCheck.sh

#!/bin/shfunction ngxMonitor(){  #监控nginx服务
ps aux | grep nginx| grep -v grep &>/dev/null 
if [ $? -ne 0 ];thenmsg="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 $msgsystemctl restart nginx
fi
}function nfsMonitor(){ #监控nfs服务
ps aux | grep nfs| grep -v grep &>/dev/null
if [ $? -ne 0 ];thenmsg="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 $msgsystemctl 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 ];thenyum install bc -y -qecho "bc install successful"
fi
if (( $mem_per > 10 )); thenmsg="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
}function diskMonitor(){  #监控磁盘
space_use=`df $disk |awk 'NR==2{print $5}'|cut -d% -f1`if [ $space_use -gt 80 ];thenmsg="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 $msg
fi
}ngxMonitor  &>>/tmp/monitor.log
nfsMonitor  &>>/tmp/monitor.log
memMonitor  &>>/tmp/monitor.log
diskMonitor &>>/tmp/monitor.log

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

* * * * * /shell/sysCheck.sh 

参考链接:http://www.cnblogs.com/linhaifeng/p/6602149.html

参考链接:http://www.cnblogs.com/linhaifeng/articles/6045600.html#_label21

转载于:https://www.cnblogs.com/luchuangao/p/6612304.html

相关文章:

服务器日志显示乱码,CentosOS 6.5 服务器 控制台输出中文乱码,日志打印中文也乱码...

系统是Centos 6.5使用localeLANGen_US.UTF-8LC_CTYPE"en_US.UTF-8"LC_NUMERICzh_CN.UTF-8LC_TIME"en_US.UTF-8"LC_COLLATE"en_US.UTF-8"LC_MONETARYzh_CN.UTF-8LC_MESSAGES"en_US.UTF-8"LC_PAPERzh_CN.UTF-8LC_NAMEzh_CN.UTF-8LC_ADDR…

go linux 源码编译环境,Linux 源码安装 GO 环境

Go 安装1.4以上的版本出现的问题个人在安装 go1.9.2 的时候,一直 提醒的错误是:Building Go bootstrap tool.cmd/distERROR: Cannot find /root/go1.4/bin/go.Set $GOROOT_BOOTSTRAP to a working Go tree > Go 1.4.步骤如果之前已经安装过老版本的 G…

django html数据库连接,Django数据库连接的问题

多线程运行项目。有N个工作线程从DB中获取jobs,并把结果写回DB。项目运行一段时间后,发现数据库连接耗尽了,幸好内存大,然后一直往上调,最后连接数都上8000多。耗尽连接数的时候,postgresql会出现类似这样的…

Java Web之XML基础

有好几天没有更新博客了,前段时间因为要开学了,需要凑足学费才能继续在学校学习,耽误了几天,这两天需要补充前面需要学习的一些知识点了。今天就开始进入JavaWeb阶段吧,这段时间我们需要了解一些前端的知识&#xff0c…

ios NSLayoutConstraint

为了让我们的应用在不同尺寸的屏幕下都能 “正常”的表示,我们尽量不要把数据写死。大多数可视元素都是一个矩形区域,当然这个矩形区域有坐标的,我们有了这个区域坐标就能确定可视元素的现实位置了。但是iphone5和以前的屏幕不一样了&#xf…

分布式技术追踪 2017年第十二期

分布式系统实践 1. 深入Facebook图数据库系统(TAO)系列 http://dwz.cn/5zQEdo http://dwz.cn/5zQEBK http://dwz.cn/5zQEPV 摘要: TAO是Facebook 的分布式图数据库, 存储了Facebook所有的社交关系数据, TAO的QPS超过30亿, 作者曾经在Facebook做过TAO相关…

linux 统计日志数量总,shell统计日志中时间段内匹配的数量的方法

shell统计日志中时间段内匹配的数量的方法,有需要的朋友可以参考下。假设日志文件mtasvr.log格式如下:T:24583088(04:02:06)[root:Info] 6KqowLDLAgC93DFIKrENAA.41S2:from,to, queuedT:122428336(13:36:51)[root:Info] 6KqowLAbAAByYzJIZGsOAA.2W:from,…

商品评论html,商品评论列表.html

提交取 消new Vue({el: #app,data: {fullLoad:,dialogVisible:false,jsonData:{"id":"","type":"edit","list":[{"type":"grid","icon":"icon-grid-","columns":[{"…

autolayout autoresizing

WWDC 2012 Session笔记——202, 228, 232 AutoLayout(自动布局)入门 这是博主的WWDC2012笔记系列中的一篇,完整的笔记列表可以参看这里。如果您是首次来到本站,也许您会有兴趣通过RSS,或者通过页面左侧的邮件订阅的方式订阅本站。 AutoLayout…

MongoDB安装和MongoChef可视化管理工具的使用

MongoDBWindows 用户向导:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/注意:最后一步时,左下角的勾勾要去掉,mongodb compass是图形化管理界面,下载它需要很久很久,还有可能一直…

angular轮播图

还是直接上代码比较好 <!doctype html><html lang"en"><head> <meta charset"UTF-8" /> <title>Document</title> <link rel"stylesheet" type"text/css" href"css/animate.min.css"…

linux 脚本的作用,shell export 作用

shell与export命令用户登录到Linux系统后&#xff0c;系统将启动一个用户shell。在这个shell中&#xff0c;可以使用shell命令或声明变量&#xff0c;也可以创建并运行shell脚本程序。运行shell脚本程序时&#xff0c;系统将创建一个子shell。此时&#xff0c;系统中将有两个sh…

标签选择器用于修改html元素默认的样式,html – 为什么CSS选择器与 sign(直接子)覆盖默认样式?...

问题不是子组合器(>)&#xff0c;它是color属性&#xff0c;它是可继承的。虽然颜色属性的初始值因浏览器而异&#xff0c;但继承是常见的。这意味着元素的文本颜色从父代继承。您在代码中看到这一点。相反&#xff0c;border属性是不可继承的。请注意&#xff0c;与文字颜色…

[hdu1828] Picture

帅哥美女们大家好&#xff01; 今天本蒟蒻补一篇题解&#xff01; 线段树维护扫描线求矩形周长并。 扫描线的话&#xff0c;跟求面积类似&#xff0c;这道题可以只扫一次&#xff0c;也可以x&#xff0c;y两个方向分别扫一次。 题目传送门 1 #include<cstdio>2 #include&…

洛谷 P2126 Mzc家中的男家丁

题目背景 &#xff4d;&#xff5a;&#xff43;与&#xff44;&#xff4a;&#xff4e;的…还没有众人皆知&#xff0c;所以我们要来宣传一下。 题目描述 &#xff4d;&#xff5a;&#xff43;家很有钱&#xff08;开玩笑&#xff09;&#xff0c;他家有&#xff4e;个男家丁…

linux如何查看内存最大的几个文件,详解Linux如何查看当前占用CPU或内存最多的几个进程...

命令ps -aux | sort -k4nr | head -N命令详解&#xff1a;1、head&#xff1a;-N可以指定显示的行数&#xff0c;默认显示10行。2、ps&#xff1a;参数a指代all――所有的进程&#xff0c;u指代userid――执行该进程的用户id&#xff0c;x指代显示所有程序&#xff0c;不以终端…

ios 真机调试

步骤&#xff1a; 一、真机调试所需材料说明二、进入申请界面三、添加App ID四、添加设备(Devices)五、添加证书(Certificates)六、添加描述文件(Provisioning Profiles)七、配置XCode 一、真机调试所需材料说明 在申请真机调试证书之前&#xff0c;先对苹果真机调试所需的文件…

html 表单内容怎么获取不到,jquery中formdate一直获取不到对象中的[0]的值 包括本身也是一个空的数据怎么办?...

jquery中formdate一直获取不到对象中的[0]的值 包括本身也是一个空的数据怎么办&#xff1f;再做一个前台的ajax方法 查网上用formdate方法上传。可是进了接口之后一直在控制台获取不到formdate的值包括formdate[0]的值也一样 接口应该是没有问题 因为用传统的表单submit提交也…

看雪CTF 2016_第八题分析

用exeinfo查看发现是x64程序&#xff0c;所以用平常的OD调试器是调试不到的&#xff0c;需要用x64的调试器 我这里是用x64dbug 这个调试器来进行调试分析 经过一步一步调试&#xff0c;发现程序调用RtlMoveMemory 这个api来进行获取我们输入的注册码 Rax的内存地址即为我们输入…

20169212 2016-2017-2 《网络攻防实践》第四周学习总结

20169212 2016-2017-2 《网络攻防实践》第四周学习总结 教材学习中的问题和解决过程 wireshark学习 主机&#xff1a;Kali ip&#xff1a;192.168.1.117 目标&#xff1a;www.bdwm.net 任务&#xff1a;捕获连接 www.bdwm.net的输入信息 利用wireshark可以清楚的看到发包的全过…

linux7挂载ntfs分区,刚安装centos7,请教大神如何挂载ntfs的分区

liangbenrang 于 2015-12-22 17:39:08发表:2、关于AS服务器Redhat5、6 CPU性能低问题&#xff0c;建议做如下调整&#xff1a;关于AS服务器Redhat5、6 CPU性能低问题&#xff0c;建议做如下调整&#xff1a;服务器BIOS设置(不同型号服务器设置方法不太一样)&#xff1a;cpu关闭…

UIViewController、UINavigationController与UITabBarController的整合使用

UINavigationController与UITabBarController是iOS开发中最常用的两种视图控制器&#xff0c;它们都属于UIViewController的子类&#xff0c;继承关系如下&#xff1a; interface UITabBarController : UIViewController <UITabBarDelegate, NSCoding> interface UINav…

小学生正确使用计算机,小学生做数学作业用计算器的做法正确吗?为什么?

用计算器做数学题是一种偷懒的做题方法&#xff0c;不知道现在的数学课本上还有没有计算机教学这一章节的内容&#xff0c;学习使用计算器也是学习内容之内的&#xff0c;但是计算器是用来解决那些较复杂的数字运算的&#xff0c;基本的四则运算还是不要用计算器&#xff0c;尽…

【php】 PHP 支持 9 种原始数据类型

PHP 支持 9 种原始数据类型。 四种标量类型&#xff1a; boolean&#xff08;布尔型&#xff09;integer&#xff08;整型&#xff09;float&#xff08;浮点型&#xff0c;也称作 double)string&#xff08;字符串&#xff09;三种复合类型&#xff1a; array&#xff08;数组…

linux安装vsftpt服务,centos安装vsftp服务.md

# 使用nginx和vsftp搭建图片服务器并使用Java上传图片到该图片服务器## 安装vsftp1、首先&#xff0c;安装vsftpdshellyum -y install vsftpd复制代码2、验证是否安装成功shellrpm -qa vsftpd复制代码3、查看vsftp相关配置文件shellll /etc/vsftpd/复制代码vsftpd.conf文件是主…

android support v4、v7、v13

android support v4、v7、v13的区别及作用和用法 1, Android Support V4, V7, V13是什么? 本质上就是三个java library。 2, 为什么要有support库? 如果在低版本Android平台上开发一个应用程序,而应用程序又想使用高版本才拥有的功能,就需要使用Support 3, 三个Support 库的…

SimpleInjector 简单使用

SimpleInjector 简单使用&#xff0c;未完待续转载于:https://www.cnblogs.com/aresyl/p/6627372.html

win设置计算机网络,Win10怎么修改网络类型,Win10网络类型怎么设置?

Win10怎么修改网络类型,Win10网络类型怎么设置?对某件事物越是了解的深入&#xff0c;越是能发现产品的猫腻!比如Win10!因为产品性能没升级多少&#xff0c;但是马甲换的却非常勤快!可能有些朋友会感觉&#xff0c;下面的内容似曾相识。下面的Win10怎么修改网络类型的内容&…

GIL+死锁与递归锁+信号量+event事件

GIL全局解释器锁: GIL本质就是一把互斥锁,相当于执行权限,每个进程内都会存在一把GIL,同一进程内的多个线程 必须抢到GIL之后才能使用Cpython解释器来执行自己的代码,即同一进程下的多个线程无法实现并行 但是可以实现并发 在Cpython解释器下,如果想实现并行可以开…

编程之法----面试和算法心得

第1章 字符串 1.1 字符串的旋转 输入一个英文句子&#xff0c;翻转句子中单词的顺序。要求单词内字符的顺序不变&#xff0c;句子中单词以空格符隔开。为简单起见&#xff0c;标点符号和普通字母一样处理。例如&#xff1a;若输入“I am a student.”&#xff0c;则输出“stude…