使用 ApplicationInsights 監控API

Application Insights 是多個平台上的 Web 開發人員所適用的可延伸「應用程式效能管理」(APM) 服務。 您可以使用它來監視即時 Web 應用程式。

from 什麼是 Application Insights?

一開始產生 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 也有一個很厲害的分析工具,
可以在這裡玩玩