#!/bin/bash

Date=`echo $(date +%Y\-%m\-%d\ %H:%M:%S)`
HostName=`hostname`
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
ServerInfo=`echo -e "--------$Date--------\n服务器:$HostName IP:$IP"`

#删除5天前的监控日志
LOGPWD=/var/log/monitor
LOGDATE=`echo $(date -d -5day +%Y%m%d)`
LOGGREP=`ls $LOGPWD | grep -c "$LOGDATE"`
if [ $LOGGREP -gt 0 ]
then
rm -fr $LOGPWD/*$LOGDATE.log
fi

echo -e "$ServerInfo\nuptime\n`uptime`\nfree -m\n`free -m`" > $LOGPWD/monitor.log
#监控cpu负载
PhysicalCpu=`grep 'physical id' /proc/cpuinfo | sort -u | wc -l`
CoreCpu=`grep 'core id' /proc/cpuinfo | sort -u | wc -l`
count_cores=`echo "$PhysicalCpu*$CoreCpu" | bc`
count_uptime=`uptime |wc -w`
AverageLoad=`uptime | awk '{print $'$count_uptime'}'`
AverageInt=`echo $AverageLoad | cut -f 1 -d "."`
if [ $AverageInt -gt $count_cores ]
then
echo -e "$ServerInfo\n15分钟的负载为$AverageLoad,核心数$count_cores,超过cpu核心数,请处理!" >> $LOGPWD/cpu_status_$(date +%Y%m%d).log
echo -e "15分钟的负载为$AverageLoad,核心数$count_cores,超过cpu核心数,请处理!" >> $LOGPWD/monitor.log
else
echo -e "$ServerInfo\n15分钟的负载为$AverageLoad,核心数$count_cores,负载正常。" >> $LOGPWD/cpu_status_$(date +%Y%m%d).log
echo -e "15分钟的负载为$AverageLoad,核心数$count_cores,负载正常。" >> $LOGPWD/monitor.log
fi
#监控内存使用率
MemTotal=`free -m | grep Mem | awk '{print $2}'`
MemFree=`free -m | grep Mem | awk '{print $4}'`
MemRate=`echo "100-$MemFree*100/$MemTotal" | bc`
if [ $MemRate -gt 80 ]
then
echo -e "$ServerInfo\n内存使用率$MemRate%,大于80%,请处理。" >> $LOGPWD/mem_status_$(date +%Y%m%d).log
echo -e "内存使用率$MemRate%,大于80%,请处理。" >> $LOGPWD/monitor.log
else
echo -e "$ServerInfo\n内存使用率$MemRate%,小于等于80%,内存负载正常。" >> $LOGPWD/mem_status_$(date +%Y%m%d).log
echo -e "内存使用率$MemRate%,小于等于80%,内存负载正常。" >> $LOGPWD/monitor.log
fi

if [ $AverageInt -gt $count_cores ]||[ $MemRate -gt 80 ]
then
cat $LOGPWD/monitor.log | mail -s "$HostName服务器负载监控报警"xxx@xxx.xxx
fi

Linux 负载监控脚本的更多相关文章

  1. linux服务监控脚本

    配置需要监控的服务器 数组定义:host_ports=(host_name=host_port=uri_path)host_name为容易识别的服务器名称host_port为服务器ip和服务端口uri ...

  2. Zabbix Linux http 监控脚本

    说明:自定义监控脚本,监控内存是否启用主进程 创建文件:vim check_http.sh #!/bin/bash result=`ps -ef | grep httpd | grep -v grep ...

  3. linux服务器监控脚本

    #!/bin/bash #获取cpu使用率 cpuUsage=`top -n 1 | awk -F '[ %]+' 'NR==3 {print $2}'` #获取磁盘使用率 data_name=&qu ...

  4. linux网络监控脚本

    http://www.51testing.com/html/92/77492-828434.html

  5. linux服务器系统负载监控-shell脚本

    一.监控服务器系统负载情况: 1.用uptime命令查看当前负载情况(1分钟,5分钟,15分钟平均负载情况) # uptime   15:43:59 up 186 days, 20:04,  1 us ...

  6. Linux centosVMware 告警系统主脚本、告警系统配置文件、告警系统负载脚本、告警系统502日志脚本、告警系统disk监控脚本、告警系统邮件引擎

    一.告警系统主脚本 要求:我们的机器角色多种多样,但是所有机器上都要部署同样的监控系统,也就说所有机器不管什么角色,整个程序框架都是一致的,不同的地方在于根据不同的角色,定制不同的配置文件. 程序架构 ...

  7. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...

  8. Linux 服务器系统监控脚本 Shell【转】

    转自: Linux 服务器系统监控脚本 Shell - 今日头条(www.toutiao.com)http://www.toutiao.com/i6373134402163048961/ 本程序在Ce ...

  9. Linux 性能监控之CPU&内存&I/O监控Shell脚本2

    Linux 性能监控之CPU&内存&I/O监控Shell脚本2   by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...

随机推荐

  1. CoCreateInstance调用返回代码0x80040154的一种解决方法

    引言 前面的一篇博文中总结了开发Windows Thumbnail Handler的一些经验.在公司实际项目中,需要同时针对图片和视频实现缩略图.同时还要在图片和视频文件的顶部加上LOGO.像如下这样 ...

  2. Objective-C 对象(内容根据iOS编程编写)

    开发iOS程序需要使用 Objective-C 语言和Cocoa Touch框架.Objective-C 源于 C 语言,是 C 语言的扩展. Cocoa Touch框架是一个Objective-C类 ...

  3. Android Studio :enable vt-x in your bios security,已经打开还是报错的解决方法

    quote: For Windows 10: First of all, install the intelhaxm-android.exe located in the folder SDK\ext ...

  4. centos安装禅道的步骤

    1.下载 XAMPP 套件: https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/stats/timeline  下载的文件是 xam ...

  5. nginx concat模块配置 页面返回400 bad request

    在1.4.x版本的nginx没有发现这个问题,但是在1.5.x版本就遇到了这个问题 由于Nginx在新版本中,使用了标准的 MIME-Type:application/javascript.而在ngi ...

  6. python计算器

    思路:优先级处理思路一:正则表达式+递归(计算时间慢)思路二:堆栈的方式队列:先进先出电梯-->队列上电梯(入队123):第三个人3,第二个人2,第一个人1>>> li = [ ...

  7. GJM :动作手游实时PVP 帧同步(客户端)[转载]

    原帖地址:http://gad.qq.com/article/detail/7171195 原文作者:唐声福  原帖备注:版权所有,禁止匿名转载:禁止商业使用:禁止个人使用. 1.概述 1.1.基于U ...

  8. 关于如何在Android、Java等非微软平台上建立高信任的SharePoint应用程序

    关于如何在非微软平台上建立高信任的SharePoint应用程序 原文 :http://blogs.msdn.com/b/kaevans/archive/2014/07/14/high-trust-sh ...

  9. compileDebugJavaWithJavac

    学习笔记 compileDebugJavaWithJavac,缺少插件,在module app gradle文件最上面添加一段 apply plugin: 'me.tatarka.retrolambd ...

  10. UIWindow

    title: UIWindow相关知识date: 2016-1-21 20:50categories: IOS tags: UIWindow 小小程序猿我的博客:http://daycoding.co ...