在现代IT运维中,Ubuntu DNS监控是保障网络服务稳定运行的关键环节。一旦DNS解析出现故障,可能导致网站无法访问、邮件收发失败、内部服务中断等严重问题。本文将手把手教你如何在Ubuntu系统上配置一套简单高效的DNS告警设置方案,即使你是Linux小白也能轻松上手!

一、准备工作
在开始之前,请确保你已经:
拥有一台运行Ubuntu 20.04或更高版本的服务器 具备sudo管理员权限 已安装并配置好基本的网络环境 拥有一个可接收告警通知的邮箱(如Gmail、企业邮箱等)二、安装必要的工具
我们将使用
dig命令进行DNS查询,并结合简单的Shell脚本实现监控。首先安装
dnsutils包:
其中:sudo apt updatesudo apt install -y dnsutils mailutils ssmtp
- dnsutils
提供了dig
命令
- mailutils
和 ssmtp
用于发送邮件告警
三、编写DNS监控脚本
创建一个名为
dns_monitor.sh的脚本文件:
请根据你的实际情况修改脚本中的#!/bin/bash# 配置区域DOMAIN="example.com" # 要监控的域名DNS_SERVER="8.8.8.8" # 使用的DNS服务器ALERT_EMAIL="your@email.com" # 告警接收邮箱LOG_FILE="/var/log/dns_monitor.log"# 执行DNS查询RESULT=$(dig @$DNS_SERVER $DOMAIN A +short)# 检查结果是否为空if [ -z "$RESULT" ]; then # 记录日志 echo "[$(date '+%Y-%m-%d %H:%M:%S')] DNS查询失败:$DOMAIN 无法解析" >> $LOG_FILE # 发送邮件告警 echo "警告:DNS解析失败!域名:$DOMAINDNS服务器:$DNS_SERVER时间:$(date '+%Y-%m-%d %H:%M:%S')请立即检查网络和DNS配置!" | mail -s "【紧急】DNS监控告警" $ALERT_EMAILelse echo "[$(date '+%Y-%m-%d %H:%M:%S')] DNS查询正常:$DOMAIN -> $RESULT" >> $LOG_FILEfiDOMAIN
、DNS_SERVER
和ALERT_EMAIL
变量。
四、配置邮件发送(以Gmail为例)
编辑SSMTP配置文件:
添加以下内容(替换为你自己的Gmail账号和应用专用密码): 注意:出于安全考虑,建议使用Gmail的“应用专用密码”而非账户主密码。你可以在Google账户的安全设置中生成。 使用crontab让脚本每5分钟自动运行一次: 在打开的编辑器中添加一行: 这样系统就会每5分钟检查一次DNS解析状态,一旦失败立即发送邮件告警。 手动运行脚本测试是否正常工作: 检查日志文件: 如果一切配置正确,你应该能看到类似以下的日志: 这套基础的系统运维监控方案可以进一步优化: 通过以上步骤,你已经成功搭建了一套轻量级但实用的Ubuntu DNS监控与DNS告警设置系统。这不仅能帮助你在第一时间发现并处理DNS故障,还能大大提升你的系统运维监控能力和网络故障排查效率。赶快动手试试吧!sudo nano /etc/ssmtp/ssmtp.confroot=your@gmail.commailhub=smtp.gmail.com:587AuthUser=your@gmail.comAuthPass=your_app_passwordUseSTARTTLS=YESFromLineOverride=YES
五、设置定时任务
# 赋予脚本执行权限chmod +x dns_monitor.sh# 编辑当前用户的crontabcrontab -e*/5 * * * * /path/to/your/dns_monitor.sh六、测试与验证
./dns_monitor.shtail -f /var/log/dns_monitor.log[2024-06-15 10:30:00] DNS查询正常:example.com -> 93.184.216.34七、进阶建议
结语
