我相信问题更多是关于如何获得实际警报的链接,就像在这样的电子邮件中显示的那样。
而 linkToSearchResults 指向我们可以执行搜索查询的页面。
仔细查看警报的链接,它似乎被格式化为
https://ms.portal.azure.com/#blade/Microsoft_Azure_Monitoring/AlertDetailsTemplateBlade/alertId/%2fsubscriptions%2f<subscription_id>%2fproviders%2fMicrosoft.AlertsManagement%2falerts%2f<alert_id>/invokedFrom/emailcommonschema
现在,如果我们在启用通用模式时查看作为警报的一部分收到的 json,它包含这些信息。
{
"essentials": {
"alertId": "/subscriptions/<subscription ID>/providers/Microsoft.AlertsManagement/alerts/b9569717-bc32-442f-add5-83a997729330",
"alertRule": "Contoso IT Metric Alert",
"severity": "Sev3",
"signalType": "Metric",
"monitorCondition": "Fired",
"monitoringService": "Platform",
"alertTargetIDs": [
"/subscriptions/<subscription ID>/resourceGroups/aimon-rg/providers/Microsoft.Insights/components/ai-orion-int-fe"
],
"originAlertId": "74ff8faa0c79db6084969cf7c72b0710e51aec70b4f332c719ab5307227a984f",
"firedDateTime": "2019-03-26T05:25:50.4994863Z",
"description": "Test Metric alert",
"essentialsVersion": "1.0",
"alertContextVersion": "1.0"
}
}
来自msdoc 的引用。
让我们看看,这个架构有 essentials.alertId 看起来很熟悉上面 url 中使用的内容(但采用 url 编码形式)。
所以最终生成友好 url 的代码就变成了这样
string.Format("https://ms.portal.azure.com/#blade/Microsoft_Azure_Monitoring/AlertDetailsTemplateBlade/alertId/{0}",
HttpUtility.UrlEncode(alertEssentials.AlertId)),
希望这会有所帮助!