如何在 Azure Application Insights 中获取 Web 测试的可用性 SLA 报告

How to get Availability SLA report of web test in Azure Application Insights

我们正在使用 Application Insight 并添加了几个 Web 测试来监控我们的站点。 Web 测试全部 运行 每 5 分钟从三个位置进行一次,所有三个位置都需要在 5 分钟内失败才能关闭警报。

Application Insights 中是否有一些报告可供我们用来向客户报告上个月的可用性?我们需要可用性百分比至少保留一位小数。

更新: 根据@ZakiMa 的回答,我得到了以下查询:

let lastmonthstart = startofmonth(now(), -1);
let lastmonthend = endofmonth(lastmonthstart);
availabilityResults
| where timestamp between(lastmonthstart .. lastmonthend)
| summarize failurecount=countif(success == 0), successcount=countif(success == 1) by name, bin(timestamp, 5m)
| project failure = iff(failurecount > 0 and successcount == 0, 1, 0), name, bin(timestamp, 5m)
| summarize totalFailures = sum(failure), totalTests = count(failure) by name
| project ["Name"] = name, ["SLA"] = todouble(totalTests - totalFailures) / todouble(totalTests) * 100
| order by ["SLA"]

Application insights 有 "Availability" 指标,您可以在 MetricsExplorer 中绘制该指标,然后将其固定到您的仪表板。 HTH!

您可以使用 Application Insights Analytics 计算 SLA。单击概览页面上的 "Analytics" 菜单项并使用以下查询:

availabilityResults
| where timestamp > ago(30d)
| summarize _successCount=todouble(countif(success == 1)),
            _errorCount=todouble(countif(success == 0)),
            _totalCount=todouble(count()) by name
| project
          ["Name"] = name,
          ["SLA"] = _successCount / _totalCount * 100
| order by ["SLA"]

你应该得到这样的东西:

然后您可以将其固定到您的仪表板(右上角有一个固定图标):

这只是一个示例 - 您可以在此处找到完整的分析查询语言参考 - 它非常强大:https://docs.microsoft.com/en-us/azure/application-insights/app-insights-analytics-reference。您可以根据您对 SLA 的定义进行调整。

编辑:这是一个更接近您的问题的查询示例

availabilityResults
| where timestamp > ago(30d)
// check whether location failed within 5m bin
| summarize _failure=iff(countif(success == 0)>0, 1, 0) by name, location, bin(timestamp, 5m)
// check whether all locations failed within 5m bin
| summarize _failureAll=iff(sum(_failure)>=3, 1, 0) by name, bin(timestamp, 5m)
// count all failed 5 minute bins and total number of bins
| summarize _failuresCount=sum(_failureAll), _totalCount=count() by name
| project ["Name"] = name,
          ["SLA"] = todouble(_totalCount - _failuresCount) / todouble(_totalCount) * 100
| order by ["SLA"]

要针对超过 1 个应用程序洞察项创建 SLA 'report',请执行以下操作(也适用于仅一个 ai)。

在日志分析工作区中:添加参数项。添加时间范围选择器和资源选择器。使用资源选取器,select 作为数据源:查询,并输入以下 Azure Resource Graph 查询:

where type =~ 'microsoft.insights/components'
| summarize by id, name

在下面,添加一个查询项,查询如下:

availabilityResults
| summarize Uptime= avg(toint(success))*100 by bin(timestamp, 366d), 
| sort by Uptime asc, appName asc

也select作为以下参数:

  • 数据来源:日志
  • 资源类型:Application Insights
  • 资源:资源选择器参数的名称
  • 时间范围:您的时间范围选择器的名称。

然后选择什么样的可视化:你可以玩这个。我推荐 Graph - Honeycomb。对于 Uptime 字段,将 Units 设置为 Percentage,将 Style 设置为 Decimal 并将 Maximum fractional digits 设置为 3,以获得漂亮的 99,xxx% 正常运行时间百分比。

给你!