Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用于自动监控磁盘使用情况的 Shell 脚本

用于自动监控磁盘使用情况的 Shell 脚本

原创
作者头像
用户9239730
发布于 2021-11-30 04:25:55
发布于 2021-11-30 04:25:55
1.1K00
代码可运行
举报
文章被收录于专栏:运维技术知识运维技术知识
运行总次数:0
代码可运行

在文章中,我们写一个 shell 脚本,它在 crontab 中指定固定时间间隔监控磁盘使用情况,并在报告达到指定的阈值时通过电子邮件发送报告。

首先,需要确保系统安装了mail命令和postfix发送邮件服务。下面是在Centos8中安装的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# yum -y install mailx postfix
[root@localhost ~]# systemctl enable --now postfix

下面使用mail命令发送邮件测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# echo "This message will go into the body of the mail." | mail -s "Testing from the server." root@localhost

本文不讲解如何配置smtp服务。

测试磁盘使用情况的脚本

以下是测试磁盘使用情况并将报告发送到指定邮箱的脚本。脚本的解释在代码片段之后给出。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# vim  disk-monitor.sh
#!/bin/bash

MAILID="admin@xxxx.com"

VALUE=80

SERVERNAME=$(hostname)

MAIL=/bin/mail

for line in $(df -hP | egrep '^/dev/' | awk '{ print $1 "_:_" $5 }')
  do
    FILESYSTEM=$(echo "$line" | awk -F"_:_" '{ print $1 }')
    DISK_USAGE=$(echo "$line" | awk -F"_:_" '{ print $2 }' | cut -d'%' -f1 )

    if [ $DISK_USAGE -ge $VALUE ];
    then
      EMAIL="$SERVERNAME - $(date): $FILESYSTEM Exceeded the threshold VALUE\n"
      EMAIL="$EMAIL\n Usage Details\n Current Usage:($DISK_USAGE%) Threshold value: ($VALUE%)"
      echo -e "$EMAIL" | $MAIL -s ""$SERVERNAME" Disk Usage Alert: Needs Attention!" "$MAILID"
    elif [ $DISK_USAGE -lt $VALUE ];
    then
      EMAIL="$EMAIL\n$FILESYSTEM ($DISK_USAGE%) is lessthan the threshold ($VALUE%)"
      EMAIL="$EMAIL\n"
      echo -e "$EMAIL" | $MAIL -s ""$SERVERNAME" Disk Usage Alert: Threshold Not Reached" "$MAILID"
  fi
done

监控脚本说明

上述脚本使用df -hP命令获取内存信息。

环境变量MAILID保存必须在其中发送报告的邮箱地址。

VALUE 保存要设置的阈值。

SERVERNAME 保存服务器的主机名,用于电子邮件通知中的服务器标识。

使用 for 循环,它将遍历所有具有“/dev”挂载点的文件系统。然后它将文件系统名称和磁盘使用百分比保存到两个变量FILESYSTEMDISK_USAGE

使用上述变量,磁盘使用量等于阈值 VALUE 变量。根据结果,将向指定的邮箱发送一封电子邮件。

监控脚本执行

下面需要修改一下disk-monitor.sh脚本的权限,为它添加可执行权限:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# chmod +x disk-monitor.sh

使用下面方式运行脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# ./disk-monitor.sh

自动化监控过程

手动运行脚本没有任何意义,因为我们希望自动运行该过程。自动运行该过程的最佳方法是将脚本添加到 crontab配置文件中。

使用下面方式打开crontab:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# crontab -e

将下面内容添加到配置文件中: */5 * * * * sh /home/ec2-user/disk-monitor.sh

总结

在文章中我们写了一个 shell 脚本,它在 crontab 中指定固定时间间隔监控磁盘使用情况,并在报告达到指定的阈值时通过电子邮件发送报告。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
shell编程——实践3(监控告警)
通过使用这样的脚本,运维团队可以更加高效地管理服务器资源,减少潜在的风险,并提高整体的服务质量。
奇零才子
2024/08/06
1590
Ubuntu服务器性能监控及邮件报警
全栈开发日记
2024/11/23
1423
Ubuntu服务器性能监控及邮件报警
Linux/Unix shell 脚本监控磁盘可用空间
    Linux下监控磁盘的空闲空间的shell脚本,对于系统管理员或DBA来说,必不可少。下面是给出的一个监控磁盘空间空间shell脚本的样本,供大家参考。
Leshami
2018/08/13
9790
自动化运维:编写基本的自动化脚本
在现代IT运维中,自动化脚本的使用已经成为提高效率和减少人为错误的关键手段。本文将详细介绍如何编写基本的自动化脚本,帮助运维人员更好地管理和维护系统。我们将以Shell脚本和Python脚本为例,展示如何实现常见的运维任务。
Echo_Wish
2024/09/29
4140
自动化运维:编写基本的自动化脚本
堆内存以及磁盘空间使用情况预警
使用知行之桥EDI系统时,由于业务数据量的增多,难免会遇到一些系统异常情况,为了保证企业生产环境的稳定运行,EDI系统自带了错误邮件通知功能。此功能保证了在EDI系统自动处理数据的过程中可以将异常信息及时告知用户,使用户收到邮件及时处理,保证数据的正常传输。
知行软件EDI
2022/04/12
7380
堆内存以及磁盘空间使用情况预警
如何用 10 行 bash shell 脚本监控 Linux?
监控我们的环境对于服务器运维来说至关重要,尤其是在部署新的应用程序时。如今,公司每天都使用开源解决方案来监控系统资源。但是,当出于测试的目的来监控一定时间时,bash 脚本会派上用场。
IT运维技术圈
2022/08/05
3.7K0
如何用 10 行 bash shell 脚本监控 Linux?
学习笔记0618----shell脚本(二)
格式:函数必须要放在最前面,function 后是函数的名字,并且 function 这个单词是可以省略掉的,花括号{} 里面为具体的命令
嘻哈记
2020/11/24
1.7K0
【小项目】:使用shell编写一个简单的告警系统
在这之前的笔记里,将大部分的常用shell基本语法已经介绍完了,在这之后就是实战一些小项目了。这个项目是做一个简单的告警系统,用于完成一些简单个性化的需求。
端碗吹水
2020/09/23
5720
【小项目】:使用shell编写一个简单的告警系统
服务器磁盘监控脚本分享(含报警邮件)
在日常的运维工作中,我们经常会对服务器的磁盘使用情况进行巡检,以防止磁盘爆满导致的业务故障. 如果能编写一个合理完善的监控脚本,当磁盘使用率达到我们设置的阀值时,就自动发送报警邮件,以便我们及时获悉到快爆满的磁盘情况! 下面分享一个脚本: 监控本机的根磁盘和home盘,当根磁盘使用率达到90%和home磁盘使用率达到95%的时候,发报警邮件至wangshibo@huanqiu.cn和liugang@huanqiu.cn [root@haunqiu-beta ~]# df -h Filesystem
洗尽了浮华
2018/01/22
1.4K0
服务器磁盘监控脚本分享(含报警邮件)
自动化部署nginx负载均衡及监控短信报警
开发脚本自动部署及监控 1.编写脚本自动部署反向代理、web、nfs; 要求: I、部署nginx反向代理三个web服务,调度算法使用加权轮询; II、所有web服务使用共享存储nfs,保证所有web都对其有读写权限,保证数据一致性; 2.编写监控脚本,监控集群内所有服务存活状态,内存、磁盘剩余率检测,异常则发送报警邮件 3.编写计划任务,定时运行监控脚本,完成监控操作
超蛋lhy
2018/08/31
1.1K0
基于crontab和shell实现监控告警
市面上有很多开源的监控告警工具,提供了丰富的、可视化的监控指标,以及告警能力,而对于服务器维度,抛开业务指标外,我们关注的无外乎cpu使用率、内存使用率和磁盘使用率等是否超过了我们既定的安全阈值,如果超过了则推送告警通知,来引起研发人员的关注,从而采取相应的应对措施。
叔牙
2024/05/21
2430
基于crontab和shell实现监控告警
精简运维流程:grep、awk、sed三剑客的实用脚本
以下这些操作不用刻意去背或记,只要多加练习,自然而然就会用。我这里只挑常用的参数,更详细的参数,大家可以自行搜索查阅。
希里安
2024/01/22
3640
精简运维流程:grep、awk、sed三剑客的实用脚本
告警系统主脚本、主配置文件、监控项脚本 原
作用: 主脚本作为一个入口,判断某服务或项目是否需要监控调用需要监控的项目的子脚本。
阿dai学长
2019/04/03
5310
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
yuanfan2012
2024/03/21
3830
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
系统垃圾文件清理问题:系统垃圾文件清理不当,占用大量磁盘空间
是山河呀
2025/02/08
1980
使用 shell 脚本监控 Linux 主机
编写以下脚本命令: [root@localhost sh]# vim sysmon.sh #!/bin/bash #提取性能监控指标(磁盘占用、CPU使用、内存使用) DUG=$(df -h | grep "/$" | awk '{print $5}' | awk -F% '{print $1}') CUG=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}')) MUG=$(expr $(free | gre
小手冰凉
2019/09/10
2.2K0
Python 3.x从基础到实战 - 检查磁盘可用空间
在 Linux 服务器上,磁盘空间的使用情况是一个非常重要的指标。如果服务器上的磁盘空间不足,可能会导致服务器崩溃,影响网站的正常运行。为了避免这种情况的发生,我们需要定期检查服务器上的磁盘空间,并及时清理不必要的文件。本文将介绍如何使用 Python 3脚本检查 Linux 服务器上的磁盘空间。
TinyZzh
2023/05/08
7720
Python 3.x从基础到实战 - 检查磁盘可用空间
系统缓存清理问题:系统缓存清理不当,影响系统性能
是山河呀
2025/02/08
2450
系统清理问题:系统清理不彻底,占用大量资源
是山河呀
2025/02/08
920
Linux运维常用shell脚本之系统管理实例
写一个配置文件保存被监控主机SSH连接信息,文件内容格式:主机名 IP User Port
菲宇
2022/12/21
3.1K0
推荐阅读
相关推荐
shell编程——实践3(监控告警)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验