Application Insights 是多個平台上的 Web 開發人員所適用的可延伸「應用程式效能管理」(APM) 服務。 您可以使用它來監視即時 Web 應用程式。
一開始產生 asp.net core web api 時,ApplicationInsights SDK 就已經安裝了
直接執行專案,在診斷工具視窗就可以看到他的身影
我們可以把監控的資訊上傳到 Azure,可以做遠端監控和效能分析等工作,
首先要有 Azure 帳號,然後在專案上案滑鼠右鍵 > Application Insights > 設定 Application Insights
出現設定頁面選擇『免費開始』,會出現下圖,若是只想測試,記得點選暫停蒐集資料
註冊之後,就開始部屬,完成之後你會看到專案裡出現新的檔案
這是紀錄 Application Insights 的版本,另外在 appsettings.json 會出現 ApplicationInsights Key 的設定,
呼叫幾次 API 之後,到 Azure portal 上去看,可以看到監測的數據
數據不會太即時,一開始可能要等幾分鐘才會出現,
我們也可以看到比較詳細的資訊,
依據上圖點選,可以看到此要求的詳細內容
這些偵測的內容其實是可以自訂的
參考自訂事件和度量的 Application Insights API
在 ValuesController 增加三個 API 來測試看看
[HttpGet("Event")]
public string Event(string msg, string id, string name) {
Microsoft.ApplicationInsights.TelemetryClient client = new Microsoft.ApplicationInsights.TelemetryClient();
Dictionary<string, string> data = new Dictionary<string, string>();
data.Add("MSG", msg);
data.Add("ID", id);
data.Add("NAME", name);
client.TrackEvent("發出 Event Get", data);
return msg;
}
[HttpGet("Trace")]
public string Trace(string msg) {
Microsoft.ApplicationInsights.TelemetryClient client = new Microsoft.ApplicationInsights.TelemetryClient();
Dictionary<string, string> data = new Dictionary<string, string>();
data.Add("MSG", msg);
client.TrackTrace($"發出 Trace Get: {msg}", Microsoft.ApplicationInsights.DataContracts.SeverityLevel.Information, data);
return msg;
}
[HttpGet("Exception")]
public string Exception(string msg) {
Microsoft.ApplicationInsights.TelemetryClient client = new Microsoft.ApplicationInsights.TelemetryClient();
client.TrackException(new System.Exception($"發出 Exception Get: {msg}"));
return msg;
}
這些 Track 系列的方法,參數只要是 `IDictionary<string, string>` 都表示自訂資料,你可以自己填需要的資料。
個別呼叫過後,我們可以在 Azure portal 查詢
首先,可以在搜尋找到所有資料
點選其中一個事件來看看,在右邊的自訂資料就是我們自己填的那些內容
追蹤(TrackTrace)只能用搜尋的找到,但是例外和事件可以藉由產生圖表來顯示
善用 ApplicationInsights 可以幫我們減少很多紀錄 LOG 的工,
而且 ApplicationInsights 也有一個很厲害的分析工具,
可以在這裡玩玩