啥也不说了,直接上脚本,简单粗暴
#! /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