linux自动化内存监控与告警

news2025/2/25 1:32:57

文章目录

  • 前言
  • 一、脚本实现
    • 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_TO
    echo '邮件发送成功'
fi

exit 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脚本,如果检测到内存使用超过设置阈值就会发邮件通知。


三、通知结果示例

通知结果示例如下。

在这里插入图片描述


总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1914292.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

fastadmin框架后台列表固定第一行列表固定头部

在列表中,如果列表字段很多,并且每页数量很多,往下拉的时候就不好辨别数据是哪个字段的,对用户造成不好的浏览体验。 通过以下方法,可以实现将列表的第一行,也就是头部,固定在第一行显示,这样就能轻松辨别每个数据对应是哪个字段的,增加用户的使用体验。 打开项目的…

Java面试八股之为什么要使用Redis

为什么要使用Redis 1. 性能提升:高速缓存 要点:Redis作为内存数据库,数据存放在内存中,访问速度远超传统的关系型数据库(如MySQL)。在项目中,将热点数据(如经常被查询但不频繁变更…

AI大模型知识点大梳理_ai大模型的精度以下哪项描述的准确

AI大模型是什么 AI大模型是指具有巨大参数量的深度学习模型,通常**包含数十亿甚至数万亿个参数。**这些模型可以通过学习大量的数据来提高预测能力,从而在自然语言处理、计算机视觉、自主驾驶等领域取得重要突破。 AI大模型的定义具体可以根据参数规模…

汇凯金业:天然橡胶的用途和作用

天然橡胶是一种由橡胶树(Hevea brasiliensis)的乳汁加工而成的弹性体,具有弹性好、强度高、耐磨性好、耐寒性好、电绝缘性好、易于加工等优点,是世界上重要的战略物资和不可缺少的工业原料。 天然橡胶的用途十分广泛,主要应用于以下领域&…

ASUS NUC 14 Pro+:掌中宇宙,性能无界

在这个追求多样性的斜杠时代,ASUS NUC 14 Pro 顺势而生,将浩瀚宇宙般的强大性能浓缩于方寸之间,它不仅是一款设备,更是助您探索多重身份的斜杠伙伴! 浑然天成,简约而不简单 小巧的机身、简约的线条、精致的…

康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(三)

在之前的两篇文章中(文末往期回顾中可查看),我们主要介绍了功能模型接口FMI的主要组成部分和一些使用场景,今天就以康谋自动驾驶仿真软件aiSim为例,来展示一下如何建立一个FMU并实现基于UDP和FMI联合仿真(c…

IT专业入门,高考假期预习指南(C++学习路线)

目录 IT专业入门,高考假期预习指南 一、V C的学习内容: 二、C学习书籍: 三、学习网站: 四、技术学习路线图: IT专业入门,高考假期预习指南 七月来临,各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束,而…

buuctf 二维码

文件下载下来是一个png的文件 做misc永远的好习惯就是先运行,后010 先运行,这个运行肯定就是扫码 啥也没有 里面还有个ZIP文件(zip的发明人名字是PK) 放在kali上binwalk分离 CTF工具隐写分离神器Binwalk安装和详细使用方法_binwalk下载-CSDN博客 里面有个text,需要密码 我…

安卓腾讯桌球多功能助手直装版

安卓13自测效果,安卓12-安卓12以下一定可以的,QQ登陆的话扫码登陆,两个手机,一个扫码,一个游戏,一个手机的话,你可以下载个虚拟机,然后本机直装,用虚拟机QQ扫码即可 微信…

美国商超入驻Homedepot,会成为传统家织厂家跨境赛道吗?

近年来,随着全球化步伐的加快和电子商务的蓬勃发展,越来越多的企业开始寻求跨境拓展的机会。在这样的背景下,美国知名的家居用品零售商超——Homedepot成为了许多国内外家织厂家关注的焦点。那么,美国商超入驻Homedepot究竟如何呢…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第56-agent自动发送短信

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第56-agent自动发送短信 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引…

MySQL六:内置函数

文章目录 1. 日期函数2. 字符串函数3. 数学函数4. 其它函数 1. 日期函数 2. 字符串函数 函数名描述charset(str)返回字符串字符集concat(string2 [,…])连接字符串instr(string,substring)返回substring在string中出现的位置,没有返回0ucase(string2)转…

论文学习——基于双重变异的动态多目标优化进化算法,具有不可检测的变化

论文题目:A Dual Mutation Based Evolutionary Algorithm for Dynamic Multi-Objective Optimization with Undetectable Changes 基于双重变异的动态多目标优化进化算法,具有不可检测的变化(Yuanchao Liu, Lixin Tang, Fellow, IEEE, Jinli…

always块敏感列表的相关报错,

在综合的时候,报错如下 Synthesis synth_1 [Synth 8-91] ambiguous clock in event control ["E:/FPGA/FPGA_project/handwrite_fft/handwrite_fft.srcs/sources_1/new/reg_s2p.v":140] 猜测报错原因(暂时没有时间寻找原因,后续在…

Windows 系统中常用的 CMD 命令及示例

CMD 命令是在 Windows 操作系统的命令提示符中输入的指令,用于执行各种系统管理、文件操作、网络配置等任务。 1、ipconfig 描述:显示windows网络配置信息的命令行工具。 它可以提供以下重要的网络配置详情: IP 地址:包括 IPv4 …

一个项目学习Vue3---事件处理

学习下面代码&#xff0c;了解Vue3的事件处理 <!--条件和列表渲染--> <template><el-button v-on:click"countAdd" type"primary">count{{ count }}</el-button><el-button click"countAdd" type"primary"…

人工智能算法工程师(中级)课程3-sklearn机器学习之数据处理与代码详解

大家好&#xff0c;我是微学AI,今天给大家分享一下人工智能算法工程师(中级)课程3-sklearn机器学习之数据处理与代码详解。 Sklearn&#xff08;Scikit-learn&#xff09;是一个基于Python的开源机器学习库&#xff0c;它提供了简单有效的数据挖掘和数据分析工具。Sklearn包含了…

AI绘画工具Stable Diffusion神级插件InstantID,AI换脸完美版!

随着AI绘画技术的不断迭代&#xff0c;AI换脸也日臻完美。 从路线上看&#xff0c;主要有两条路线&#xff0c;一是一张图换脸&#xff0c;优点是操作简便&#xff0c;缺点是换个姿势的时候&#xff0c;往往不太像&#xff0c;roop等插件是基于这个思路&#xff1b;二是炼制专…

ArcGis将同一图层的多个面要素合并为一个面要素

这里写自定义目录标题 1.加载面要素的shp数据 2.点击菜单栏的地理处理–融合&#xff0c;如下所示&#xff1a; 3.将shp面要素输入&#xff0c;并设置输出&#xff0c;点击确定即可合并。合并后的属性表就只有一个数据了。

【内网渗透】MSF渗透阶段的常用指令笔记

目录 渗透阶段划分 msfvenom 常用参数 各平台生成payload命令 Meterpreter Meterpreter的常用命令 基本命令 常用命令 针对安卓手机的一些命令 针对Windows的一些命令 文件系统命令 生成木马反弹shell(以linux靶机为例) 木马生成 配置监控 攻击利用 辅助模块 怎…