如何在Azure中配置健康检查以检测Azure文件共享是否成功挂载?
Azure RHEL虚拟机Azure文件共享挂载健康检查及告警实现方案
1. 编写挂载检测脚本
不要仅依赖mount命令的输出判断挂载状态,部分场景下挂载项仍保留在系统列表中,但实际存储侧连接已中断,写入操作会失败,必须增加实际读写验证保证检测准确性
首先创建检测脚本/usr/local/bin/check_azure_fileshare.sh,示例内容如下:
#!/bin/bash # 替换为你的实际文件共享挂载点 MOUNT_POINT="/mnt/azure_log_share" TEST_FILE="${MOUNT_POINT}/.mount_health_check.tmp" TEST_CONTENT="health_check_$(date +%s)" # 第一步:检查挂载点是否存在于系统挂载列表 if ! mount | grep -q "${MOUNT_POINT}"; then echo "ERROR: File share not mounted" logger -p local0.err "Azure File Share health check failed: ${MOUNT_POINT} not found in mount list" exit 1 fi # 第二步:验证挂载点读写能力 echo "${TEST_CONTENT}" > "${TEST_FILE}" 2>/dev/null if [ $? -ne 0 ]; then echo "ERROR: Cannot write to mount point" logger -p local0.err "Azure File Share health check failed: ${MOUNT_POINT} is not writable" exit 1 fi READ_CONTENT=$(cat "${TEST_FILE}" 2>/dev/null) if [ "${READ_CONTENT}" != "${TEST_CONTENT}" ]; then echo "ERROR: Read content mismatch" logger -p local0.err "Azure File Share health check failed: ${MOUNT_POINT} read write verification failed" rm -f "${TEST_FILE}" 2>/dev/null exit 1 fi # 检查通过,清理测试文件 rm -f "${TEST_FILE}" exit 0
给脚本赋予执行权限:chmod +x /usr/local/bin/check_azure_fileshare.sh
2. 配置定时检测任务
使用crontab配置定时执行,可根据业务对故障响应的要求调整执行频率,示例为每5分钟执行一次:
执行crontab -e添加如下规则:*/5 * * * * /usr/local/bin/check_azure_fileshare.sh
3. 配置告警通知
方案A:自定义告警脚本
自行编写/usr/local/bin/send_alert.sh实现通知逻辑,根据团队使用的通知渠道配置即可:
- 邮件通知可调用
mailx命令发送告警邮件 - 企业微信/钉钉/飞书通知可调用对应群机器人的webhook接口发送消息
- 告警内容需要包含虚拟机主机名、IP、故障时间、挂载点路径、故障描述
之后修改crontab规则,检测失败时触发告警:*/5 * * * * /usr/local/bin/check_azure_fileshare.sh || /usr/local/bin/send_alert.sh
方案B:对接Azure Monitor(适配Azure生态推荐)
上述检测脚本已经将故障日志写入syslog,只需在Azure控制台完成如下配置即可:
- 为目标RHEL虚拟机启用Azure Monitor代理,配置日志采集规则,采集
local0.err级别的系统日志 - 配置告警规则,匹配日志中的
Azure File Share health check failed关键词 - 配置关联动作组,设置对应团队的通知渠道(邮件、短信、自定义webhook等),触发规则时自动推送通知
优化建议
- 配置文件共享自动重试挂载:在
/etc/fstab的挂载配置中添加_netdev,x-systemd.automount,x-systemd.mount-timeout=30参数,网络恢复后自动重试挂载,减少临时网络波动导致的误告警 - 增加告警抑制逻辑:连续2次检测失败再触发告警,避免单次网络抖动导致的误报
- 增加恢复通知:检测到挂载从故障恢复为正常时,发送恢复通知同步状态
内容的提问来源于stack exchange,提问作者kumar A
相关产品推荐
相关产品推荐

