首页 > 解决方案 > Azure Application Insight 查询以获取成功率

问题描述

对如何在 Azure 仪表板上显示成功率有疑问。如果我有一个表明成功或失败的远程事件 - 这很简单:

    customEvents
    | where name == "ResponseEvent" and customDimensions.Condition == "test"
    | summarize count() by tostring(customDimensions.State) //State could be Success|Failure
    | render piechart

但就我而言 - 我有 2 个事件:RequestEvent、SuccessResponseEvent,我想从这两个事件中获得成功率,例如:successRate = 100*successCount/requestCount。

我最终得到了这个加入:

    customEvents
    | where name == "RequestEvent" and customDimensions.Condition == "test"
    | summarize  requestCount = count()
    | extend joinField = "1"
    | join ( customEvents
    | where name == "SuccessResponseEvent" and customDimensions.Condition == "test"
    | summarize  successCount = count()
    | extend joinField = "1")
    on joinField
    | extend successRate = (100 * successCount / requestCount)
    //////| extend failureRate = 100 - successRate 
    | project successRate
    | render table

我得到了我需要的值,但我只设法将它显示为表格,而我需要一个饼图。我考虑过添加联合:

    let success = view () { print x=toint(80) };
    let failure = view () { print x=toint(20) };
    union withsource=TableName success, failure
    | render piechart

但我没有在我的请求中看到如何做到这一点。

或者使用 let 语句创建变量并尝试计算所有内容并使用 materialize(createRequestRecieved) 连接,但这会导致很多错误,我希望存在一些简单的方法。

问题是:也许有人可以指出我如何实现这一点:计算一个值,也许将其显示为两个值(成功和 100 成功),并以对“渲染饼图”运算符有效的格式排列它们?

第二个问题,不是那么重要:我可以通过一些现有的领域加入他们吗?乳清我正在尝试使用 joinField = tostring(customDimensions.MappingField) 我收到一个错误:确保表达式:customDimensions.MappingField 确实是一个简单的名称

标签: azureazure-application-insightsazure-log-analytics

解决方案


如果您要使用饼图,则需要一个字符串图例字段和该图例的每一行的值,因此两个结果的联合应该起作用:

requests
| summarize Success = sumif(itemCount, success == true)
| project Legend = "Success", Value = Success 
| union
(requests
| summarize Failed = sumif(itemCount, success == false)
| project Legend = "Failed", Value = Failed )
| render piechart

使用条形图将允许summarize在一个查询中使用两个子句而无需连接/联合,并且可以提高性能:

requests
| summarize Success = sumif(itemCount, success == true), Failed = sumif(itemCount, success == false)
| project Legend = "Status", Success, Failed 
| render barchart 

同样,要在同一查询中计算费率:

requests
| summarize Success = sumif(itemCount, success == true), Failed = sumif(itemCount, success == false)
| extend SuccessRate = Success * 1.0 / (Success + Failed)

推荐阅读