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

Centos监控告警脚本(手把手教你搭建轻量级服务器监控与自动告警系统)

在日常的 Linux 运维工作中,Centos系统监控 是保障服务器稳定运行的重要环节。当 CPU 使用率过高、磁盘空间不足或内存耗尽时,如果没有及时收到通知,可能会导致服务中断甚至数据丢失。本文将带你从零开始,编写一个简单但实用的 Centos监控告警脚本,即使你是运维小白,也能轻松上手!

Centos监控告警脚本(手把手教你搭建轻量级服务器监控与自动告警系统) Centos监控告警脚本 Centos系统监控 服务器告警脚本 Linux运维自动化 第1张

一、准备工作

在开始之前,请确保你的 CentOS 服务器满足以下条件:

  • 已安装 CentOS 7 或 CentOS 8 系统
  • 具备 root 或 sudo 权限
  • 已配置好邮件服务(如 mailx)或可使用 curl 发送 Webhook 告警(本文以邮件为例)

二、安装必要工具

首先,我们需要安装 mailx 用于发送告警邮件:

sudo yum install -y mailx

如果你使用的是阿里云、腾讯云等云服务器,可能还需要配置 SMTP 邮件转发。这里我们假设你已配置好本地邮件服务,或使用外部 SMTP(配置方法可参考官方文档)。

三、编写监控告警脚本

我们将监控三个关键指标:CPU 使用率、内存使用率和磁盘使用率。当任一指标超过阈值(例如 85%),就发送告警邮件。

创建脚本文件 /opt/monitor_alert.sh

#!/bin/bash# 配置项THRESHOLD=85EMAIL="your_email@example.com"HOSTNAME=$(hostname)# 获取 CPU 使用率(排除空闲时间)CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}')CPU_USAGE=${CPU_USAGE%.*}  # 取整数部分# 获取内存使用率MEM_INFO=$(free | grep Mem)MEM_TOTAL=$(echo $MEM_INFO | awk '{print $2}')MEM_USED=$(echo $MEM_INFO | awk '{print $3}')MEM_USAGE=$((100 * MEM_USED / MEM_TOTAL))# 获取根分区磁盘使用率DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | tr -d '%')# 检查并发送告警ALERT_MSG=""if [ $CPU_USAGE -gt $THRESHOLD ]; then  ALERT_MSG+="⚠️ CPU 使用率过高: ${CPU_USAGE}%\n"fiif [ $MEM_USAGE -gt $THRESHOLD ]; then  ALERT_MSG+="⚠️ 内存使用率过高: ${MEM_USAGE}%\n"fiif [ $DISK_USAGE -gt $THRESHOLD ]; then  ALERT_MSG+="⚠️ 磁盘使用率过高: ${DISK_USAGE}%\n"fi# 如果有告警内容,发送邮件if [ -n "$ALERT_MSG" ]; then  echo -e "服务器 [$HOSTNAME] 出现资源告警:\n\n$ALERT_MSG\n请及时处理!" | \  mail -s "【告警】$HOSTNAME 资源使用异常" $EMAIL  echo "$(date): 告警已发送"else  echo "$(date): 所有资源正常"fi

四、赋予执行权限并测试

保存脚本后,赋予执行权限:

sudo chmod +x /opt/monitor_alert.sh

手动运行一次测试:

/opt/monitor_alert.sh

如果一切正常,你会在终端看到“所有资源正常”或“告警已发送”的提示。

五、设置定时任务(crontab)

为了让脚本每5分钟自动运行一次,添加到 crontab:

crontab -e

在打开的编辑器中添加以下行:

*/5 * * * * /opt/monitor_alert.sh >> /var/log/monitor.log 2>&1

这样,系统会每5分钟检查一次资源,并将日志记录到 /var/log/monitor.log 中。

六、进阶建议

这个基础脚本适合小型项目或学习用途。在生产环境中,你可以考虑:

  • 使用企业级监控工具如 Zabbix、Prometheus + Alertmanager
  • 通过 Webhook 将告警推送到钉钉、企业微信或 Slack
  • 增加服务进程监控(如 nginx、mysql 是否运行)

通过这个简单的 服务器告警脚本,你已经迈出了 Linux运维自动化 的第一步!坚持实践,你会越来越熟练。

结语

本文详细介绍了如何在 CentOS 上编写并部署一个轻量级的监控告警脚本。无论你是刚入门的运维新手,还是希望简化监控流程的开发者,这套方案都能为你提供即时的系统状态反馈,有效预防故障发生。