本文旨在利用crontab定时任务(脚本请参考附件)来监控单个服务节点上所有磁盘使用情况,一旦超过既定阈值则会通过邮件形式告警相关利益人及时介入处理。
1. 开启SMTP服务
为了能够成功接收告警信息,需要邮件接收客户都安开启SMTP服务。简要流程请参考下图:
2. 配置邮件服务
因监控脚本涉及邮件发送功能,故需要确保服务节点已经安装mail和postfix服务。下面将以麒麟OS为例:
[root@mogdb-dev-0012 ~]# yum -y install mailx postfix
[root@mogdb-dev-0012 ~]# systemctl enable --now postfix
至此,邮件服务均已配置完成,需要测试邮件服务是否可用,具体指令如下(向账号为test@163.com的用户发送邮件):
[root@localhost ~]# echo "Testing email body from server!" | mail -s "Testing from server." test@163.com
3. 监控脚本说明
附件中监控脚本disk_monitor.sh,基于df -hP获取节点所有磁盘的使用率信息,MAIL_SENDTO标识接收告警信息的邮箱地址,DISK_USAGE_THRESHOLD标识磁盘利用率阈值,NODE_NAME标识被监控节点的主机hostname。
4. 自动化监控配置
(1) 增加权限
[root@mogdb-dev-0012 ~] chmod +x disk_monitor.sh
(2) 配置crontab任务
[root@mogdb-dev-0012 ~] crontab -e
添加如下命令到crontab(示例为每隔3分钟检测一次磁盘使用率情况):
*/3 * * * * sh <监控脚本绝对路径>
5. 告警邮件样例
6. 附件
[wrz@mogdb-dev-0012 wrz]$ cat disk_monitor.sh
#!/bin/bash
MAIL_SENDTO=test@163.com // 更改为具体邮箱地址
DISK_USAGE_THRESHOLD=85 // 更改为需要的数值
NODE_NAME=$(hostname)
MAIL=/bin/mail
for line in $(df -hP | egrep '^/dev/' | awk '{ print $1 "_:_" $5 }')
do
DISK_INFO=$(echo "$line" | awk -F"_:_" '{ print $1 }')
DISK_USAGE=$(echo "$line" | awk -F"_:_" '{ print $2 }' | cut -d'%' -f1 )
if [ $DISK_USAGE -ge $DISK_USAGE_THRESHOLD ];
then
EMAIL_MES="Attention: $NODE_NAME-$(date), $DISK_INFO usage($DISK_USAGE) has exceeded the threshold($DISK_USAGE_THRESHOLD)!\n"
echo -e "$EMAIL_MES" | $MAIL -s ""$NODE_NAME" Disk Usage Alert: Needs Attention!" "$MAIL_SENDTO"
fi
done