OMS 彙總搜尋 (aggregate queries) 的算數運算 (arithmetic operations)

概要: 學習如何在 OMS 彙總搜尋中使用算數運算。

本文要介紹的功能將讓您能夠對 OMS 中的算數表示式做彙總。過去,您可以利用 Extend 來使用算數表示式,但您無法對其執行任何彙總。此新搜尋功能讓您能夠對您的指標做更進一步的搜尋。

在彙總函數中使用算數表示式

要應用算數運算的一個方式就是在彙總函數中使用它們。假設現在您正在從 Application Insights 進行應用遙測,並想要以秒為單位而非以毫秒為單位來查看平均請求時間。

Type:ApplicationInsights TelemetryType=Request ApplicationName=fabrikamoms_ai | measure avg(div(RequestDuration,1000)) as AvgRequestDurationSec Interval 1HOUR

此指令會先將 RequestDuration 分成 1000 份來將單位換成秒,接著再計算出每小時的平均。若您沒有使用取樣,上述的指令可以正常的執行。假設現在您在利用取樣來減少遙測數據流量,每一次的請求都有一個 SampledCount 欄位,其會回傳請求所代表的樣本數。RequestDuration 欄位在此案例中是這些取樣的請求時間總和。您可以藉由將 RequestDuration 除以 SampledCount 來計算平均的請求時間。您可以接著藉由以下指令來視覺化每小時的平均:

Type:ApplicationInsights TelemetryType=Request ApplicationName=fabrikamoms_ai | measure avg(div(div(RequestDuration,SampledCount),1000)) as AvgRequestDurationSecPerSample Interval 1HOUR

此指令先將 RequestDuration 除以 SampledCount 再算出每小時的平均(也就是,每個平均值得每小時平均)。

假設您想要計算您電腦上所有磁碟每小時寫入的最大值。可使用以下指令:

Type= Perf CounterName="Disk Writes/sec" Computer="BaconDC01.BaconLand.com" | measure max(product(CounterValue,60)) as MaxDWPerMin by InstanceName Interval 1HOUR

使用 Extend 與彙總函數

另一個使用算數運算的方法是先用 Extend 指令,再將其導入到一個 measure 指令中。接續先前的範例,假設您正在從您的應用程式中提供可用的遙測。每一個記錄都有一個 AvailabilityResult 欄位,可填入 Pass 或是 FailAvailabilityResult 欄位在通過可用的閾值時會被設定為 Pass。您可以藉由以下的指令來查看在任何時間通過的測試量和總測試量的比較:

Type:ApplicationInsights TelemetryType=Availability ApplicationName=fabrikamprod | Extend if(termfreq(AvailabilityResult,"Pass"),1,0) as Result | measure sum(Result) as PassedCount, count() as TotalCount Interval 1HOUR

 

在此範例中,Extend 指令會查看 AvailabilityResult 欄位是否為 Pass。若是,就回傳 1,否則回傳 0。注意到若您使用 Extend,您需要提供一個別名(使用 as)來讓您在匯總函數中引用它。第一個算數函數(sum)會將 Extend 傳來的結果加總來決定通過的測試數量,而第二個計算函數(count)會計算總數量。若您想加入 Fail 的數量,可以利用以下指令:

Type:ApplicationInsights TelemetryType=Availability ApplicationName=fabrikamprod | Extend if(termfreq(AvailabilityResult,"Pass"),1,0)  as Result | measure sum(Result) as PassedCount,  sum(if(termfreq(AvailabilityResult,"Fail"),1,0) ) as FailedCount, count() as TotalCount Interval 1HOUR


想查看完整的運算列表,請參閱:Log Analytics 搜尋參考