shell脚本监控系统负载、CPU和内存使用情况

#一.编写系统负载监控的脚本文件
#!/bin/bash

########################################################################
#This scripts is checking the system load,vision 0.1
#Author:HeJunyi
#E-mail:158****[email protected]
########################################################################

#使用uptime命令监控linux系统负载变化
 
#提取本服务器的IP地址信息
IP=`ifconfig eth1 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
 
#抓取cpu的总核数
cpu_num=`grep -c ‘model name‘ /proc/cpuinfo`
 
#抓取当前系统15分钟的平均负载值
load_15=`uptime | awk ‘{print $NF}‘`
 
#计算当前系统单个核心15分钟的平均负载值,结果小于1.0时前面个位数补0。
average_load=`echo "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a" | bc`  ##scale表示小数精度位数
 
#取上面平均负载值的个位整数
average_int=`echo $average_load | cut -f 1 -d "."`
 
#设置系统单个核心15分钟的平均负载的告警值为0.70(即使用超过70%的时候告警)。
load_warn=0.70
 
#当单个核心15分钟的平均负载值大于等于1.0(即average_int个位整数大于0);如果小于1.0则进行二次比较
if (($average_int > 0)); then
      echo "$IP服务器15min平均负载达到$average_load,超过警戒值1.0,请立即处理!"
else
#当前系统15分钟平均负载值与告警值进行比较(当大于成立会返回1,小于时会返回0 )
load_now=`expr $average_load \> $load_warn`
 
#如果系统单个核心15分钟的平均负载值大于告警值0.70(返回值为1),则发邮件给管理员
 if (($load_now == 1)); then
    echo "$IP服务器15min平均负载达到$average_load,超过警戒值0.00,请及时处理"
 fi
fi

二、监控系统cpu的情况
#!/bin/bash

########################################################################
#This scripts is checking the cpu,vision 0.1
#Author:HeJunyi
#E-mail:158****[email protected]
########################################################################
 
#提取本服务器的IP地址信息
IP=`ifconfig eth1|grep "inet addr"|awk ‘{print $2}‘|cut -f2 -d":"`
 
#取当前空闲cpu百份比值
cpu_id=`top -b -n1|grep "Cpu"|awk ‘{print $5}‘|cut -f1 -d"%"`

#取当前空闲cpu百份比值的整数部分
cpu_int=`echo $cpu_id|cut -f1 -d"."`
 
#设置空闲cpu的告警值为20%(即剩余小于20%)
if (($cpu_id < 20)); then
 echo "$IP服务器cpu剩余:$cpu_id%,请及时处理"
else
 echo "$IP服务器cpu剩余:$cpu_id%"
fi

三、监控系统内存
#!/bin/bash

########################################################################
#This scripts is checking the free_mem,vision 0.1
#Author:HeJunyi
#E-mail:158****[email protected]
########################################################################
 
#抓取物理内存free值
echo Mem-free: `free -m | grep Mem | awk ‘{print $4}‘`M  
 
#抓取缓冲区的free值
echo buffers/cache-free: `free -m | grep - | awk ‘{print $4}‘`M
 
#抓取Swap分区free值
echo Swap-free: `free -m | grep Swap | awk ‘{print $4}‘`M

四、监控系统交换分区swap的情况
#!/bin/bash

########################################################################
#This scripts is checking the swap,vision 0.1
#Author:HeJunyi
#E-mail:158****[email protected]
########################################################################
 
#提取本服务器的IP地址信息
IP=`ifconfig eth1 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
 
#系统分配的交换分区总量
swap_total=`free -m | grep Swap | awk ‘{print  $2}‘`
 
#当前剩余的交换分区free大小
swap_free=`free -m | grep Swap | awk ‘{print  $4}‘`
 
#当前已使用的交换分区used大小
swap_used=`free -m | grep Swap | awk ‘{print  $3}‘`

#设置交换分区的告警值为20%
swap_warn=0.20

if (($swap_used != 0)); then
 
#如果交换分区已被使用,则计算当前剩余交换分区free所占总量的百分比,用小数来表示,要在小数点前面补一个整数位0
   swap_per=`echo "scale=2;b=$swap_free/$swap_total;if(length(b)==scale(b)) print 0;print b"|bc`

#当前剩余交换分区百分比与告警值进行比较(当小于告警值20%时会返回1,小于大于时会返回0 )
   swap_now=`expr $swap_per \< $swap_warn`
 
#如果当前交换分区使用即剩余小于20%(上面的返回值等于1)
  if (($swap_now ==1));then
  echo "$IP服务器swap交换分区使用率达到80%,只剩下"$swap_free"M 未使用,请及时处>理!"
 fi
fi

时间: 2024-10-26 11:26:54

shell脚本监控系统负载、CPU和内存使用情况的相关文章

pythton3.7脚本---监控系统的CPU、内存、磁盘等信息

对于标题的内容shell脚本也可实现,想着最近在学python,就用Python实现一下,也算是对python的用法深入了解一下 背景:已有zabbix监控,脚本只实现对系统数据信息的获取.再对接zabbix系统进行告警动作.这里简单介绍一下psutil这个模块,在python中,使用该模块基本可以获取所有你想要的系统的性能数据 先下载:pip3 install psutil导入即可使用 可以看红框标出来的基本涵盖了CPU.内存.磁盘.网络等信息可以获取到具体某项数据#!/usr/bin/pyt

【sehll学习】linux运维一个简单shell脚本监控系统内存

学习shell脚本入门后,慢慢要尝试编写一些脚本练练手,在这先简单的学习写个系统内存的监控. 1.首先先要确定一下截取一下需要关注的内存使用值,可使用free 命令来操作 free -m 显示 一般在监控内存是我们都是截取 第三行(-/+ buffers/cache)的值.确定后可以使用管道线和grep命令来获取这个的值. free -m | grep - | awk  '{print $4}' 获取到他的值为  858 当中 grep -  就是匹配一下要选取的内容,不太熟悉的可以学习一下gr

监控系统负载与CPU、内存、硬盘、登录用户数,超出警戒值则发邮件告警。

[email protected]:~$ cat warning.sh #!/bin/bash #监控系统负载与CPU.内存.硬盘.登录用户数,超出警戒值则发邮件告警.    前提安装mail服务  [email protected] #提取本服务器的IP地址信息 IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`    # 1.监控系统负载的变化情况

shell脚本 使用 uptime 命令监控系统负载

#!/bin/bash #Author:yanconggod #date:2017-01-19 #version:1.0 # 使用 uptime 命令监控系统负载 POSTFIX_PATH="/usr/sbin/postfix" MAILX_PATH="/usr/bin/mailx" Email="[email protected]" # 获取本机IP地址 IP=`ifconfig enp2s0|grep '\binet\b'|awk '{pri

用shell脚本监控linux系统 自动发送邮件

此脚本可以做一个定时的检测,超出设定的值,即往邮箱发送警告 脚本用到bc,sendmail,163邮箱, yum install bc #!/bin/bash #System Monitoring Script while [ 1 ] do #本机需开启postfix或sendmail服务. #报警邮件地址设置 [email protected] [email protected] #设置脚本运行间隔时间.单位(秒). RUNTIME=900 #内存使用率监控设置,单位 (%) MEMTHRE=

【Python运维脚本】Python监控系统负载

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected]126.com #Python监控系统负载 """ 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 """ #!/usr/bin/pytho

使用shell脚本监控少量服务器并发送微信告警信息

01. 概括 1.0 脚本更新地址Git更新地址:shell_monitor_script.sh文章原文地址:使用shell脚本监控少量服务器并发送微信告警信息 1.1 前提:平台系统:linux系统下接收信息:微信企业号 1.2 脚本说明需要修改微信接口脚本对应参数的修改:包括IP,告警阈值等 1.3 脚本使用该脚本监控包括Disk.CPU.MEM.LOAD等主机资源,以及docker服务和docker容器.将该脚本附件假定放于:/home/mai/.check_host.sh.那么在定时任务

【转载】用shell脚本监控进程是否存在 不存在则启动的实例

用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]thenecho "start process....."elseecho "runing....."fi#####processString 表示进程特征字符串,能够查询到唯一进程的特征字符串0表示存在的$? -ne 0 不存在,$? -eq 0 存在 ---------

用shell脚本监控进程是否存在 不存在则启动的实例附带if判断详细条件

#!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]thenecho "start process....."elseecho "runing....."fi#####processString 表示进程特征字符串,能够查询到唯一进程的特征字符串0表示存在的$? -ne 0 不存在,$? -eq 0 存在 --------------------------------------------