当前位置: 首页 > news >正文

linux自动化内存监控与告警

文章目录

  • 前言
  • 一、脚本实现
    • 1. shell脚本实现
    • 2. 脚本功能概览
  • 二、设置定时执行
    • 1. 编辑cron任务表
    • 2. 设置定时任务
  • 三、通知结果示例
  • 总结


前言

在当今数字化与网络化日益普及的时代,系统管理与维护成为了确保业务连续性和数据安全的关键环节。其中,监控系统的健康状况与性能表现是必不可少的一环。本文档旨在介绍一个实用的bash脚本,该脚本能够实时监控系统的内存使用情况,并在内存使用率超过预设阈值时,自动发送警告邮件给系统管理员。通过这种自动化监控机制,可以及时发现内存使用问题,避免系统性能的下降或崩溃,从而保障业务的平稳运行。


一、脚本实现

1. shell脚本实现

#!/bin/bash# 配置
THRESHOLD=85        # 内存使用率阈值(%)
MAIL_TO="your-email@example.com"   # 接收邮件的地址# 检查内存使用率是否超过了阈值
MEMORY_USAGE=$(free | awk 'NR==2{printf "%.2f\n", $3*100/$2 }')
if (( $(echo "$MEMORY_USAGE > $THRESHOLD" | bc -l) )); then# 找出占用空间较大的目录LARGE_DIRS=$(du -ah --exclude='/proc' / | sort -hr | head -n 10)# 获取主机的ip地址ip_addr=$(ip addr | grep 'inet ' | awk '{print $2}'| tail -n 1 | grep -oP '\d+\.\d+\.\d+\.\d+')# 构建邮件内容MESSAGE="主机名:$(hostname)\n主机IP:$ip_addr\n\n目前内存使用已经超过:$THRESHOLD%\n目前内存使用率为:$MEMORY_USAGE%\n\n占用内存最多的前10条数据是:\n$LARGE_DIRS"# 发送邮件echo -e "$MESSAGE" | mail -s "内存使用阈值警告" $MAIL_TOecho '邮件发送成功'
fiexit 0

把这个脚本保存为/opt/monitor/memory_monitor.sh文件,并添加执行权限。

chmod a+x /opt/monitor/memory_monitor.sh

2. 脚本功能概览

  • 内存使用率监控:脚本通过/proc/meminfo文件获取系统内存的总使用情况,计算当前内存使用率,并与预先设定的阈值(例如85%)进行比较。
  • 发送警告邮件:当内存使用率超过阈值时,脚本会自动查找系统中占用空间较大的目录,并获取主机的IP地址。然后,构建包含主机名、IP地址、当前内存使用率以及占用内存最多的前10个目录的邮件内容,通过mail命令发送给指定的邮箱地址。
  • 自动化与便捷性:通过将此脚本集成到系统任务调度中(如通过cron任务),可以实现定期监控与即时响应,极大地提高了系统管理的效率与响应速度。

二、设置定时执行

1. 编辑cron任务表

crontab -e

2. 设置定时任务

设置每天9点执行/opt/monitor/memory_monitor.sh脚本

0 9 * * * /opt/monitor/memory_monitor.sh

这样设置后每天9点都会执行/opt/monitor/memory_monitor.sh脚本,如果检测到内存使用超过设置阈值就会发邮件通知。


三、通知结果示例

通知结果示例如下。

在这里插入图片描述


总结

通过上述步骤,你可以轻松地在自己的服务器上设置内存监控和告警。这将帮助你在系统面临压力时迅速采取行动,防止潜在的问题升级为严重的故障。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • python图形用户界面和游戏开发_day010
  • Docker 容器网络及其配置说明
  • Foxit Reader:高效、安全、多功能的PDF阅读器技术解析
  • 软件开发(续).NET框架
  • MySQL MVCC
  • HybridCLR原理中的重点总结
  • WordPress的性能优化有哪些方法?
  • VIM三种模式的操作
  • PyTorch复现PointNet——模型训练+可视化测试显示
  • 【机器学习】机器学习详解-小白入门(随记)
  • Web学习day02
  • ONLYOFFICE8.1版本桌面编辑器——功能测评
  • 设计模式——单例模式
  • VB 函数
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【mysql】环境安装、服务启动、密码设置
  • Apache Zeppelin在Apache Trafodion上的可视化
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • PAT A1050
  • python 学习笔记 - Queue Pipes,进程间通讯
  • SOFAMosn配置模型
  • webpack+react项目初体验——记录我的webpack环境配置
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 初识 beanstalkd
  • 服务器之间,相同帐号,实现免密钥登录
  • 让你的分享飞起来——极光推出社会化分享组件
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • Python 之网络式编程
  • 数据库巡检项
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • $nextTick的使用场景介绍
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (初研) Sentence-embedding fine-tune notebook
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)JAVA使用POI操作excel
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (十三)MipMap
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net core 连接数据库,通过数据库生成Modell
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET编程——利用C#调用海康机器人工业相机SDK实现回调取图与软触发取图【含免费源码】
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @JsonFormat 和 @DateTimeFormat 的区别
  • @Pointcut 使用
  • @private @protected @public
  • [bzoj1324]Exca王者之剑_最小割
  • [CentOs7]iptables防火墙安装与设置
  • [Cloud Networking] Layer 2