Centos7 检查项目健康状态

啥也不说了,直接上脚本,简单粗暴

#! /bin/bash
#color notes
Normal='\033[0m'
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
cyan='\033[0;36m'
yellow='\033[0;33m'
#Sectioning .........
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${Normal}"
echo "Server details:"
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${Normal}"

#fetching basic specs from the server(user,ip,os)
user=`whoami`
echo -e "${cyan}User:${Normal} $user"
hostname=`hostname`
echo -e "${cyan}hostname:${Normal} $hostname"
ip=`hostname -I`
echo -e "${cyan}IP address:${Normal} $ip"
os=`cat /etc/os-release | grep 'NAME\|VERSION' | grep -v 'VERSION_ID' | grep -v 'PRETTY_NAME' | grep NAME`
echo -e "${cyan}OS:${Normal} $os"

#Sectioning.....
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${Normal}"
echo "5 Service status:"
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${Normal}"
sleep 1
echo ""

#function to check nginx is running or not!
function nginx() {
echo -e "${yellow}1) Nginx${Normal}"
#grepping nginx status from ps aux
nginx=`systemctl status nginx | grep nginx`
if [[ $nginx =~ "nginx" ]];then
 echo -e "   Status: ${GREEN}UP${Normal}"
else
 echo -e "   Status: ${RED}DOWN${Normal}"
fi
}

#function to check redis is running or not!
function redis() {
echo -e "${yellow}2) redis${Normal}"
#grepping redis status from ps aux
redis=`systemctl status redis | grep redis`
if [[ $redis =~ "redis" ]];then
 echo -e "   Status: ${GREEN}UP${Normal}"
else
 echo -e "   Status: ${RED}DOWN${Normal}"
fi
}

#function to check elastic is running or not
function elastic() {
echo -e "${yellow}3) Elasticsearch${Normal}"
#grepping elasticsearch status from ps aux
elastic=`ps aux | grep elasticsearch`
if [[ $elastic =~ "elastic+" ]];then
 echo -e "   Status: ${GREEN}UP${Normal}"
else
 echo -e "    Status: ${RED}DOWN${Normal}"
fi
#function to check mysql is running or not
}
function mysql() {
echo -e "${yellow}4) Mysql${Normal}"
#grepping mysql status from ps aux
mysql=`ps aux | grep mysql`
if [[ $mysql =~ "mysql" ]];then
 echo -e "   Status: ${GREEN}UP${Normal}"
else
 echo -e "   Status: ${RED}DOWN${Normal}"
fi
}

function nacos() {
echo -e "${yellow}5) Nacos${Normal}"
#grepping nacos status from ps aux
nacos=`systemctl status nacos | grep nacos`
if [[ $nacos =~ "nacos" ]];then
 echo -e "   Status: ${GREEN}UP${Normal}"
else
 echo -e "   Status: ${RED}DOWN${Normal}"
fi
}
#calling functions
nginx
echo ""
redis
echo ""
elastic
echo ""
mysql
echo ""
nacos
echo ""
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${Normal}"
echo " 4 WEB Service status:"
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${Normal}"
sleep 1
echo ""

#grepping xxl_job status from ps aux
function xxl_job() {
echo -e "${yellow}6) xxl_job${Normal}"
#grepping xxl_job status from ps aux
httpd=`ps aux | grep l-job`
if [[ $httpd =~ "xxl-job" ]];then
 echo -e "   Status: ${GREEN}UP${Normal}"
else
 echo -e "   Status: ${RED}DOWN${Normal}"
fi
}

function server_gateway() {
echo -e "${yellow}7) server_gateway${Normal}"
#grepping server-gateway status from ps aux
httpd=`ps aux | grep r-gateway`
if [[ $httpd =~ "server-gateway" ]];then
 echo -e "   Status: ${GREEN}UP${Normal}"
else
 echo -e "   Status: ${RED}DOWN${Normal}"
fi
}

function server_admin() {
echo -e "${yellow}8) server_admin${Normal}"
#grepping server-admin status from ps aux
httpd=`ps aux | grep r-admin`
if [[ $httpd =~ "server-admin" ]];then
 echo -e "   Status: ${GREEN}UP${Normal}"
else
 echo -e "   Status: ${RED}DOWN${Normal}"
fi
}

function server_front() {
echo -e "${yellow}9) server_front${Normal}"
#grepping server-front status from ps aux
httpd=`ps aux | grep r-front`
if [[ $httpd =~ "server-front" ]];then
 echo -e "   Status: ${GREEN}UP${Normal}"
else
 echo -e "   Status: ${RED}DOWN${Normal}"
fi
}

#calling web check functions
xxl_job
echo ""
server_gateway
echo ""
server_admin
echo ""
server_front
echo ""
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${Normal}"

#Sectioning............
#Fetching mem and cpu informations
echo "Memory Details:"
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${Normal}"
sleep 1
#view mem info
free -h
#get uptime details
uptime=$(uptime | awk '{print $3,$4}' | cut -f1 -d,)
echo -e "${cyan}System Uptime:${Normal} :$uptime"
#Fetching the load averageloadaverage=$(top -n 1 -b | grep "load average:" | awk '{print $10 $11 $12}')
echo -e "${cyan}Load average:${Normal}: $loadaverage"
echo -e "${cyan}The top 10 services with high resource usage are listed below.${Normal}"
#Get top services with high resource utilization
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head

#sectioning...........
#Fetching server space details!
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${Normal}"
echo "Server space Details:"
echo -e "${YELLOW}---------------------------------------------------------------------------------------------------------------${Normal}"
#View disk space details
df -h
echo "----------------------------------------------------------------------------------------------------------------"

效果如下

[root@ecs-e31a-1110168 ~]# ./jianKang.sh 
---------------------------------------------------------------------------------------------------------------
Server details:
---------------------------------------------------------------------------------------------------------------
User: root
hostname: ecs-e31a-1110168.novalocal
IP address: 192.168.0.232 
OS: NAME="CentOS Linux"
CPE_NAME="cpe:/o:centos:centos:7"
---------------------------------------------------------------------------------------------------------------
5 Service status:
---------------------------------------------------------------------------------------------------------------

1) Nginx
   Status: UP

2) redis
   Status: UP

3) Elasticsearch
   Status: UP

4) Mysql
   Status: UP

5) Nacos
   Status: UP

---------------------------------------------------------------------------------------------------------------
 4 WEB Service status:
---------------------------------------------------------------------------------------------------------------

6) xxl_job
   Status: UP

7) server_gateway
   Status: UP

8) server_admin
   Status: UP

9) server_front
   Status: UP

---------------------------------------------------------------------------------------------------------------
Memory Details:
---------------------------------------------------------------------------------------------------------------
              total        used        free      shared  buff/cache   available
Mem:           7.6G        7.0G        133M        120M        521M        254M
Swap:           11G          0B         11G
System Uptime: :2 days
Load average:: 
The top 10 services with high resource usage are listed below.
  PID  PPID CMD                         %MEM %CPU
 2645     1 /opt/elasticsearch_7.17/jdk 32.4  0.2
29758     1 java -Dspring.config.locati 11.6  0.4
30032     1 java -Dspring.config.locati 11.1  0.5
 6319     1 java -Dspring.config.locati 10.2  0.2
 1924     1 /opt/jdk1.8.0_341//bin/java  9.3  0.4
 1366   739 /usr/local/mysql8.0/bin/mys  7.2  0.3
 6212     1 java -Dspring.config.locati  4.7  0.2
 1049   666 /CloudResetPwdUpdateAgent/d  1.2  0.0
  401     1 /usr/lib/systemd/systemd-jo  0.5  0.0
---------------------------------------------------------------------------------------------------------------
Server space Details:
---------------------------------------------------------------------------------------------------------------
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G  121M  3.8G   4% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/vda2        46G   18G   26G  42% /
/dev/vdb        493G   22G  446G   5% /data
tmpfs           783M     0  783M   0% /run/user/0
----------------------------------------------------------------------------------------------------------------

数据库备份脚本

#!/bin/bash
# Author: LiJinGang
# Description: Database backup script
#mysqldump,引入配置文件,要不找不到备份命令
source /etc/profile
function dbback(){
# 定义变量
#Using a password on the command line interface can be insecure.
#解决方法修改mysql配置文件
#vim /etc/my.conf
#加入下面内容:
#[mysqldump]
#user=root
#password=你的密码
db_path="/data/bak/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/bakmysql"
db_file="backuprecord"
db_date=`date +%Y%m%d_%H:%M:%S`
# 判断路径是否存在
[ -d $db_path ] || exit 2
# 使用mysqldump备份数据,并用gzip进行压缩
mysqldump  --single-transaction jeecmsx2-advance  | gzip > $db_path/${db_date}_jeecms.sql.gz
REVAL=$?
if [ $REVAL -eq 0 ]
    then
        echo "$db_date jeecms db is backups successful" >>$db_path/$db_file
    else
        echo "$db_date jeecms db is backups failed" >>$db_path/$db_file
fi
}

#删除超过7天的备份数据
function delbak(){
local db_path="/data/bak/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/bakmysql"
find $db_path -type f -name "*jeecms*.gz" -mtime +7 -exec rm -rf {} \;
}
dbback
delbak

输出健康检查日志到txt

#!/bin/bash
source /etc/profile
#DEPLOY_DIR=`pwd`
DEPLOY_DIR=/data/user/back/home/shell
LOGS_DIR=$DEPLOY_DIR/logs
if [ ! -d $LOGS_DIR ]; then
  mkdir $LOGS_DIR
fi
STDOUT_FILE=$LOGS_DIR/`date +%Y_%m_%d`.txt
function out_log(){
echo "---------------------------------------------------------------------------------------------------------------"  >> $STDOUT_FILE
echo "database back details:"  >> $STDOUT_FILE
echo "---------------------------------------------------------------------------------------------------------------"  >> $STDOUT_FILE
cat /data/bak/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/bakmysql/backuprecord >> $STDOUT_FILE
nohup sh $DEPLOY_DIR/jianKang.sh >> $STDOUT_FILE 2>&1 &
}
#删除超过7天的log数据
function delbak(){
local log_path="/data/user/back/home/shell/logs"
find $log_path -type f -name "*.txt" -mtime +7 -exec rm -rf {} \;
}
out_log
delbak

把检查日志发送邮件

#!/bin/bash
source /etc/profile

#目的邮箱
email_sender=18119261688@qq.com

DEPLOY_DIR=/data/user/back/home/shell
LOGS_DIR=$DEPLOY_DIR/logs

STDOUT_FILE=$LOGS_DIR/`date +%Y_%m_%d`.txt
email_title="TYJS_Site_健康检查"`date +%Y_%m_%d`

echo "Tianye Water Saving website health check, website basic service status, web service status, database backup. See attachment for details!" | mail -s $email_title -a $STDOUT_FILE $email_sender 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容