在企业级服务器环境中,RockyLinux数据库监控是保障业务连续性的关键环节。当数据库出现异常(如连接数过高、CPU使用率飙升、磁盘空间不足等),若不能及时收到通知,可能会导致服务中断甚至数据丢失。本文将从零开始,教你在 RockyLinux 系统上为 MySQL 数据库配置一套简单有效的数据库告警设置方案,适合运维新手操作。
一、准备工作
确保你已具备以下条件:
一台运行 RockyLinux 8/9 的服务器 已安装并运行 MySQL 或 MariaDB 数据库 拥有 root 或 sudo 权限 能发送邮件(用于接收告警通知)二、安装必要的工具
我们将使用
bc(用于数值计算)、
mailx(用于发送邮件)和简单的 Shell 脚本实现监控。
# 安装依赖工具sudo dnf install -y bc mailx# 如果使用 Gmail 或其他 SMTP 服务,建议配置 ssmtp 或 postfixsudo dnf install -y postfixsudo systemctl enable --now postfix
三、编写数据库监控脚本
创建一个名为
mysql_monitor.sh的脚本,用于检查数据库状态并触发告警。
#!/bin/bash# 配置项MYSQL_USER="root"MYSQL_PASS="your_mysql_password"ALERT_EMAIL="admin@example.com"MAX_CONNECTIONS=100MIN_FREE_SPACE_GB=5# 获取当前连接数CURRENT_CONNS=$(mysql -u$MYSQL_USER -p$MYSQL_PASS -e "SHOW STATUS LIKE 'Threads_connected';" | awk 'NR==2 {print $2}')# 获取磁盘剩余空间(假设 MySQL 数据目录在 /var/lib/mysql)FREE_SPACE_GB=$(df -BG /var/lib/mysql | awk 'NR==2 {gsub(/G/, "", $4); print $4}')# 检查连接数是否超标if [ "$CURRENT_CONNS" -gt "$MAX_CONNECTIONS" ]; then echo "[告警] MySQL 当前连接数: $CURRENT_CONNS,超过阈值 $MAX_CONNECTIONS" | \ mail -s "【RockyLinux数据库监控】连接数过高告警" $ALERT_EMAILfi# 检查磁盘空间是否不足if [ "$FREE_SPACE_GB" -lt "$MIN_FREE_SPACE_GB" ]; then echo "[告警] MySQL 数据目录剩余空间仅 ${FREE_SPACE_GB}GB,低于安全阈值 ${MIN_FREE_SPACE_GB}GB" | \ mail -s "【RockyLinux数据库监控】磁盘空间不足告警" $ALERT_EMAILfi
⚠️ 注意:请将
your_mysql_password和
admin@example.com替换为你自己的密码和邮箱地址。出于安全考虑,建议使用 MySQL 配置文件(如
~/.my.cnf)来避免密码明文出现在脚本中。
四、设置定时任务
使用
cron每5分钟执行一次监控脚本:
# 编辑当前用户的 crontabcrontab -e# 添加以下行(每5分钟执行一次)*/5 * * * * /bin/bash /opt/scripts/mysql_monitor.sh >> /var/log/mysql_monitor.log 2>&1
确保脚本有执行权限:
sudo chmod +x /opt/scripts/mysql_monitor.sh
五、测试与验证
手动运行脚本,确认无报错:
/bin/bash /opt/scripts/mysql_monitor.sh
同时检查日志文件
/var/log/mysql_monitor.log是否有输出。如果配置了邮件服务,模拟一次高连接数场景(或临时调低阈值),看是否能收到告警邮件。
六、进阶建议
对于生产环境,建议采用更专业的监控工具如 Prometheus + Grafana + mysqld_exporter,或使用 Zabbix。但对于小型项目或学习目的,上述 Shell 脚本方案轻量、高效且易于理解,非常适合 RockyLinux系统运维 初学者掌握核心监控逻辑。
通过本文的步骤,你已经成功搭建了一套基础但实用的 MySQL监控告警 系统。定期维护和优化你的监控策略,是保障数据库稳定运行的重要一环。
