服务器性能报警主机,[Linux] linux服务器主机性能、空间监控脚本

2、建立监控脚本:

[oracle@db1 scripts]$ cat check_system_warning.sh

#!/bin/sh

#定义变量

v_datetime=`date +"%Y-%m-%d %H:%M:%S"`

v_username='oracle'

v_hostname=`hostname`

#获取物理CPU数量

v_physicalcpu=`cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l`

#获取逻辑CPU数量

v_logicalcpu=`cat /proc/cpuinfo | grep "processor" | wc -l`

#获取IP地址

v_ip=`/sbin/ifconfig bond0|grep 'inet addr'|awk '{print $2}'|cut -d: -f2`

#发送者邮箱

v_sendmail=''

#发送者邮箱用户名

v_mailname=''

#发送者邮箱密码

v_password=''

#smtp服务器IP或域名:smtp.163.com

v_smtpserver='113.108.212.80'

#接收者邮件,如果是多个用空间分开

v_receivemail=' '

#路径

v_path="/home/${v_username}/scripts"

#设置获取top进程的数量

v_process=15

#系统负载监控,最近5分钟负载及Cpu Idle报警阀值

v_loadvaluesfor5min_warning=20

v_cpuusage_warning=35

#剩余物理内存报警阀值,单位M

v_freememory_warning=512

#free+buffers+cached报警阀值,单位M

v_free_buffers_cached_warning=2000

#使用swap分区报警阀值,单位M

v_useswap_warning=1000

#磁盘使用百分比报警阀值

v_diskusepercent_warning=90

#系统负载监控代码开始

#check sys load and cpuidle

#v_release=`lsb_release -a|head -4|tail -1|awk '{print $2}'|awk -F '.' '{print $1}'`

v_release=6

if [ ${v_release} = 4 ]; then

#RHEL 4.x

v_cpuusage=`mpstat 1 5 | grep Average | awk '{print $9}'|awk -F "." '{print $1}'`

#RHEL 5.x

elif [ ${v_release} = 5 ]; then

v_cpuusage=`mpstat 1 5 | grep Average | awk '{print $10}'|awk -F "." '{print $1}'`

#RHEL 6.x

elif [ ${v_release} = 6 ]; then

v_cpuusage=`mpstat 1 5 | grep Average | awk '{print $11}'|awk -F "." '{print $1}'`

fi;

v_loadvaluesfor5min=`cat /proc/loadavg |awk '{print $1}'|awk -F "." '{print $1}'`

if [ ${v_loadvaluesfor5min} -ge ${v_loadvaluesfor5min_warning} ] || [ ${v_cpuusage} -le ${v_cpuusage_warning} ] ; then

echo "############################" > ${v_path}/top${v_process}_text.log

echo "USER: ${v_username}" >> ${v_path}/top${v_process}_text.log

echo "HOSTNAME: ${v_hostname}" >> ${v_path}/top${v_process}_text.log

echo "IP: ${v_ip}" >> ${v_path}/top${v_process}_text.log

echo "Physical CPU: ${v_physicalcpu}" >> ${v_path}/top${v_process}_text.log

echo "Logical CPU: ${v_logicalcpu}" >> ${v_path}/top${v_process}_text.log

echo "Uptime: "`uptime` >> ${v_path}/top${v_process}_text.log

echo "############################" >> ${v_path}/top${v_process}_text.log

echo "########mpstat 1 5#########" >> ${v_path}/top${v_process}_text.log

mpstat 1 5 >> ${v_path}/top${v_process}_text.log

echo "######## ps -ef|grep "LOCAL=NO"|wc -l #########" >> ${v_path}/top${v_process}_text.log

ps -ef|grep "LOCAL=NO"|wc -l >> ${v_path}/top${v_process}_text.log

echo "######## ps aux | ??? #########" >> ${v_path}/top${v_process}_text.log

ps aux|head -1 >> ${v_path}/top${v_process}_text.log

ps aux|grep -v PID|sort -rn -k +3|head -${v_process} >> ${v_path}/top${v_process}_text.log

#####echo " " | ${v_path}/bsmtp -f ${v_sendmail} -h smtp.api.localdomain -s "${v_hostname} Five Minutes Loadavg: ${v_loadvaluesfor5min} ; CPU idle: ${v_cpuusage} - ${v_datetime}" ${v_receivemail} 

${v_path}/sendEmail -f ${v_sendmail} -t ${v_receivemail} -s ${v_smtpserver} -u "${v_hostname} Five Minutes Loadavg: ${v_loadvaluesfor5min} ; CPU idle: ${v_cpuusage} - ${v_datetime}" -xu ${v_mailname} -xp ${v_password} -o message-content-type=text -o message-charset=UTF-8 message-file=${v_path}/top${v_process}_text.log -l ${v_path}/system_warning_sendmail.log

fi;

#系统负载监控代码结束

#系统内存监控代码开始

#check memory space

v_freememory=`free -m|sed -n '\ : p'|gawk '{print $4}'|head -1`

v_freebuffers=`free -m|sed -n '\ : p'|gawk '{print $6}'|head -1`

v_freecached=`free -m|sed -n '\ : p'|gawk '{print $7}'|head -1`

v_free_buffers_cached_total=`echo "($v_freememory+$v_freebuffers+$v_freecached)" |bc`

v_useswap=`free -m|sed -n '\ : p'|tail -1|cut -d ":" -f 2|gawk '{print $2}'`

if [ ${v_freememory} -le ${v_freememory_warning} ] || [ ${v_useswap} -ge ${v_useswap_warning} ] || [ ${v_free_buffers_cached_total} -le ${v_free_buffers_cached_warning} ] ; then

echo "############################" > ${v_path}/memory_text.log

echo "USER: ${v_username}" >> ${v_path}/memory_text.log

echo "HOSTNAME: ${v_hostname}" >> ${v_path}/memory_text.log

echo "IP: ${v_ip}" >> ${v_path}/memory_text.log

echo "############################" >> ${v_path}/memory_text.log

free -m >> ${v_path}/memory_text.log

echo "########vmstat 1 10#########" >> ${v_path}/memory_text.log

vmstat 1 10 >> ${v_path}/memory_text.log

#####${v_path}/bsmtp -f ${v_sendmail} -h smtp.api.localdomain -s "${v_hostname} MEMORY SPACE WARNING! - ${v_datetime}" ${v_receivemail} 

${v_path}/sendEmail -f ${v_sendmail} -t ${v_receivemail} -s ${v_smtpserver} -u "${v_hostname} MEMORY SPACE WARNING - ${v_datetime}" -xu ${v_mailname} -xp ${v_password} -o message-content-type=text -o message-charset=UTF-8 message-file=${v_path}/memory_text.log -l ${v_path}/system_warning_sendmail.log

fi;

#系统内存监控代码结束

#系统磁盘监控代码开始

#check disk space

v_diskusepercent=`df -P|column -t| sed -n '\ / p'|gawk '{print $5}'|sed s/%//|sort -nr|head -1`

if [ ${v_diskusepercent} -ge ${v_diskusepercent_warning} ] ; then

echo "############################" > ${v_path}/disk_text.log

echo "USER: ${v_username}" >> ${v_path}/disk_text.log

echo "HOSTNAME: ${v_hostname}" >> ${v_path}/disk_text.log

echo "IP: ${v_ip}" >> ${v_path}/disk_text.log

echo "############################" >> ${v_path}/disk_text.log

df -h >> ${v_path}/disk_text.log

#####${v_path}/bsmtp -f ${v_sendmail} -h smtp.api.localdomain -s "${v_hostname} DISK SPACE WARNING!!! - ${v_datetime}" ${v_receivemail} 

${v_path}/sendEmail -f ${v_sendmail} -t ${v_receivemail} -s ${v_smtpserver} -u "${v_hostname} DISK SPACE WARNING - ${v_datetime}" -xu ${v_mailname} -xp ${v_password} -o message-content-type=text -o message-charset=UTF-8 message-file=${v_path}/disk_text.log -l ${v_path}/system_warning_sendmail.log

fi;

#系统磁盘监控代码结束

3、配置crontab,每两分钟运行一次

[oracle@db1 scripts]$ crontab -l

#os check

*/2 * * * * /home/oracle/scripts/check_system_warning.sh >/dev/null 2>&1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值