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

Debian监控告警脚本实现(手把手教你搭建Linux服务器自动告警系统)

在日常的服务器运维中,及时发现系统异常至关重要。本文将带你从零开始,使用简单的 Shell 脚本在 Debian 系统上实现一个基础但实用的监控告警脚本。无论你是刚接触 Linux 的新手,还是有一定经验的运维人员,都能轻松上手。

Debian监控告警脚本实现(手把手教你搭建Linux服务器自动告警系统) Debian监控告警脚本 系统监控脚本 Linux服务器告警 自动化运维脚本 第1张

一、为什么需要Debian监控告警脚本?

当你的 Debian 服务器出现 CPU 过载、内存不足、磁盘空间告急或关键服务宕机时,如果没有及时通知,可能导致业务中断甚至数据丢失。通过编写一个系统监控脚本,我们可以自动检测这些异常,并通过邮件、短信或其他方式发送告警,实现自动化运维脚本的核心功能。

二、准备工作

在开始之前,请确保你的 Debian 系统已安装以下工具:

  • mailutilsssmtp(用于发送邮件告警)
  • bc(用于浮点数计算)
  • 一个可用的 SMTP 邮箱(如 Gmail、企业邮箱等)

以 root 用户或具有 sudo 权限的用户登录系统,执行以下命令安装依赖:

sudo apt updatesudo apt install -y mailutils bc

三、编写Debian监控告警脚本

我们将创建一个脚本,监控以下三项指标:

  1. CPU 使用率是否超过 80%
  2. 内存使用率是否超过 85%
  3. 根分区磁盘使用率是否超过 90%

在任意目录(例如 /opt/scripts/)下创建脚本文件:

sudo mkdir -p /opt/scriptscd /opt/scriptssudo nano monitor_alert.sh

将以下代码粘贴进去(注意替换你的邮箱地址):

#!/bin/bash# 配置项EMAIL="your_email@example.com"CPU_THRESHOLD=80MEM_THRESHOLD=85DISK_THRESHOLD=90# 获取当前时间CURRENT_TIME=$(date "+%Y-%m-%d %H:%M:%S")# 获取 CPU 使用率(排除空闲时间)CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}')# 获取内存使用率MEM_USAGE=$(free | awk 'NR==2{printf "%.2f", $3*100/$2}')# 获取根分区磁盘使用率DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')ALERT_MSG=""# 检查 CPUif (( $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc -l) )); then    ALERT_MSG+="[警告] CPU 使用率过高: ${CPU_USAGE}%\n"fi# 检查内存if (( $(echo "$MEM_USAGE > $MEM_THRESHOLD" | bc -l) )); then    ALERT_MSG+="[警告] 内存使用率过高: ${MEM_USAGE}%\n"fi# 检查磁盘if [ "$DISK_USAGE" -gt "$DISK_THRESHOLD" ]; then    ALERT_MSG+="[警告] 磁盘空间不足: ${DISK_USAGE}% 已使用\n"fi# 如果有告警,发送邮件if [ -n "$ALERT_MSG" ]; then    echo -e "主机: $(hostname)\n时间: $CURRENT_TIME\n\n$ALERT_MSG" | \    mail -s "【Debian服务器告警】$(hostname) 异常通知" "$EMAIL"    echo "[$CURRENT_TIME] 告警已发送"else    echo "[$CURRENT_TIME] 系统状态正常"fi

四、赋予执行权限并测试

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

sudo chmod +x /opt/scripts/monitor_alert.sh

手动运行一次测试:

sudo /opt/scripts/monitor_alert.sh

如果系统资源正常,终端会输出“系统状态正常”;如果有异常且邮箱配置正确,你将收到一封告警邮件。

五、设置定时任务(crontab)

为了让脚本每5分钟自动运行一次,我们使用 crontab:

sudo crontab -e

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

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

这表示每5分钟执行一次脚本,并将日志记录到 /var/log/monitor.log 中,便于后续排查问题。

六、总结

通过以上步骤,你已经成功部署了一个轻量级但高效的 Debian监控告警脚本。它不仅能帮你实时掌握服务器健康状况,还能在关键时刻发出预警,是每个 Linux 运维人员必备的 自动化运维脚本 工具之一。

你可以根据实际需求扩展此脚本,例如增加对特定服务(如 Nginx、MySQL)的进程监控,或集成到更复杂的告警平台(如 Prometheus + Alertmanager)。但无论如何,打好基础是迈向高级运维的第一步!

关键词回顾:Debian监控告警脚本、系统监控脚本、Linux服务器告警、自动化运维脚本