一个简陋的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 可以查看定时器状态

 

 

posted @ 2020-01-10 10:36  焦耳右螺旋  阅读(91)  评论(0)    收藏  举报