每周闲谈-上线前系统检查

每周闲谈-上线前系统检查
  最近,我们系统正式要上线啦,时间定在9月1日。从周一开始,我就开始忙着检查服务器、云控制台配置、监控各种。
  老实说,这个系统从投标、写标书、采购硬件(跟阿里、电信修改N多次报价方案),部署,到现在的系统上线,持续了接近一年半吧,花了我们公司很多人的心血。我呢,好像老母亲一样见证一个孩子的成长:从无到有。
  先贴一个上线前配置检查总表,应该对大家挺有用的(去掉敏感信息)
一、检查总表
 

项目名称

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资源包

对象存储包

下行流量包

  1. 对象存储包规格:xT/x年(华南1 深圳)

用途:本地快照备份、程序使用

  1. 对象存储包规格:2T/1年(中国大陆通用)

用途:异地快照备份

  1. 下行流量包规格:1T/1年(华南1 深圳)

    ☑

安全产品

WAF

SSL证书

云安全中心

数据库审计(SQL洞察)

日志服务

云防火墙

  1. WAF:xx版,防护带宽xxx M bps

  2. SSL证书:xxx 证书

  3. 云安全中心:态势感知

  4. 日志服务:按量付费

  5. 云防火墙:按量付费

    ☑

网络

共享流量 xxx M,能上外网

  1. 共享流量xxx M(xxx入口)

    ☑



运行环境

nginx入口转发、前端


  1. 版本:1.16.0

  2. 访问日志配置

  3. 备份:nginx访问日志、系统日志、用户命令历史

  4. xxx前端

    ☑

java应用

(1)版本:

(2)xxx后端

    ☑

tomcat应用

(1)版本:

(2)xxx后端

    ☑

mongo中间件

(1)版本:3.4.7

(2)业务系统mongo

    ☑

jenkins发布

是否配置持续发布

    ☑

云控制台环境

账号余额

是否充足

    ☑

共享流量包

是否充足

    ☑

备份

数据库备份

每天备份

Mysql、Mongo

    ☑

系统备份

每天备份:系统快照,保留最近7天快照数据

    ☑

监控

数据监控

是否有监控

    ☑

服务器、数据库资源监控

是否有监控

    ☑

服务器入口带宽监控

是否有监控

    ☑

服务存活监控

是否有监控

xxx后端、mongo存活

    ☑



二、具体检查项
  这两天写下来,我觉得自己可以去出书了 = =,该补的脚本都补了,应该算是,比较齐全吧。
       

1、硬件(对应截图第一到第四点)

  这种不用说了,贴设备信息表即可:设备、地域、配置、系统信息

  买了什么配置,用途,连接信息等等

 

2、网络(对应截图的第五点)

(1)服务器网络配置,有些服务器是直接绑定弹性公网ip,阿里云专业名词叫:弹性;有些是购买服务器时已经捆绑好,阿里云专业名词叫:公网。分别写上对应的流量或者带宽即可。

(2)网络带宽监控,我们这个系统可以直接在阿里云控制台设置,譬如设置报警规则:

(实例维度)流入流量(Critical) 连续 5 个周期平均值>=180 Mbytes 就通知
 
3、运行环境(对应截图的第六点)
  这个是我花时间最多的地方,也是啪脚本啪得最多的地方。因为每台服务器跑的服务基本都不相同的,除了系统备份(系统日志+用户历史命令)一样,其他相当于量身定做。
(1)入口服务器
  nginx配置:访问日志配置、日志切割备份
  梳理xxx项目nginx前端目录 
 
(2)应用服务器(后端服务器)
  java应用:运行目录、监听端口、备份目录、日志目录及日志切割
  tomcat应用:tomcat安装目录、监听端口、配置文件、代码目录、日志目录及日志切割
 
(3)中间件服务器(这里主要是mongo)
    mongo梳理:安装目录、监听端口、配置文件、数据目录、日志目录、mongo每天备份
  因为考虑到这台中间件服务器的磁盘IO比较好,mysql备份也放在这里了
  数据库备份(mongo和mysql)包括:本机每天备份、oss每天备份、月备份。注意日备份和月备份的保留天数策略
 
4、监控(对应截图的第七点)
(1)数据监控
  一般是挂在定时任务的python脚本,主要是从mysql数据库查的sql 
 
(2)服务器、数据库资源监控
  阿里云控制台都可以做,非常强大
  服务器:cpu使用率、cpu负载、cpu消耗百分比、内存使用率、磁盘使用率
  数据库:cpu使用率、内存使用率、磁盘使用率、连接数使用率、IOPS使用率
 
(3)服务存活监控
  我这里写了一个后端服务的jar包存活脚本,贴一下,比较简单
 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),去掉有人在实时看日志(tail24     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服务
View Code

  后来我意识到,如果每台服务器都要我监控进程,岂不是要写很多代码?

  于是,我就看看阿里云控制台是否能实现这个功能,有进程监控,进程监控等价于服务存活,我目前测试一个mongo存活,好不好用暂时未知

 
(a)先去ecs服务器找到进程,添加到进程监控

 (b)然后加监控规则

【云监控】 ——》  【华南1(深圳)】——》【主机监控】 ——》找到被监控服务器,选择【报警规则】

这个代表进程数少于1则报警,等价于进程挂了就报警。

 

 

   完美,洗洗睡~~

 
posted @ 2022-08-30 22:17  windysai  阅读(159)  评论(0编辑  收藏  举报