每周闲谈-上线前系统检查
项目名称 |
xxx系统 |
||
网址 |
xxx系统:某 url 地址 |
||
公有云管理账号 |
xxx账号 xxx密码 |
||
检查分类 |
检查项 |
检查要点 |
结果(☑|🗵) |
服务器硬件 |
cpu核数、内存、磁盘 |
(1)x 核 x GB, x G硬盘 (xxx服务器:部署xxx) 。。。 |
☑ |
数据库硬件 |
mysql版本 |
(1)RDS规格:x 核 xGB (2)数据库类型/版本:MySQL xxx (3)公网流量:按实际使用流量每日扣费 (4)系列:高可用版 (5)存储空间:xxx GB (6)最大连接数:xxx 。。。 |
☑ |
oss资源包 |
对象存储包 下行流量包 |
用途:本地快照备份、程序使用
用途:异地快照备份
|
☑ |
安全产品 |
WAF SSL证书 云安全中心 数据库审计(SQL洞察) 日志服务 云防火墙 |
|
☑ |
网络 |
共享流量 xxx M,能上外网 |
|
☑ |
运行环境 |
nginx入口转发、前端 |
|
☑ |
java应用 |
(1)版本: (2)xxx后端 |
☑ |
|
tomcat应用 |
(1)版本: (2)xxx后端 |
☑ |
|
mongo中间件 |
(1)版本:3.4.7 (2)业务系统mongo |
☑ |
|
jenkins发布 |
是否配置持续发布 |
☑ |
|
云控制台环境 |
账号余额 |
是否充足 |
☑ |
共享流量包 |
是否充足 |
☑ |
|
备份 |
数据库备份 |
每天备份 Mysql、Mongo |
☑ |
系统备份 |
每天备份:系统快照,保留最近7天快照数据 |
☑ |
|
监控 |
数据监控 |
是否有监控 |
☑ |
服务器、数据库资源监控 |
是否有监控 |
☑ |
|
服务器入口带宽监控 |
是否有监控 |
☑ |
|
服务存活监控 |
是否有监控 xxx后端、mongo存活 |
☑ |
二、具体检查项
这两天写下来,我觉得自己可以去出书了 = =,该补的脚本都补了,应该算是,比较齐全吧。
![](https://img2022.cnblogs.com/blog/520218/202208/520218-20220830214551929-568451354.png)
![](https://img2022.cnblogs.com/blog/520218/202208/520218-20220830214655680-1573738145.png)
1、硬件(对应截图第一到第四点)
这种不用说了,贴设备信息表即可:设备、地域、配置、系统信息
买了什么配置,用途,连接信息等等
2、网络(对应截图的第五点)
(1)服务器网络配置,有些服务器是直接绑定弹性公网ip,阿里云专业名词叫:弹性;有些是购买服务器时已经捆绑好,阿里云专业名词叫:公网。分别写上对应的流量或者带宽即可。
(2)网络带宽监控,我们这个系统可以直接在阿里云控制台设置,譬如设置报警规则:
(实例维度)流入流量(Critical) 连续 5 个周期平均值>=180 Mbytes 就通知
这个是我花时间最多的地方,也是啪脚本啪得最多的地方。因为每台服务器跑的服务基本都不相同的,除了系统备份(系统日志+用户历史命令)一样,其他相当于量身定做。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #!/bin/bash 2 3 ####################################################### 4 # $Name: check_xxx_alive.sh 5 # $Version: v1.0 6 # $Function: xx后端jar包存活监控:{项目jar包名字}.jar 7 ####################################################### 8 9 export JAVA_HOME=/usr/local/java/jdk1.8 #使用的JDK 10 JAR_HOME=/home/{系统普通用户名}/xxx-pro 11 JAR_DATA_HOME=${JAR_HOME}/jar_data #JAR包的运行目录 12 JAR_LOG_HOME=${JAR_HOME}/logs #JAR包的日志文件 13 14 PHONE="加一的手机号" 15 #钉钉机器人token 16 TOKEN="https://oapi.dingtalk.com/robot/send?access_token=xxx" 17 18 DATE=`date +%F_%T` 19 restartfile=${JAR_LOG_HOME}/restart.log #重启日志记录文件 20 21 _JUDGE_EXISTS (){ 22 JUDGE_NAME=$1 #判断jar服务是否运行 23 #去掉正常发布(发布脚本.sh),去掉有人在实时看日志(tail) 24 status_JUDGE_NAME=`ps -ef | grep -v 发布脚本.sh | grep java | grep "${JUDGE_NAME}" | grep -v tail | grep -v grep |wc -l` 25 ## 1、第一次检查:没有运行 26 if [ ${status_JUDGE_NAME} -eq 0 ]; then 27 echo "$DATE ------ restart to run $JUDGE_NAME" >> $restartfile 28 29 cd ${JAR_DATA_HOME} 30 #启动jar服务 31 nohup /usr/local/java/jdk1.8/bin/java -jar {项目jar包名字}.jar >> ${JAR_LOG_HOME}/out_{项目jar包名字}.log 2>&1 & 32 sleep 6 33 34 status1_JUDGE_NAME=`ps -ef | grep -v 发布脚本.sh | grep java | grep "${JUDGE_NAME}" | grep -v tail | grep -v grep |wc -l` 35 36 #如果重启不了,发钉钉通知,手动重启 37 38 if [ ${status1_JUDGE_NAME} -eq 0 ]; then 39 curl -H "Content-Type:application/json" -X POST --data '{"msgtype":"text","text":{"content":"当前时间:'$DATE' xxx后端正式版: ' 40 $JUDGE_NAME' 停止运行,请检查! "} , "at": {"atMobiles": ['${PHONE}'], "isAtAll":false}}' ${TOKEN} > /dev/null 2>&1 41 fi 42 fi 43 } 44 45 _JUDGE_EXISTS jar服务
后来我意识到,如果每台服务器都要我监控进程,岂不是要写很多代码?
于是,我就看看阿里云控制台是否能实现这个功能,有进程监控,进程监控等价于服务存活,我目前测试一个mongo存活,好不好用暂时未知
![](https://img2022.cnblogs.com/blog/520218/202208/520218-20220830221532463-1412088795.png)
(b)然后加监控规则
【云监控】 ——》 【华南1(深圳)】——》【主机监控】 ——》找到被监控服务器,选择【报警规则】
这个代表进程数少于1则报警,等价于进程挂了就报警。
![](https://img2022.cnblogs.com/blog/520218/202208/520218-20220830221627446-1676141591.png)
完美,洗洗睡~~