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

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

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

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

一、准备工作

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

  • mailutils:用于发送邮件告警
  • ssmtppostfix:邮件传输代理(本文以 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服务器监控 技能,是迈向专业运维的重要一步。如果你希望构建更强大的监控体系,可以在此基础上扩展网络、服务状态等检查项,打造属于你的 自动化告警脚本 生态。

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