实现 nginx 日志切割,脚本执行时切割备份 nginx 日志,生成当前时间 年-月-日:时:分:秒
格式的目录,并将切割的日志放到该目录下,脚本不能影响 nginx 正常运行,不能丢失任何日志内容。
#!/bin/bash
LOGS_PATH=/data/bkce/logs/oldlogs
CUR_LOGS_PATH=/data/bkce/logs/nginx
YESTERDAY=$(date +%Y-%m-%d-%H:%M:%S)
cp $CUR_LOGS_PATH/access.log $LOGS_PATH/${YESTERDAY}_access.log
crontab –e
59 23 * bash /xxx.sh //每天23:59分执行切割
####################################################
脚本支持参数两个正整数,输出 N-M 的累加值(N-M 代表俩个参数),若是参数不符合,输出错误。
#!/bin/bash
read -p "please input a number:" a
read -p 'please input the end num:' b
if expr $a + 1 &>/dev/null && expr $b + 1 &>/dev/null
then
for i in seq $a $b
do
sum=$[$sum+$i]
done
echo $sum
else
echo “错误”
fi
####################################################
写一个脚本,实现判断 10.0.6.0/23 网络里,当前在线用户的 IP 有哪些?
#!/bin/bash
nmap -sn 10.0.6.0/23
####################################################
模拟磁盘文件命令:
dd if=/dev/zero of=/tmp/exam/10gb.log bs=100MB count=100
touch -d "10 days ago" /tmp/exam/10gb.log
####################################################
设置脚本上报,所有采集Linux TIME_WAIT、ESTABLISHED、CLOSE_WAIT
的TCP状态数量
echo loadavg1 $(netstat -anptl|grep ESTABLISHED|wc -l)
echo loadavg2 $(netstat -anptl|grep TIME_WAIT|wc -l)
echo loadavg3 $(netstat -anptl|grep CLOSE_WAIT|wc -l)
####################################################
新建脚本,采集机器的 cpu 使用率。
#!/bin/sh
#脚本功能描述:依据/proc/stat文件获取并计算CPU使用率
#CPU时间计算公式:CPU_TIME=user+system+nice+idle+iowait+irq+softirq
#CPU使用率计算公式:cpu_usage=[(user_2 +sys_2+nice_2) - (user_1 + sys_1+nice_1)]/(total_2 - total_1)*100
#默认时间间隔
TIME_INTERVAL=5
time=$(date "+%s")
LAST_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
LAST_SYS_IDLE=$(echo $LAST_CPU_INFO | awk '{print $4}')
LAST_USER_BUSY=$(echo $LAST_CPU_INFO | awk '{print $1}')
LAST_SYS_BUSY=$(echo $LAST_CPU_INFO | awk '{print $3}')
LAST_TOTAL_CPU_T=$(echo $LAST_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')
LAST_CPU_USAGE=$(echo $LAST_CPU_INFO | awk '{print $1+$2+$3}')
sleep ${TIME_INTERVAL}
NEXT_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
NEXT_SYS_IDLE=$(echo $NEXT_CPU_INFO | awk '{print $4}')
NEXT_USER_BUSY=$(echo $NEXT_CPU_INFO | awk '{print $1}')
NEXT_SYS_BUSY=$(echo $NEXT_CPU_INFO | awk '{print $3}')
NEXT_TOTAL_CPU_T=$(echo $NEXT_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')
NExT_CPU_USAGE=$(echo $NEXT_CPU_INFO | awk '{print $1+$2+$3}')
#系统空闲时间
SYSTEM_IDLE=echo ${NEXT_SYS_IDLE} ${LAST_SYS_IDLE} | awk '{print $1-$2}'
#系统使用时间
SYSTEM_BUSY=echo ${NEXT_SYS_BUSY} ${LAST_SYS_BUSY} | awk '{print $1-$2}'
#用户使用时间
USER_BUSY=echo ${NEXT_USER_BUSY} ${LAST_USER_BUSY} | awk '{print $1-$2}'
#用户+系统+nice时间
TOTAL_BUSY=echo ${NExT_CPU_USAGE} ${LAST_CPU_USAGE} | awk '{print $1-$2}'
#CPU总时间
TOTAL_TIME=echo ${NEXT_TOTAL_CPU_T} ${LAST_TOTAL_CPU_T} | awk '{print $1-$2}'
#CPU总时间百分比
CPU_USAGE=echo ${TOTAL_BUSY} ${TOTAL_TIME} | awk '{printf "%.2f", $1/$2*100}'
#用户时间百分比
#CPU_USER_USAGE=echo ${USER_BUSY} ${TOTAL_TIME}|awk '{printf "%.2f", $1/$2*100}'
#系统时间百分比
#CPU_sys_USAGE=echo ${SYSTEM_BUSY} ${TOTAL_TIME} |awk '{printf "%.2f", $1/$2*100}'
echo "cpu_usage" ${CPU_USAGE}
####################################################
打开 TCP 连接快速回收功能 提示:
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
####################################################
修改主机名,如果机器 IP 为 10.0.6.33 ,则修改主机名为 AGENT-6-33
host_ip=hostname -i|awk '{print $2}'
if [ $host_ip=='10.0.6.33' ]
then
hostnamectl set-hostname AGENT-6-33
fi
####################################################
创建 logicsvr 进程监控,如果进程不存在自动拉起进程,并且写日志到 /opt/logicsvr_monitor.log
procnum=ps ax|grep logicsvr|grep -v grep|wc -l
if [[ $procnum -eq 0 ]]; then
/opt/logicsvr/logicsvr -c /opt/logicsvr/logicsvr.conf
pid=ps ax|grep logicsvr|grep -v grep|awk '{print $1}'
echo "logicsvr进程不存在,进程号:$pid,重启时间:date
" >> /opt/logicsvr_monitor.log
else
pid=ps ax|grep logicsvr|grep -v grep|awk '{print $1}'
echo "logicsvr进程已存在,进程号:$pid,时间:date
" >> /opt/logicsvr_monitor.log
fi
####################################################
nginx 组件监控- 监控插件下载
nginx配置文件配置:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
root /usr/share/nginx/html;
allow 127.0.0.1; # 表示只允许本机访问
deny all; # 表示禁止任何来源访问
(#Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location /nginx_status {
stub_status on;
}