linux系统CPU内存磁盘监控发送邮件脚本之二-阿里云开发者社区

开发者社区> 技术小牛人> 正文

linux系统CPU内存磁盘监控发送邮件脚本之二

简介:
+关注继续查看

#!/bin/bash

export PATH

export LANG=zh_CN.UTF-8

#

#

#top之后输入数字1,可以查看每颗CPU的情况.

#

#

#先配置好mailx邮箱账号密码:

#cat>/etc/mail.rc<<"EOF"

#set sendcharsets=iso-8859-1,utf-8

#set from=xxx@163.com

#set smtp=smtp.163.com

#set smtp-auth-user=xx@163.com

#set smtp-auth-password=xxx

#set smtp-auth=login

#EOF

#文件存放位置

#

#判断是否安装bc

ping -c 2 www.baidu.com || exit 5

[ `echo "1 > 2"|bc` ] || yum install bc -y

sleep 3

[ `rpm -qa|grep dos2unix` ] || yum install dos2unix -y

sleep 3


#

#

#时间

readonly times=$(date +%Y"/"%m"/"%d" "%k":"%M)

#服务器IP

readonly machine=$(ip add | grep inet|grep -v 'inet6\|127.0.0.1'|awk '{ print $2 }' | sed 's/\/.*$//')

readonly names=$(hostname)

#cpu个数

readonly cpuinfos=$(cat /proc/cpuinfo|grep processor|wc -l)

#在线用户数

readonly onlines='2'

#cpu负载阈值

readonly cpuload='80'

#判断用户在线数

userd=$(top -n 1|grep users|awk -F '[, ]+' '{print $6}')

whos=$(who)

if [ $userd > $onlines ];then

echo "$times   $machine   当前在线用户数: $whos"

fi


#

#

function top_check(){

#服务器运行多久  

 runup=$(top -n 1|grep user|awk -F '[, ]+' '{print $5}')

#用户空间占用CPU百分比

   cpuus=$(top -n 1|grep Cpu|awk -F "," '{print $1}'|awk -F " " '{print $2}')

#内核空间占用CPU百分比

   cpusy=$(top -n 1|grep Cpu|awk -F "," '{print $2}'|awk -F " " '{print $2}') 

#改变过优先级的进程占用CPU的百分比

   cpuni=$(top -n 1|grep Cpu|awk -F "," '{print $3}'|awk -F " " '{print $2}')

#空闲CPU百分比

   cpuid=$(top -n 1|grep Cpu|awk -F "," '{print $4}'|awk -F " " '{print $2}')

#I/O等待占用CPU的百分比

   cpuwa=$(top -n 1|grep Cpu|awk -F "," '{print $5}'|awk -F " " '{print $2}')

#硬中断占用CPU的百分比

   cpuhi=$(top -n 1|grep Cpu|awk -F "," '{print $6}'|awk -F " " '{print $2}')   

#软中断占用CPU的百分比

   cpusi=$(top -n 1|grep Cpu|awk -F "," '{print $7}'|awk -F " " '{print $2}')   

#虚拟 CPU 等待实际 CPU 的时间的百分比

   cpust=$(top -n 1|grep Cpu|awk -F "," '{print $8}'|awk -F " " '{print $2}')

}


function load_time(){

#一分钟负载

   load1=$(top -n 1|grep user|awk -F '[, ]+' '{print $11}')

#五分钟负载

   load5=$(top -n 1|grep user|awk -F '[, ]+' '{print $12}')

#十五分钟负载

   load15=$(top -b -n 1|grep user|awk '{print $NF}')

}


function load_mem(){

#内存总容量

   memtotal=$(($(top -n 1|grep buff/cache|awk -F '[, ]+' '{print $4}') / 1024))   

#当前空闲内存

   memfree=$(($(top -n 1|grep buff/cache|awk -F '[, ]+' '{print $7}') / 1024))

#当前已使用内存

   memused=$(($(top -n 1|grep buff/cache|awk -F '[, ]+' '{print $10}') / 1024))  

#内存buff/cache

   membuff=$(($(top -n 1|grep buff/cache|awk -F '[, ]+' '{print $13}') / 1024))  

#swap总容量

   swaptotal=$(($(top -n 1|grep avail|awk -F '[, ]+' '{print $3}') / 1024))  

#swap当前空闲

   swapfree=$(($(top -n 1|grep avail|awk -F '[, ]+' '{print $6}') / 1024))   

#swap当前已使用

   swapused=$(($(top -n 1|grep avail|awk -F '[, ]+' '{print $9}') / 1024))   

#swap内存avail Mem

   swapavail=$(($(top -n 1|grep avail|awk -F '[, ]+' '{print $11}') / 1024))   

}


function echo_run(){

echo "$times   $machine   运行多久: $runup 分钟 "

}



function echo_cpu(){

   echo "$times   $machine   用户空间占用CPU百分比: $cpuus "

   echo "$times   $machine    内核空间占用CPU百分比: $cpusy "

   echo "$times   $machine    改变过优先级的进程占用CPU的百分比: $cpuni "

   echo "$times   $machine    空闲CPU百分比: $cpuid "

   echo "$times   $machine    I/O等待占用CPU的百分比: $cpuwa"

   echo "$times   $machine    硬中断占用CPU的百分比: $cpuhi "

   echo "$times   $machine    软中断占用CPU的百分比: $cpusi "

   echo "$times   $machine    虚拟 CPU 等待实际 CPU 的时间的百分比: $cpust "

}


function echo_mem(){

   echo "$times   $machine   内存总容量: $memtotal M "

   echo "$times   $machine   空闲内存: $memfree M "

   echo "$times   $machine   已使用内存: $memused M "

   echo "$times   $machine   内存buff/cache: $membuff M "

   echo "$times   $machine   swap总共: $swaptotal M "

   echo "$times   $machine   swap空闲: $swaptotal M "

   echo "$times   $machine   swap已使用: $swapused M "

   echo "$times   $machine   swap内存avail Mem: $swapavail M "

}


function echo_load(){

echo "$times   $machine   1分钟CPU负载: $load1 "

echo "$times   $machine   5分钟CPU负载: $load5 "

echo "$times   $machine   15分钟CPU负载: $load15 "

}


#调用函数

top_check

load_time

load_mem

#

if [ `echo "$load1 > $cpuinfos"|bc` -eq 1 ];then

 readonly runlog="/tmp/runs.log"

   echo_run >$runlog

   readonly loadlog="/tmp/load.log"

   echo_load >$loadlog

   readonly cpulog="/tmp/cpus.log"

   echo_cpu >$cpulog

   readonly memlog="/tmp/mems.log"

   echo_mem >$memlog

#发送邮件

dos2unix -k $runlog

dos2unix -k $loadlog

dos2unix -k $cpulog

dos2unix -k $memlog

mailx -s "服务器$names $machine" lumia98@vip.qq.com < $runlog

mailx -s "服务器$names $machine" lumia98@vip.qq.com < $loadlog

mailx -s "服务器$names $machine" lumia98@vip.qq.com < $cpulog

mailx -s "服务器$names $machine" lumia98@vip.qq.com < $memlog

fi



#判断I/O wa是否过高

if [ `echo "$cpuwa > 60"|bc` -eq 1 ];then

readonly ioslogs="/tmp/wa.log"

iostat -cdx 3 > $ioslogs

dos2unix -k $ioslogs

  mailx -s "服务器$names $machine的负载wa%" lumia98@vip.qq.com < $ioslogs

fi


#判断磁盘空间不足

disks=$(df | grep /dev|grep -v "shm\|boot\|devtmpfs"|awk '{print $5}'|sed 's/\%.*$//')

for x in $disks

do

if [ $x -gt 70 ]; then

disklog="/tmp/disk.log"

df -h >$disklog

dos2unix -k $disklog

mailx -s "服务器$names $machine" lumia98@vip.qq.com < $disklog

fi

done

本文转自  一招拜师  51CTO博客,原文链接:http://blog.51cto.com/sadoc/1943283

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
docker安装教程(windows和linux[centos8])
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、 bare metal、OpenStack 集群和其他的基础应用平台。
15 0
魏红斌冬季实战营第一期:玩转云服务器(有干货)
本文均为本人实操整理,请勿搬运,学习交流可以随时评论---魏红斌
26 0
Docker的安装和Redis容器
Docker的安装和Redis容器 Docker安装,环境:虚拟机CentOS 8;阿里云镜像加速;Redis容器创建。 CentOS 8的安装就不在这里演示了
13 0
写业务代码有成长机会吗
一乐兄弟写过一篇[做业务系统如何成长为架构师],深有同感,包接口的例子可以往下说说。各家都在搞开放API ,好不好用只有用过才知道。比如加签验签,有没有不同语言的client demo可以参考,参数说明是否清晰等。
11 0
多点生活的分布式服务框架DSF(下)
多点生活的分布式服务框架DSF(下)
9 0
求解质量熵
摘要:软件系统的稳定性,主要决定于整体的系统架构设计,然而也不可忽略编程的细节,正所谓“千里之堤,溃于蚁穴”,一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃。我将和大家聊一聊软件质量稳定性之殇,分多篇刊发。
5 0
【Linux:开源操作系统】
主要内容 一、 关闭Windows防火墙 关闭Windows防火墙,不要使用wifi共享精灵等软件。 二、 Linux简介
16 0
我的历程分享
简述我的学习生涯
7 0
软件质量稳定性之殇
摘要:软件系统的稳定性,主要决定于整体的系统架构设计,然而也不可忽略编程的细节,正所谓“千里之堤,溃于蚁穴”,一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃。我将和大家聊一聊软件质量稳定性之殇,分多篇刊发。
6 0
5723
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载