使用Shell脚本监控主机

news2025/1/16 20:52:38

实验环境

     某公司随着业务的不断发展,所使用的Linux服务器也越来越多,管理员希望编写一个简单的性 能监控脚本,放到各服务器中,当监控指标出现异常时发送告警邮件。

需求描述

> 编写名为sysmon.sh的 Shell 监控脚本。

> 监控内容包括CPU使用率、内存使用率、根分区的磁盘占用率。

> 百分比只需精确到个位,如7%、12%、23%等。

> 出现以下任一情况时告警:磁盘占用率超过90%、CPU使用率超过80%、内存使用率超过 90%。

> 告警邮件通过 mail 命令发送到monitor@bdqn.com。

> 结合crond服务,每半小时执行一次监控脚本。 

 

[root@node01 ~]# vim sysmon.sh
#!/bin/bash
# 监控CPU
CUG=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}'))
echo "CPU使用率:$CUG %"

# 监控内存
MUG=$(expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))
echo "内存使用率:$MUG %"

# 监控硬盘
DUG=$(df -h | grep "/$" | awk '{print $5}' | awk -F% '{print $1}')
echo "磁盘占用率:$DUG %"

# 设置警告日志文件,告警邮箱
# 日志文件的变量
ALOG="/mnt/alert.txt"
# 发送到邮箱的变量
AMAIL="root"
# 判断是否记录告警
if [ $CUG -gt 20 ]
then
    echo "CPU占用率:$CUG %" >> $ALOG
fi

if [ $MUG -gt 6 ]
then
    echo "内存使用率:$MUG %" >> $ALOG
fi

if [ $DUG -gt 20 ]
then
    echo "磁盘占用率:$DUG %" >> $ALOG
fi

# 判断是否方式告警邮件,最后删除告警日志文件
if [ -f $ALOG ]
then
     cat $ALOG | mail -s "Host Alert" $AMAIL
     rm -rf $ALOG
fi

 

[root@node01 ~]# chmod +x sysmon.sh  //添加执行权限

[root@node01 ~]# ./sysmon.sh

> 结合crond服务,每半小时执行一次监控脚本。

[root@node01 ~]# crontab -e

30 * * * * /root/sysmon.sh

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

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

相关文章

《数据结构、算法与应用C++语言描述》- 最小输者树模板的C++实现

输者树 完整可编译运行代码见:Github::Data-Structures-Algorithms-and-Applications/_31loserTree 输者树:每一个内部节点所记录的都是比赛的输者,晋级的节点记录在边上。本文中,赢者是分数较低的那个,输者是分数高…

安捷伦Agilent 34970A数据采集

易学易用 从34972A简化的配置到内置的图形Web界面,我们都投入了非常多的时间和精力,以帮助您节约宝贵的时间。一些非常简单的东西,例如模块上螺旋型端子连接器内置热电偶参考结、包括众多实例和提示的完整用户文档,以及使您能够在开机数分钟后…

【C++初阶】学习string类的模拟实现

目录 前言:一、创建文件和类二、实现string类2.1 私有成员和构造函数2.2 析构函数2.3 拷贝构造函数2.3.1 写法12.3.2 写法2 2.4 赋值重载函数2.4.1 写法12.4.2 写法2 2.5 迭代器遍历访问2.6 下标遍历访问2.7 reserve2.8 resize2.9 判空和清理2.10 尾插2.10.1 尾插字…

【mask转json】文件互转

mask图像转json文件 当只有mask图像时,可使用下面代码得到json文件 import cv2 import os import json import sysdef func(file:str) -> dict:png cv2.imread(file)gray cv2.cvtColor(png, cv2.COLOR_BGR2GRAY)_, binary cv2.threshold(gray,10,255,cv2.TH…

在线考试系统-软件与环境

一. 软件 1.Navicat、phpstudy、Idea、Vsode 参考 网盘链接 二.配置文件 1.Nodejs、JDK 参考 网盘链接 三.安装运行 1.下载网盘内的软件,并进行安装 2.安装对应的配置文件并进行配置 (1)VsCode 运行 a.新建terminal b.输入命令 npm run dev c.启动成功 (2)Php…

力扣题目学习笔记(OC + Swift) 14. 最长公共前缀

14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 方法一 竖向扫描法 个人感觉纵向扫描方式比较直观,符合人类理解方式,从前往后遍历所有字符串的每一列,比较相同列上的…

通过https协议访问Tomcat部署并使用Shiro认证的应用跳转登到录页时协议变为http的问题

问题描述: 在最近的一个项目中,有一个存在较久,并且只在内部城域网可访问的一个使用Shiro框架进行安全管理的Java应用,该应用部署在Tomcat服务器上。起初,应用程序可以通过HTTP协议访问,一切运行都没…

海外代理IP如何选择?如何避开误区?

近年来,我国互联网商业保持持续发展的状态大环境的优化,大大小小的企业都想乘胜追击,大展宏图,积极推动各项数据业务的进程。 而对于跨境业务来说,代理IP是不可或缺的重要工具之一,市面上代理IP类型众多&a…

基于k6和python进行自动化性能测试

摘要:在性能测试中,达到相应的性能指标对于一个软件来说十分重要,在本文中,将介绍一种现代化性能测试工具k6。 import http from k6/http; import { sleep } from k6; export default function () {http.get(https://test-api.co…

Java对接腾讯多人音视频房间示例

最近在对接腾讯的多人音视频房间,做一个类似于腾讯会议的工具,至于为什么不直接用腾讯会议,这个我也不知道,当然我也不敢问 首先是腾讯官方的文档地址:https://cloud.tencent.com/document/product/1690 我是后端所以…

大一C语言查缺补漏1 12.2

学习方向非C语言方向,但是专业是。。 仅供参考,,祝大家期末考试顺利。 对于二维数组定义,要给出明确的定义 eg:double a [21][4] int a [ ][3] {1,2,3,4,5,6} 不可以是:int a [ ][3]; 在c…

SpringBlade export-user SQL 注入漏洞复现

0x01 产品简介 SpringBlade 是一个由商业级项目升级优化而来的 SpringCloud 分布式微服务架构、SpringBoot 单体式微服务架构并存的综合型项目。 0x02 漏洞概述 SpringBlade v3.2.0 及之前版本框架后台 export-user 路径存在安全漏洞,攻击者利用该漏洞可通过组件customSqlS…

Flutter实现丝滑的滑动删除、移动排序等-Dismissible控件详解

文章目录 Dismissible 简介使用场景常用属性基本用法举例注意事项 Dismissible 简介 Dismissible 是 Flutter 中用于实现可滑动删除或拖拽操作的一个有用的小部件。主要用于在用户对列表项或任何其他可滑动的元素执行删除或拖动操作时,提供一种简便的实现方式。 使…

sed 命令详解

1. 强大的编辑工具 sed是一个“作交互式的”面向字符流的编辑器。输入一般来自文件,但是也可以直接来自键盘。输出在默认情况下输出到终端屏幕上,但是也可以输出到文件中,sed通过解释脚本来工作,该脚本指定了将要执行的动作。 s…

【java】java学习笔记

1. 快速入门 // Hello类 public class Hello {// main方法public static void main(String[] args) {System.out.println("hello world!");} } 在控制台输入以下命令,对.java文件(源文件)进行编译操作,生成Hello.clas…

Azure Machine Learning - 提示工程高级技术

本指南将指导你提示设计和提示工程方面的一些高级技术。 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师&#xff0c…

探索 MajicStudio:一款多功能视频编辑软件

一、产品简介 MajicStudio是一款基于人工智能的图片编辑与设计工具,拥有简洁的界面与丰富功能。采用深度学习和计算机视觉技术可以自动识别图片要素。 二、应用场景 MajicStudio的AI图像功能适用于多场景,包括艺术设计、电商、游戏和文创等场景。 三、…

Vim:文本编辑的强大利器

Vim:文本编辑的强大利器 概述1. 工作模式1.1 普通模式1.2 插入模式1.3 可视模式 2. 代码示例2.1 移动光标2.2 复制和粘贴2.3 查找和替换 3. 应用场景结语 概述 Vim(Vi Improved)是一款强大的文本编辑器,广泛应用于Linux和Unix系统…

python线程中的semaphore信号量是什么

python中的线程之semaphore信号量 semaphore是一个内置的计数器,每当调用acquire()时,内置计数器-1;每当调用release()时,内置计数器1。 计数器不能小于0,当计数器为0时,acquire()将阻塞线程直到其他线程…

【lesson16】MySQL表的基本操作update(更新)和delete(删除)

文章目录 表的基本操作介绍update建表测试 delete建表测试 表的基本操作介绍 CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) update 建表 这里就不建表了,因为之前就建过了,这里给大家…