当前位置 : 主页 > 操作系统 > centos >

Linux—编写shell脚本监控主机

来源:互联网 收集:自由互联 发布时间:2022-06-20
编写 SHELL 脚本监控主机 1、 用 vi 命令在 /root 目录是新建一个脚本文件 sysmon.sh : 内容如下:       #!/bin/bash       dug=$(df -h | grep "/$" | awk '{print $4}' | awk -F% '{print $1}')  

编写SHELL脚本监控主机

1、vi命令在/root目录是新建一个脚本文件sysmon.sh

内容如下:

      #!/bin/bash

      dug=$(df -h | grep "/$" | awk '{print $4}' | awk -F% '{print $1}')

      cug=$(expr 100 - $(mpstat | tail -1 | awk '{print $10}' | awk -F. '{print $1}'))

      mug=$(expr $(free | grep "cache:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))

      alog="/tmp/alert.txt"

      AMAIL="root@localhost.localdomain"

      if [ $dug -gt 3 ]

      then

      echo "磁盘占用率:$dug%" >> $alog

      fi

      if [ $cug -gt 2 ]

      then

      echo "CPU使用率:$cug%" >> $alog

      fi

      if [ $mug -gt 2 ]

      then

      echo "内存使用率:$mug%" >> $alog

      fi

      if [ -f $alog ]

      then

      cat $alog | mail -s "Host Alert" $AMAIL

      rm -fr $alog

      fi

   截图如下:

Linux—编写shell脚本监控主机_Linux自带邮件使用等

          (这里使用率都取的小值,为了使验证结果更加明显,根据实际环境而有所不同)

附:

a:使用df命令提取根分区的磁盘占用率:如下图所示:

使用df-h命令查看磁盘分区的使用情况,其中根分区的已用空间是8%

Linux—编写shell脚本监控主机_Linux自带邮件使用等_02

用如下图中的命令可以过滤磁盘的已用空间

[root@shell ~]# df -h | grep "/$" | awk '{print $4}' | awk -F% '{print $1}'

Linux—编写shell脚本监控主机_Linux脚本监控主机_03

b:使用mpstat命令提取CPU使用率(需要先安装sysstat软件包)。如下图所示:其中%idle表示CPU空闲时间百分比

Linux—编写shell脚本监控主机_Linux自带邮件使用等_04

Linux—编写shell脚本监控主机_linux shell脚本_05

用如下图中的命令可以得到CPU已用空间并赋值给变量CUG

[root@shell ~]# cug=$(expr 100 - $(mpstat | tail -1 | awk '{print $10}' | awk -F. '{print $1}'))[root@shell ~]# echo $cug

Linux—编写shell脚本监控主机_LINUX主机日常监控_06

c:使用free命令查看内存的使用情况。其中划红线的表示空余内存。

Linux—编写shell脚本监控主机_LINUX主机日常监控_07

1行:

total 内存总数: 1035108
used 已经使用的内存数: 500928
free 空闲的内存数: 534180
shared 当前已经废弃不用,总是0
buffers Buffer Cache内存数: 28968
cached Page Cache内存数: 348204

关系:total = used + free

2行:
-/+ buffers/cache的意思相当于:
-buffers/cache 的内存数:123756 (等于第1行的 used - buffers - cached)
+buffers/cache 的内存数: 911352 (等于第1行的 free + buffers + cached)

所以:-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

第三行单独针对交换分区:

为了提高磁盘存取效率, Linux做了一些精心的设计除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer CachePage Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

用如下图中的命令可以得到内存使用率并赋值给变量mug

[root@shell ~]# mug=$(expr $(free | grep "cache:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))

[root@shell ~]# echo$mug

Linux—编写shell脚本监控主机_linux shell脚本_08

2、使用chmod命令给sysmon.sh文件增加执行(x)权限
Linux—编写shell脚本监控主机_Linux自带邮件使用等_09

3、测试sysmon.sh脚本的执行情况

a:本人实验环境为Linux 5.5,使用其本身自带的sendmail发送邮件验证:

Linux—编写shell脚本监控主机_Linux自带邮件使用等_10

【补充:所有发邮件的端口都是 25号端口ICMP协议】

b:确认有可用的邮件服务器,然后调低监控阈值,执行sysmon.sh脚本进行测试

c:查收名为root@localhost.localdomain的邮箱(生产环境写具体报警邮箱),确认警告邮件内容

Linux—编写shell脚本监控主机_linux shell脚本_11

邮件内容如下:

Linux—编写shell脚本监控主机_linux shell脚本_12

4、设置crontab计划任务,每隔半小调用一次sysmon.sh脚本程序,并重新启动crond服务。

Linux—编写shell脚本监控主机_Linux自带邮件使用等_13

Linux—编写shell脚本监控主机_Linux脚本监控主机_14

5、操作完成。

欢迎关注微信公众号:小温研习社

Linux—编写shell脚本监控主机_linux shell脚本_15

上一篇:【APP】取代top工具的Linux运维利器--htop
下一篇:没有了
网友评论