1、系统日志定时备份
echo "The program being executed......"
back_dir=/dengBao/logBack/systemLog
file_dir=/var/log
#定义备份文件名字
file_name=`date +%Y-%m-%d --date='-1 day'`
if [[ ! -d "${back_dir}" ]]; then
mkdir -p "${back_dir}"
fi
if [[ ! -d "${back_dir}/${file_name}" ]]; then
mkdir -p ${back_dir}/${file_name}
fi
cp -r ${file_dir}/* ${back_dir}/${file_name}/
find $back_dir/* -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
echo "succeed"
添加定时任务
echo "0 0 * * * /opt/script/systemLogBack.sh >/dev/null &" >>/var/spool/cron/root
2、定期清除docker日志
#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========"
3、自动屏蔽攻击 IP
#!/bin/sh
DATE=$(date +%d/%b/%Y:%H:%M)
LOG_FILE=/usr/local/nginx/logs/demo2.access.log
iplist=$(tail -n 5000 $LOG_FILE | grep $DATE | awk '{count[$1]++} END{for(ip in count) print count[ip], ip}' | sort -rn -k1 |head -n10| awk '{print $2}')
#awk '{print $1}' 1.log |sort -n |uniq -c |sort -nr
for ip in $iplist
do
if [ $(firewall-cmd --zone=public --list-rich-rules |grep -c $ip) -qe 0 ];then
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=$ip drop"
fi
done
4、mysql定时备份脚本
#!/bin/bash
USER="root"
PASSWORD="root123"
DATABASE="db1"
HOSTNAME="localhost"
BACKUP_DIR=/home/ywtg/backup/
LOGFILE=/home/ywtg/backup/ywtg_backup.log
DATE=`date '+%Y%m%d-%H%M'`
#备份文件
DUMPFILE='ywtg'-$DATE.sql
#压缩文件
ARCHIVE='ywtg'-$DATE.sql.tgz
#组装dump命令
OPTIONS="-h$HOSTNAME -u$USER -p$PASSWORD $DATABASE"
#判断备份文件存储目录是否存在,否则创建该目录
if [ ! -d $BACKUP_DIR ] ;
then
mkdir -p "$BACKUP_DIR"
fi
#开始备份之前,将备份信息头写入日记文件
echo " " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------" >> $LOGFILE
echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE
echo "------------------" >> $LOGFILE
cd $BACKUP_DIR
#使用mysqldump 命令备份制定数据库,并以格式化的时间戳命名备份文件
/usr/local/mysql/bin/mysqldump $OPTIONS > $DUMPFILE
#判断数据库备份是否成功
if [[ $? == 0 ]]; then
#创建备份文件的压缩包
tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
#输入备份成功的消息到日记文件
echo "[$ARCHIVE] Backup Successful!" >> $LOGFILE
#删除原始备份文件,只需保 留数据库备份文件的压缩包即可
rm -f $DUMPFILE
else
echo "Database Backup Fail!" >> $LOGFILE
fi
#输出备份过程结束的提醒消息
echo "Backup Process Done"
#删除7天以上的备份
find /home/ywtg/backup/ -type f -mtime +7 -name *.sql.tgz -exec rm -f {} \;
获取linux服务器资源,以json格式输出
disk=$(lsblk --output SIZE -b -d -n | awk '{sum+=$1} END {print sum/1024/1024/1024"G"}')
memory=$(awk '/MemTotal/ {printf "%.0fG\n", $2/1024/1024}' /proc/meminfo)
cpu="$(grep -c '^processor' /proc/cpuinfo)C"
ip="$(ip -4 addr show | awk '/(ens|eth)/ { print $2 }' | cut -d "/" -f 1 | awk 'NR==2')"
#echo -e "$ip $disk $memory $cpu"
# 构造 JSON 格式字符串
json="{\"ip\":\"$ip\",\"disk\":\"$disk\",\"memory\":\"$memory\",\"cpu\":\"$cpu\"}"
# 输出 JSON 字符串
echo "$json"
应用日志定时压缩
#! /bin/bash
#压缩所有app.log.2023-09-29格式的文件,并删除源文件
dir="/home/app/logs"
cd $dir
files=$(ls | grep -E "^app\.log\.[0-9]{4}-[0-9]{2}-[0-9]{2}$")
for file in $files
do
#echo $file
tar -czf $file.tar.gz $file && rm -f $file
done
zabbix监控JVM,自定义脚本
#! /bin/bash
service="$1"
index="$2"
pid="$(ps aux |grep "$service"|grep java | grep -v "grep" |awk '{print $2}')"
#echo "$pid"
column=$(jstat -gc $pid 1000 1 | awk -v v="$index" 'NR==1{for(i=1;i<=NF;i++) if($i==v) print i}')
#echo "$column"
value=$(jstat -gc $pid 1000 1 |awk -v col="$column" 'NR>1{print $col}')
echo $value