我有一个脚本, rndc reload <zone_name> in <view_name>被修改的区域的辅助(从属)服务器上的rndc reload <zone_name> in <view_name>中执行rndc reload <zone_name> in <view_name> 。 如果重新加载成功排队,此命令将返回成功。
我想知道是否有方法可以在不通过日志本身的情况下获得实际区域传输的状态。 我希望能够根据错误本身来自动处理绑定重新加载失败的情况。 目前,在执行rndc reload之后,我必须parsing日志以获得区域传输的状态。
有人可以帮我弄清楚在执行rndc reload <zone_name>之后如何获得区域传输的状态,这比parsing日志本身更好。
注意[增加更多的清晰度] :我知道通知可以用于主人与奴隶沟通有关的变化。 我的问题是关于在从属设备发起的区域传输由于任何原因而未通过parsing日志而失败的情况下是否有任何方式获得通知 。
例如可能在通知从服务器之后,主服务器由于某种原因而死亡。 在这种情况下,当从设备启动区域传输时,从主设备获取SOAlogging将失败。 我希望得到通知区域传输过程中可能发生的这类错误,而不实际parsing日志。
让我知道是否需要更多的信息。
(错误)日志文件是绑定会logging此类错误的唯一地方,所以如果您不想parsing特定错误的日志文件(虽然您可以使用类似Splunk的自动化parsing并生成相关警报)你需要别的东西。
从监测的angular度来看,我认为你在区域转移过程中获得错误通知的重点略微偏离了这一点。 这不是真正的错误,事实上这样的错误表明减less,失败或错误的服务。 而是专注于服务。
正确configuration的监控解决scheme将检测到这种更改的服务状态并提醒您。 然后,您的工程师/操作员可以轻松地在日志文件中search该服务减less/故障的相关原因…
在主 – 从情况下,您的监控需要确保:
监视区域的良好DNSlogging将是SOAlogging,因为这是每个名称服务器应始终能够为每个区域返回的内容。
其次,SOAlogging中的序列号应该告诉你,从设备是否与主设备同步。 如果从机丢失NOTIFY消息可能导致序列号有差异,但是如果差异存在的时间比SOA刷新间隔长,则更为严重的问题就在眼前。
用以下命令创build一个脚本slave.sh :
#!/bin/sh ns1="yourfirstdnsserver" ns2="yourslavednsserver" serial='grep SOA |cut -d " " -f7' domain=$1 rndc reload $domain a=`host -t SOA $domain $ns1 |grep SOA |cut -d " " -f7` b=`host -t SOA $domain $ns2 |grep SOA |cut -d " " -f7` if [ $a = $b ]; then echo "$domain : synchro ok"; else "$domain : Error"; fi;
只需使用./slave.sh yourdomain.com 。
请享用!
a=`host -t SOA yourdomain.com yourns1.com |grep SOA |cut -d " " -f7` && b=`host -t SOA yourdomain.com yourns2.com |grep SOA |cut -d " " -f7` && if [ $a = $b ]; then echo "synchro ok"; else "Error"; fi;