news 2026/6/10 11:55:07

系统监控异常告警

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
系统监控异常告警

背景:

多个系统部署在多个ECS(Linux)服务器上,每次巡检或者日常管理都是大问题。而且还比较滞后,都是问题出现了,才去排查。所以,高级的管理应主动发现异常,提早介入,将风险扼杀在摇篮中。

思路:

1、制定系统经常监控的指标信息(CPU、内存、磁盘、登录失败等)。

2、设置告警阈值,当高于设置的阈值,既触发。

3、触发机制,定时执行触发。

4、执行结果保存在日志文件。

5、邮件通知异常信息。

6、根据异常告警邮件,及时上去干预处理(可分析4,看出问题发生的时间点或时间段)。

开干:

创建可执行文件 system_monitor.sh

#!/bin/bash # 系统监控告警脚本 # 检测CPU、内存、磁盘使用率,以及*分钟内登录失败次数,超过阈值时发送邮件告警 # 配置参数 CPU_THRESHOLD=85 # CPU使用率阈值(%) MEM_THRESHOLD=80 # 内存使用率阈值(%) DISK_THRESHOLD=80 # 磁盘使用率阈值(%) LOGIN_FAIL_THRESHOLD=5 # 登录失败次数阈值 #TIME_WINDOW=5 # 时间窗口(分钟) EMAIL="*****@qq.com" # 告警接收邮箱 SUBJECT="系统资源告警 - $(hostname)" LOG_FILE="/data/script/monitor/logs/$(hostname)_$(date +%Y%m%d)_sys.out" # 同时输出到屏幕和日志 log() { local msg="[$(date '+%Y-%m-%d %H:%M:%S')]$1" echo "$msg" | tee -a "$LOG_FILE" } send_email() { printf "%s\n" "$2" | /usr/bin/mail -s "$1" "$EMAIL" log "[邮件发送] $1" } check_cpu() { echo "--- CPU 检查 ---" | tee -a "$LOG_FILE" local cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print 100 -$8}' | cut -d'.' -f1) log "当前 CPU 使用率: ${cpu_usage}% (阈值:${CPU_THRESHOLD}%)" if [[ "$cpu_usage" =~ ^[0-9]+$ ]] && [ "$cpu_usage" -gt "$CPU_THRESHOLD" ]; then local msg="警告: CPU使用率为 ${cpu_usage}%,超过阈值${CPU_THRESHOLD}%,请及时关注并处理!" send_email "$SUBJECT" "$msg" else log "状态: 正常" fi } check_memory() { echo "--- 内存 检查 ---" | tee -a "$LOG_FILE" # 计算内存使用率 local mem_usage=$(free | awk '/Mem:/ {printf "%d", ($3/$2)*100}') log "当前 内存 使用率: ${mem_usage}% (阈值:${MEM_THRESHOLD}%)" if [ "$mem_usage" -gt "$MEM_THRESHOLD" ]; then local msg="警告: 内存使用率为 ${mem_usage}%,超过阈值${MEM_THRESHOLD}%,请及时关注并处理!" send_email "$SUBJECT" "$msg" else log "状态: 正常" fi } check_disk() { echo "--- 磁盘 检查 ---" | tee -a "$LOG_FILE" local alert_triggered=0 # 使用进程替换 while read output; do local usep=$(echo "$output" | awk '{print $1}' | cut -d'%' -f1) local partition=$(echo "$output" | awk '{print $2}') if [[ "$usep" =~ ^[0-9]+$ ]]; then log "分区 $partition 使用率:${usep}%" if [ "$usep" -ge "$DISK_THRESHOLD" ]; then local msg="警告: 磁盘分区 $partition 使用率为${usep}%,超过阈值 ${DISK_THRESHOLD}%,请及时关注并处理!" send_email "$SUBJECT" "$msg" alert_triggered=1 fi fi done < <(df -h | grep -vE '^Filesystem|tmpfs|cdrom|overlay' | awk '{ print $5 " "$1 }') if [ "$alert_triggered" -eq 0 ]; then log "状态: 所有分区正常" fi } check_login_failures() { echo "--- 安全 检查 (登录失败) ---" | tee -a "$LOG_FILE" local fail_count=0 if [ -f /var/log/auth.log ]; then fail_count=$(grep "Failed password" /var/log/auth.log 2>/dev/null | tail -n 100 | wc -l) elif [ -f /var/log/secure ]; then fail_count=$(grep "Failed password" /var/log/secure 2>/dev/null | tail -n 100 | wc -l) fi log "最近100条日志中检测到登录失败次数: ${fail_count} (阈值:${LOGIN_FAIL_THRESHOLD})" if [ "$fail_count" -ge "$LOGIN_FAIL_THRESHOLD" ]; then local msg="安全警告: 检测到登录失败 ${fail_count} 次,超过阈值${LOGIN_FAIL_THRESHOLD} 次" send_email "$SUBJECT" "$msg" else log "状态: 安全" fi } # ---------------- 主程序 ---------------- main() { echo " " | tee -a "$LOG_FILE" echo "========================================" | tee -a "$LOG_FILE" log "MDM2.0 $(hostname) 操作系统健康巡检报告" log "检查时间:$(date '+%Y-%m-%d %H:%M:%S')" log "当前IP: $(hostname -I | awk '{print $1}')" echo "========================================" | tee -a "$LOG_FILE" check_cpu echo " " | tee -a "$LOG_FILE" check_memory echo " " | tee -a "$LOG_FILE" check_disk echo " " | tee -a "$LOG_FILE" check_login_failures echo " " | tee -a "$LOG_FILE" echo "========================================" | tee -a "$LOG_FILE" log "检查结束" echo "========================================" | tee -a "$LOG_FILE" } main

设置定时任务,我这里是每5分钟

*/5 * * * * /data/script/monitor/system_monitor.sh

查看执行结果

异常告警通知

其他:

该脚本的可塑性较高,灵活配置,根据实际需要进行改造即可。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 13:59:25

【毕业设计】机器学习基于深度学习算法训练数字识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/9 17:17:49

当AI客服开始“察言观色”:以云蝠智能为例,大模型如何定义呼叫

当客服机器人开始“察言观色”&#xff0c;一通外呼电话能感知用户情绪并提供安慰&#xff0c;AI正在重塑企业与客户的每一次连接。“我是刚刚给您打过电话的XXX。”——这不是人类客服的标准话术&#xff0c;而是AI机器人在模拟真人沟通时&#xff0c;为避免用户反感而设计的过…

作者头像 李华
网站建设 2026/6/10 14:00:50

基于SpringBoot的美食信息推荐网站系统(毕业设计项目源码+文档)

课题摘要基于 SpringBoot 的美食信息推荐网站&#xff0c;聚焦美食消费 “个性化推荐、信息精准触达、场景化选品” 的核心需求&#xff0c;针对传统美食网站 “内容同质化、口味匹配度低、场景适配性差” 的痛点&#xff0c;构建覆盖消费者、餐饮商家、平台运营者的全流程智能…

作者头像 李华
网站建设 2026/6/10 13:56:39

南洋理工大学团队重新定义AI看世界:让机器像人类一样观察和思考

这项由南洋理工大学、南京理工大学、阿德莱德大学、百度、CSIRO以及商汤科技等多家知名机构合作的研究发表于2024年12月&#xff0c;研究团队包括唐伟、孙彦鹏、张珊、李晓凡等众多学者。有兴趣深入了解的读者可以通过论文编号arXiv:2512.01988v1查询完整论文。这项名为"A…

作者头像 李华
网站建设 2026/6/10 14:01:53

自考必看!8个高效降AIGC工具推荐

自考必看&#xff01;8个高效降AIGC工具推荐 AI降重工具&#xff1a;自考论文的“隐形护盾” 在自考论文写作过程中&#xff0c;越来越多的学生开始关注“AIGC率”和“查重率”的问题。随着人工智能技术的广泛应用&#xff0c;许多学生在使用AI生成内容时&#xff0c;发现论文中…

作者头像 李华
网站建设 2026/6/10 14:01:52

力扣数据库——员工奖金

员工奖金https://leetcode.cn/problems/employee-bonus/ 一 题目 表&#xff1a;Employee Column NameTypeempIdintnamevarcharsupervisorintsalaryint empId 是该表中具有唯一值的列。该表的每一行都表示员工的 id 和姓名&#xff0c;以及他们经理的 id 和他们的工资。表…

作者头像 李华