Ubuntu监控告警脚本实战指南(手把手教你搭建Linux服务器自动化监控系统)

来源:这里教程网 时间:2026-03-02 10:47:38 作者:

在运维工作中,及时发现服务器异常至关重要。本文将带你从零开始,编写一个简单但实用的 Ubuntu监控告警脚本,实现对CPU、内存和磁盘使用率的实时监控,并在超过阈值时通过邮件发送告警通知。即使你是Linux新手,也能轻松上手!

一、准备工作

在开始编写脚本前,请确保你的Ubuntu系统已安装以下工具:

mailutils
:用于发送邮件告警
ssmtp
postfix
:邮件传输代理(本文以
mailutils
+ 系统默认sendmail为例) 基本的Bash环境(Ubuntu默认已安装)

执行以下命令安装必要软件:

sudo apt updatesudo apt install -y mailutils

二、编写Ubuntu监控告警脚本

我们将创建一个名为

system_monitor.sh
的脚本,它会定期检查系统资源使用情况。

#!/bin/bash# 配置项CPU_THRESHOLD=80 # CPU使用率阈值(%)MEM_THRESHOLD=85 # 内存使用率阈值(%)DISK_THRESHOLD=90 # 磁盘使用率阈值(%)EMAIL="your_email@example.com" # 告警接收邮箱HOSTNAME=$(hostname)# 获取当前CPU使用率(排除空闲时间)CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}')# 获取内存使用率MEM_USAGE=$(free | awk 'NR==2{printf "%.0f", $3*100/$2}')# 获取根分区磁盘使用率DISK_USAGE=$(df / | awk 'NR==2{print $5}' | sed 's/%//')# 日志函数log_message() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"}# 发送告警邮件函数send_alert() { SUBJECT="[ALERT] $HOSTNAME System Resource Warning" MESSAGE="$1\n\nCPU Usage: ${CPU_USAGE}%\nMemory Usage: ${MEM_USAGE}%\nDisk Usage: ${DISK_USAGE}%\nTime: $(date)" echo -e "$MESSAGE" | mail -s "$SUBJECT" "$EMAIL" log_message "Alert email sent: $1"}# 检查CPUif (( $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc -l) )); then send_alert "High CPU usage detected on $HOSTNAME!"fi# 检查内存if [ "$MEM_USAGE" -gt "$MEM_THRESHOLD" ]; then send_alert "High memory usage detected on $HOSTNAME!"fi# 检查磁盘if [ "$DISK_USAGE" -gt "$DISK_THRESHOLD" ]; then send_alert "High disk usage detected on $HOSTNAME!"filog_message "Monitoring completed. CPU: ${CPU_USAGE}%, MEM: ${MEM_USAGE}%, DISK: ${DISK_USAGE}%"

三、配置与测试

1. 将上述代码保存为

/home/your_user/system_monitor.sh
(替换 your_user 为你的用户名)。

2. 赋予脚本执行权限:

chmod +x /home/your_user/system_monitor.sh

3. 修改脚本中的

EMAIL
变量为你自己的邮箱地址。

4. 手动运行脚本测试:

/home/your_user/system_monitor.sh

如果一切正常,你将在终端看到日志输出。若资源使用率超过阈值,你会收到一封告警邮件。

四、设置定时任务(Cron)

为了让脚本自动运行,我们可以使用

cron
定时任务。例如,每5分钟检查一次:

crontab -e

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

*/5 * * * * /home/your_user/system_monitor.sh >> /var/log/system_monitor.log 2>&1

这会每5分钟执行一次脚本,并将日志追加到

/var/log/system_monitor.log
文件中,方便后续排查问题。

五、常见问题与优化建议

- 邮件收不到? 请确保系统能发送邮件。可先用

echo "test" | mail -s "test" your_email@example.com
测试。

- 如何监控多个服务器? 可将此脚本部署到每台服务器,或使用集中式监控工具如Zabbix、Prometheus等。

- 避免频繁告警? 可在脚本中加入“冷却时间”逻辑,例如记录上次告警时间,10分钟内不再重复发送。

结语

通过这个简单的 Ubuntu监控告警脚本,你可以快速实现对关键系统资源的监控。它不仅适用于个人服务器,也适合小型企业环境。掌握这类 Linux服务器监控 技能,是迈向专业运维的重要一步。如果你希望构建更强大的监控体系,可以在此基础上扩展网络、服务状态等检查项,打造属于你的 自动化告警脚本 生态。

现在就动手试试吧!让 系统监控脚本 成为你服务器的“守护神”。

相关推荐