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

监控系统|实验

需求一:监控系统中的cpu、内存、硬盘、使用率超过80%进行邮件告警  (以qq邮箱为例)

一、安装配置mailx

yum install -y mailx 

二、监控目标

  • cpu使用率
  • 内存使用率
  • 硬盘使用率
  • 告警条件:当任意资源使用率超过阈值时发送邮件

2.1日志目标

echo "$(date '+%Y-%m-%d %H:%M:%S'): $desc" >> /var/log/monitor.log

告警判断条件

CPU使用率80%

内存使用率80%

硬盘使用率80% 

三、脚本编写

#设置阈值

dateMax=80

#获取系统资源使用率
CPULimit=$(top -bn1 | grep "Cpu" | awk '{print 100- $8}')
RAMLimit=$(free -m | awk '/Mem:/ {printf("%.2f"), $3/$2*100}')

#CPU 内存 硬盘监控
if [ $(echo "$CPULimit > $dateMax" | bc) -eq 1 ] || \
[ $(echo "$RAMLimit > $dateMax" | bc) -eq 1 ] || \
[ $DISKLimit -gt $dateMax ]
then}

    title="资源告急"
desc="资源告急,CPU使用率高达${CPULimit}%,内存使用率高达${RAMLimit}%,磁盘使用率>高达${DISKLimit}%"
# 记录告警信息到日志
echo "$(date '+%Y-%m-%d %H:%M:%S'): $desc" >> /var/log/monitor.log
#发送邮件
echo "$desc" | mailx -s "$title" "2654371993@qq.com"
#检查邮件发送结果
if [ $? -eq 0 ]; then
echo "$(date '+%Y-%m-%d %H:%M:%S'): 告警邮件发送成功" >> /var/log/monitor.log
else
echo "$(date '+%Y-%m-%d %H:%M:%S'): 告警邮件发送失败" >> /var/log/monitor.log
fi
else
echo "$(date '+%Y-%m-%d %H:%M:%S'): 系统资源正常" >> /var/log/monitor.log
fi

需求二、监控系统中的IO await大于50进行邮件告警(使用qq邮箱)

脚本详情

#!/bin/bash
# 配置参数
IOMax=50
EMAIL="391038461@qq.com"
LOG_FILE="/var/log/monitor1.log"
# 使用 iostat -x 获取sda设备的IO使用率(%util)
IOLimit=$(iostat -x 1 2 | awk '/sda/ {print $NF}' | tail -1 | cut -d'.' -f1)
# 记录日志
echo "$(date '+%Y-%m-%d %H:%M:%S'): IO使用率 $IOLimit%" >> "$LOG_FILE"
# 判断是否超过阈值
if [[ $IOLimit > $IOMax ]]
then
title="IO告急"
desc="IO告急,当前IO使用率高达${IOLimit}%,超过阈值${IOMax}%"
# 记录告警日志
echo "$(date '+%Y-%m-%d %H:%M:%S'): $desc" >> "$LOG_FILE"
# 发送邮件
echo -e "Subject: $title\n\n$desc" | msmtp "$EMAIL"
# 检查发送结果
if [ $? -eq 0 ]; then
echo "$(date '+%Y-%m-%d %H:%M:%S'): IO告警邮件发送成功" >> "$LOG_FILE"
else
echo "$(date '+%Y-%m-%d %H:%M:%S'): IO告警邮件发送失败" >> "$LOG_FILE"
fi
fi

需求三、监控系统中的网络流量下载上传超过10M(可变)进行邮件告警(使用qq邮箱)

#!/bin/bash
NIC="ens33"
LIMIT=10  # 单位 M/s
NATLimit=10          # 限制值(用于判断)
EMAIL_TO="1261316341@qq.com"  
# 取两次字节数差值,算速率
rx1=$(cat /sys/class/net/$NIC/statistics/rx_bytes)
tx1=$(cat /sys/class/net/$NIC/statistics/tx_bytes)
sleep 1
rx2=$(cat /sys/class/net/$NIC/statistics/rx_bytes)
tx2=$(cat /sys/class/net/$NIC/statistics/tx_bytes)

# 差值 -> 每秒字节数,再换算成 MB/s
rx_rate=$(( (rx2 - rx1) / 1024 / 1024 ))
tx_rate=$(( (tx2 - tx1) / 1024 / 1024 ))

#引入上行速度和下行速度
echo "上传速率: ${tx_rate} MB/s"
echo "下载速率: ${rx_rate} MB/s"
#阈值判断
#网络监控
if [[ $rx_rate -gt $NATLimit ]] || [[ $tx_rate -gt $NATLimit ]];then
title="网络监控"
desc="网络带宽告急,下行速率高达${rx_rate},上行速率高达${tx_rate}MB/s,已超过 ${LIMIT}MB/s 的限制"
echo "警告: $desc"       
#发送邮件
(
echo "Subject: $title"
echo "From: system_monitor@$(hostname)"
echo "To: 1261316341@qq.com"
echo ""
echo "$desc"
echo ""
echo "监控时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "主机名: $(hostname)"
echo "网络接口: $NIC"
echo "阈值限制: ${LIMIT}MB/s"
) | mailx -a default "2654371993@qq.com" 2>/dev/null
# 检查邮件是否发送成功
if [ $? -eq 0 ]; then       
echo "邮件已发送 $EMAIL_TO"
else
echo "邮件发送失败,请检查 mailx 配置"
fi
fi

三、


文章转载自:

http://Wu5dar2V.fnmgr.cn
http://EA4urD1P.fnmgr.cn
http://C248cF6v.fnmgr.cn
http://juu1frdT.fnmgr.cn
http://7G38rNn9.fnmgr.cn
http://ykhtrd5U.fnmgr.cn
http://8DeSnx5W.fnmgr.cn
http://zOA2OIZe.fnmgr.cn
http://0Q1z5hsB.fnmgr.cn
http://Kl6QFZH0.fnmgr.cn
http://PzgyvkiS.fnmgr.cn
http://Tx5h5N1b.fnmgr.cn
http://5XrzDaAj.fnmgr.cn
http://LgvZ3rTB.fnmgr.cn
http://KXIIv8i2.fnmgr.cn
http://rCu21Y6O.fnmgr.cn
http://u25y5LZM.fnmgr.cn
http://zlBW3AAw.fnmgr.cn
http://KGhjzaJg.fnmgr.cn
http://GpIJOyft.fnmgr.cn
http://vFXGf9WY.fnmgr.cn
http://2DAbb8SV.fnmgr.cn
http://cgMrA5fG.fnmgr.cn
http://ITJCSn6w.fnmgr.cn
http://FZ2jzTC6.fnmgr.cn
http://J1iu8XBz.fnmgr.cn
http://ZWnqRDAz.fnmgr.cn
http://vEibHkWs.fnmgr.cn
http://FgR55jIF.fnmgr.cn
http://4qNVOXfz.fnmgr.cn
http://www.dtcms.com/a/371778.html

相关文章:

  • Jmeter快速安装配置全指南
  • 深入理解 IP 地址:概念、分类与日常应用
  • 高速公路监控录像车辆类型检测识别数据集:8类,6k+图像,yolo标注
  • 现代C++(C++17/20)特性详解
  • 【C++】继承机制:面向对象编程的核心奥秘
  • 深度学习周报(9.1~9.7)
  • Spring 日志文件
  • 【HARP 第二期】HARP 的数据组织“约定”规范
  • 钾元素:从基础认知到多元应用与前沿探索
  • 如何短时间内精准定位指标异动根源
  • Geogebra 绘制 电磁波反射折射+斯涅尔定律+半波损失
  • Mia for Gmail for Mac 邮件管理软件
  • EXCEL VBA 清空Excel工作表(Sheet)的方法
  • kafka如何保证消息的顺序性
  • Python快速入门专业版(十):字符串特殊操作:去除空格、判断类型与编码转换
  • 【数据分析】微生物组数据的批次校正与分析
  • 技术前瞻:衡石Data Agent在多模态AI与复杂数据源下的扩展与挑战
  • 如何通过 Activepieces 实现智能工作流自动化
  • Knex 和 Schema 是什么?
  • vector类(一)
  • OpenLayers常用控件 -- 章节八:地图动画控件教程
  • 在 CI/CD 管道中集成人工智能 (AI)
  • 开源项目MusicGen技术详解
  • 【面向对象编程——多继承】
  • 算法题-哈希表01
  • 云平台面试内容(二)
  • Carlsson_HEAL-SWIN_A_Vision_Transformer_On_The_Sphere_CVPR_2024_paper_analysis
  • 微服务的保护方式以及Sentinel详解
  • 【jenkins】--安装部署
  • Vue 路由传参的四种方式