一个简陋的Linux监控脚本
mail_syslog.sh脚本代码
#!/bin/bash #获取用户空间占用CPU百分比 PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/ #获取当前时间 cd /usr/syslog/ Year=`date +%Y` Month=`date +%m` Day=`date +%d` P=`date +%p` H=`date +%k` if(($H < 7));then echo "if内" mkdir /usr/syslog/"$Year"/ mkdir /usr/syslog/"$Year"/"$Month" mkdir /usr/syslog/"$Year"/"$Month"/"$Day" mkdir /usr/syslog/"$Year"/"$Month"/"$Day"/PM/ mkdir /usr/syslog/"$Year"/"$Month"/"$Day"/AM/ else filename="$Year$Month$Day$P" cd $Year/$Month/$Day/ zip -r "$filename".zip $P/
#红字部分是收件邮箱 echo "${Year}-${Month}-${Day}-${P}'各服务器监控日志'" | mail -s "${Year}-${Month}-${Day}-${P}'各服务器监控日志'" -a ${filename}.zip ***********@qq.com rm -f ${filename}.zip fi
sysmonitor.sh脚本代码
#!/bin/bash #加载所有路径 PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/ #获取当前时间 Date=`date +%Y-%m-%d%p` Year=`date +%Y` Month=`date +%m` Day=`date +%d` P=`date +%p` #IP IP=`hostname -I | sed s/[[:space:]]//g` #拼接路径 dir='/home/app/sysmonitor/' #拼接日志名 file=$Date$IP".txt" #获取本机IP echo "本机IP:"$IP >> $dir"${file}" echo >> $dir$file # 查看登陆的用户 touch ${dir}who who>${dir}who echo "本机登录用户:" >> $dir"${file}" cat ${dir}who >> $dir"${file}" rm -f ${dir}who echo >> $dir$file # 获取物理内存总量 mem_total=`free -h| grep Mem | awk '{print $2}'` # 获取操作系统已使用内存总量 mem_sys_used=`free -h| grep Mem | awk '{print $3}'` echo "物理内存总量:"$mem_total >> $dir"${file}" echo "已使用内存总量:"$mem_sys_used >> $dir"${file}" echo >> $dir$file # 获取用户空间占用CPU百分比 #cpu_free=`top -b -n 1 | grep Cpu | cut -f 4 -d ","|cut -d ' ' -f 1 | cut -f 1 -d '.'` #cpu_free=`top -b -n 1 | grep Cpu | awk '{print $8}'` #cpu_used=$[100-$cpu_free] #echo "已占用CPU百分比: "$cpu_used'%' >> $dir"${file}" #echo "空闲CPU百分比: "$cpu_free"%" >> $dir"${file}" cpu_state=`top -b -n 1|grep Cpu` echo "Cpu使用情况: " >> $dir$file echo $cpu_state >> $dir$file echo >> $dir$file # 获取CPU15分钟前到现在的负载平均值 cpu_load_15min=`uptime | awk '{print $11}' | cut -f 1 -d ','` echo "CPU 15分钟前到现在的负载平均值:"$cpu_load_15min"%" >> $dir"${file}" echo >> $dir$file #获取磁盘使用情况 df -h > ${dir}disk echo "磁盘各分区使用情况: ">> $dir"${file}" cat ${dir}disk >> $dir"${file}" rm -f ${dir}disk echo >> $dir$file #java进程信息 ps -ef|grep java > ${dir}java.log echo "java相关进程信息: ">> $dir"${file}" cat ${dir}java.log >> $dir"${file}" rm -f ${dir}java.log scp ${dir}"${file}" root@30.1.10.186:/usr/syslog/${Year}/${Month}/${Day}/${P}/ rm -f ${dir}"${file}"
使用文档
一、 被监控服务器要执行的操作
1,在/home/app/路径下创建sysmonitor文件夹

2,配置免密登录
进入/home/app/sysmonitor文件夹
生成本机公私秘钥,执行ssh-keygen -t rsa -P ''

把生成的名为id_rsa.pub的文件通过scp命令
scp id_rsa.pub root@30.1.10.186:/root/.ssh/发送到存放日志服务器的/root/.ssh/目录下

2,把sysmonitor.sh脚本放到/home/app/sysmonitor/路径下并执行chmod +x sysmonitor.sh

3,设置定时,执行crontab -e添加一条数据
50 7,13 * * * /home/app/sysmonitor/sysmonitor.sh


二、 存放日志服务器的操作
1,在存放日志服务器/root/.ssh/路径下执行
cat id_rsa.pub >> authorized_keys 把id_rsa.pub的内容导入到authorized_keys文件中,如果还没有authorized_keys这个文件,可以用touch命令先生成一个空的


修改authorized_key的权限,执行chmod 600 authorized_keys

2,设置sendmail参数
执行vim /etc/mail.rc
在末尾添加配置:
set from=*********@163.com
set smtp=smtp.163.com
set smtp-auth-user=*********@163.com
set smtp-auth-password=**********
set smtp-auth=login

2,在/usr/路径下创建syslog文件夹

3,把mail_syslog.sh放到/usr/syslog/路径下,并执行chmod +x mail_syslog.sh

4,设置定时:执行命令crontab -e
添加0 1,8,14 * * * /usr/syslog/mail_syslog.sh


5,service crond status 可以查看定时器状态


浙公网安备 33010602011771号