2017-07-10 103 views
1

我已經在我創建的Azure WebApp上啓用了應用程序洞察。我的WebApp正在調用第三方API,它在配額上運行。我每個月只允許撥打10萬個電話。使用Azure Application Insights創建調用第三方API的提醒

我需要跟蹤這些API調用,以便在調用數量達到50%時創建警報,然後再創建75%的警報。

我每次進行調用時都會使用TrackEvent,並且AppInsights儀表板中的事件確實會增加。但是,我似乎無法創建一個警報時,進行了一定數量的通話。我無法從「活動」下拉列表中看到它。

此外,我需要的另一個要求是當每分鐘呼叫次數超過10次時創建警報。

TrackEvent是否適合這些要求?

我做這樣的事情...

var telemetryEventClient = new Microsoft.ApplicationInsights.TelemetryClient(new Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration() { InstrumentationKey = "Instrumentation Key" }); 
telemetryEventClient.Context.Operation.Name = "MyAPIProvider"; 

var properties = new Dictionary<string, string> 
{ 
    { "Source", "WebAppToAPI" } 
}; 

var metrics = new Dictionary<string, double> 
{ 
    { "CallingAPIMetric", 1 } 
}; 

telemetryEventClient.TrackEvent("CallingAPI", properties, metrics); 

,但是當我看着設立警戒並放置的50000閾值(用於測試,我只是把5),我永遠達不到的事件數總是1.我以正確的方式接近這個嗎?

回答

2

您嘗試定義的警報始終會查看您在自定義事件中提供的值 - 而不是您正在觸發的事件數量。
您可以創建一個自動流程來查詢您的事件,並在查詢結果超過某個閾值時向您發送電子郵件。 適用於Flow和Microsoft Logic Apps的Application Insights連接器就是爲此而創建的,並且可以在任何文檔類型(事件,度量或甚至跟蹤)的任何查詢結果上定義。 關於如何創建自己的流程的逐步文檔是here

至於您的查詢 - 你需要一個簡單的分析查詢是這樣的:

customEvents 
| where timestamp > ago(1h) // or any time range you need 
| where name == "CallingAPI" 
| count 
+0

這是你如何使用流量/邏輯應用程序真的很有趣。我一定會在以後的另一個項目中使用它。但是......與公司安全人員進行了聊天,他說任何使用API​​密鑰和/或鏈接另一個應用程序的東西都不會被接受。還有其他的選擇嗎?我們正在努力解決「資源枯竭」問題,這就是爲什麼我要計算一小時內發生多少次「CallingAPI」的原因。如果閾值設置爲50,並且一小時內有51個呼叫,則會發送電子郵件警報。我應該如何執行自定義事件來獲取事件數量而不是傳遞值? – james

相關問題