简易磁盘自动监控服务

本文旨在利用crontab定时任务(脚本请参考附件)来监控单个服务节点上所有磁盘使用情况,一旦超过既定阈值则会通过邮件形式告警相关利益人及时介入处理。

1. 开启SMTP服务

为了能够成功接收告警信息,需要邮件接收客户都安开启SMTP服务。简要流程请参考下图:
简易磁盘自动监控服务_第1张图片
简易磁盘自动监控服务_第2张图片

2. 配置邮件服务

因监控脚本涉及邮件发送功能,故需要确保服务节点已经安装mail和postfix服务。下面将以麒麟OS为例:

[root@mogdb-dev-0012 ~]# yum -y install mailx postfix
[root@mogdb-dev-0012 ~]# systemctl enable --now postfix

至此,邮件服务均已配置完成,需要测试邮件服务是否可用,具体指令如下(向账号为[email protected]的用户发送邮件):

[root@localhost ~]# echo "Testing email body from server!" | mail -s "Testing from server." [email protected]

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. 告警邮件样例

简易磁盘自动监控服务_第3张图片

6. 附件

[wrz@mogdb-dev-0012 wrz]$ cat disk_monitor.sh
#!/bin/bash
MAIL_SENDTO=[email protected] // 更改为具体邮箱地址
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

你可能感兴趣的:(后端开发,云存储,运维)