若您部署了云服务程序,并且使用Paas服务(比如Service bus或者sql server等等),偶尔我们会在日志中发现无法解析主机名的错误信息,这基本是因为网络闪断造成的,需要我们在代码中添加retry逻辑,详细的说明,请参考:
The Transient Fault Handling Application Block
关于网站的问题,我们需要在问题发生的时候去抓取网络包去排查,如果错过了出现问题的时刻,则网络的问题很难去排查。基于这个背景,有个开发的小工具大家可以使用下,具体功能如下:
- 将程序拷贝到云服务的实例中去运行
- 程序运行的时候会在指定的位置中检测是否安装了Network Monitor Tool, 若发现没有安装,程序会自动下载并启动安装程序。
- 程序启动后会间隔几秒去发Get请求到service bus, 若调用有异常则会再尝试几次,若超过了配置的retry次数,则系统会调用network monitor tool 去抓取90秒的网络包,完成抓包后会将这个抓包信息上传到配置的存储账号中。然后会发送邮件到指定的邮箱,邮件中包含了网络包日志的下载链接(若调用的时间超过了配置时间或者返回值不是200,也会执行相应的动作)
- 具体参数说明如下:
<add key="NetMonInstallDir" value="d:\Program Files\Microsoft Network Monitor 3"/> Network Monitor Tool的安装路径,目前云服务实例默认是按照在当前配置的位置
<add key="LogPath" value="D:\Monitor"/> <!--It is for auto-run--> 程序日志的文件夹路径
<add key="TraceTimes" value="2"/><!--trace times, define how many times will it capture network trace--> 若Network Monitor Too已经捕获了2次日志文件并发送后,这个监视程序会退出。
<add key="RertyNumberTimes" value="2"/><!-- define how many times when we get error--> 若发现异常,retry的次数
<add key="TimerSeconds" value="5"/><!--check the network/target URL every *** seconds--> 监视的时间间隔
<add key="TargetURL" value="https://xxxxx.servicebus.chinacloudapi.cn"/> 监视的url
<add key="TargetHttpCode" value="200"/><!--expected http return code-->
<add key="LimitSeconds" value="30"/><!--criterion time to judge if it is slow performance--> 若请求时间花费超过了设置的值,则会抓包并发送邮件
<add key="MailNotification" value="1"/><!--0 for false, 1 for true-->
<add key="MailRecipients" value="[email protected];[email protected]"/><!--use ; to add more--> 设置邮件的收件人
<add key="MailHostName" value="smtp.**.com"/> 设置邮箱的host
<add key="MailPort" value="***"/> 设置邮箱的Port
<add key="MailSenderName" value="**"/> 邮箱的发件人
<add key="MailSenderPassword" value="*"/> 邮箱发件人的密码
<add key="StorageAccountName" value="*"/><!--* for null--> 存储账号
<add key="StorageAccountKey" value="*"/><!--* for null--> 存储账号密码
<add key="StorageContainerName" value="parsedns"/> 存储中使用的容器名称
<add key="DownloadUrl" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/> 下载network monitor tool的地址,建议您修改为自己存储中的下载地址
<add key="FirstRun" value="true"/> 在您第一次运行并下载安装了network monitor tool后,建议您将这个参数改为false并重新运行监视程序,这样在您reboot了这个实例后,监视程序也会自动启动
程序运行的信息都是记录在日志中,内容如下:10/9/2015 9:57:25 PM Network Check is running ... | OK | 3 | http://test11111.chinacloudsites.cn/
Ok是调用的返回结果,3表明这次请求花费了3秒钟
程序下载的地址:http://pan.baidu.com/s/1sjQjOlf