2

我有一个通过 2 个角色平衡的 Azure 云服务负载,最近添加了一个自定义 LoadBalancerProbe。

我遇到的问题是,在我的站点中,我有一个线程任务抛出未处理的异常,其中 5 个未处理的异常导致该角色将自身报告为不健康。我已经通过处理这些未处理的异常解决了这个问题,但是,我们有一个庞大的团队,我担心这可能会在未来的版本中再次发生。

我想设置一个 azure 通知(最好是电子邮件),让我知道我的一个角色何时报告自己不健康。我在网上四处张望,但找不到任何帮助。以前有人做过吗?这更像是一种预防措施,但我很想实现这一点。

提前感谢您能给我的任何帮助

4

1 回答 1

2

据我所知,平台中没有为此发出警报,但是您当然可以进行一些编码/脚本来完成此操作。您可以使用任何 SDK、Microsoft Azure 管理库或命令行工具来获取 Azure 管理 API,但对于我的示例,我将使用 PowerShell。我没有完全执行此操作的脚本,但主要部分是获取实例状态,例如:

$NonReadyInstances = (Get-AzureDeployment $serviceName -Slot Production -verbose:$false).RoleInstanceList | Where-Object { $_.InstanceStatus -ne "ReadyRole" }

这是获取所有未处于就绪状态的实例;但是,随着系统的扩展等,您可能希望过滤掉其他几个有效的实例状态。有一个有效实例状态的列表,您可以使用它来决定要通知哪些状态。例如,在您的情况下,我认为 CyclingRole 或 RestartingRole 将是值得关注的。

检查 $NonReadyInstances 变量中返回的项目数,如果它大于零,请发送您的电子邮件。将其放入脚本并定期运行。

如果您不熟悉 Azure PowerShell Cmdlet,请参阅此处的入门和设置链接。- http://msdn.microsoft.com/en-us/library/jj156055.aspx

此外,如果您想在不从您自己的机器上运行它的情况下运行它,这里是 Azure 自动化预览服务的链接 - http://azure.microsoft.com/en-us/services/automation/

于 2014-08-20T12:16:23.017 回答