我送customEvents
到Azure應用程序的見解,是這樣的:警報使用Azure的見解和/或分析差錯率超過閾值的
timestamp | name | customDimensions
----------------------------------------------------------------------------
2017-06-22T14:10:07.391Z | StatusChange | {"Status":"3000","Id":"49315"}
2017-06-22T14:10:14.699Z | StatusChange | {"Status":"3000","Id":"49315"}
2017-06-22T14:10:15.716Z | StatusChange | {"Status":"2000","Id":"49315"}
2017-06-22T14:10:21.164Z | StatusChange | {"Status":"1000","Id":"41986"}
2017-06-22T14:10:24.994Z | StatusChange | {"Status":"3000","Id":"41986"}
2017-06-22T14:10:25.604Z | StatusChange | {"Status":"2000","Id":"41986"}
2017-06-22T14:10:29.964Z | StatusChange | {"Status":"3000","Id":"54234"}
2017-06-22T14:10:35.192Z | StatusChange | {"Status":"2000","Id":"54234"}
2017-06-22T14:10:35.809Z | StatusChange | {"Status":"3000","Id":"54234"}
2017-06-22T14:10:39.22Z | StatusChange | {"Status":"1000","Id":"74458"}
假設狀態3000
爲錯誤狀態,我想在過去一小時內某個百分比的Ids
最終處於錯誤狀態時收到警報。
據我所知,Insights默認情況下不能這樣做,所以我想嘗試approach described here來編寫可能觸發警報的Analytics(分析)查詢。這是我已經能夠拿出最好的:
customEvents
| where timestamp > ago(1h)
| extend isError = iff(toint(customDimensions.Status) == 3000, 1, 0)
| summarize failures = sum(isError), successes = sum(1 - isError) by timestamp bin = 1h
| extend ratio = todouble(failures)/todouble(failures+successes)
| extend failure_Percent = ratio * 100
| project iff(failure_Percent < 50, "PASSED", "FAILED")
但是,我警告正常工作,查詢應:
- 返回「通過」即使沒有活動在一小時內(另一個警報將照顧沒有事件)
- 只在每小時內考慮每個Id的最終狀態。
由於寫入請求,如果沒有事件,查詢既不返回「PASSED」也不返回「FAILED」。
它還考慮到任何記錄與Status == 3000
,這意味着,上面的例子將返回「失敗」(5超過了10記錄具有狀態3000),而在現實中只是出於1 4個IDS在結束了錯誤狀態。
有人可以幫我找出正確的查詢嗎?
(和可選的輔助問題:有沒有人安裝使用洞察的類似警告這是一個正確的做法?)
爲了將來的參考,如果我不'bin'的時間戳,查詢總是返回一些東西(因爲總和返回0),所以綜合結果沒有幫助。因此,要麼保持垃圾箱,要麼,正如我最終所做的那樣,如果失敗==成功== 0,則返回「PASSED」。無論如何,謝謝你的好解釋 – madd0