使用Azure Application Insights效益

Azure Application Insights是對於要監控系統效能或是追蹤Application跟行動App使用率的一個非常有效的服務,追蹤使用率是企業內部IT部門很常做的一件事情,主要還是希望在有限資源下去開發有迫切需求的系統,而不是做隔靴搔癢的動作虛,畢竟,內部IT開發也還是有成本的,透過使用Application Insights則無論系統是在企業內部還是在雲端都可以快速監控。

早期也用過AVI Code來作為監控.NET Application,後來因為整合到System Center內,又要安裝龐大的產品,如果只是為了監控程式沒有其他應用而裝System Center,感覺又像殺雞用牛刀般。

雖然,感覺好像Application Insights很威,但是,它可以做到事情大概有下面幾點:

  • 追蹤系統可用性,監視系統效能和即時發送自定義的警告訊息
  • 可以採集一些資訊,例如:頁面資訊,系統事件或是自定義事件和相對應指標(metrics)
  • 有強大搜尋功能,可以搜尋追蹤的訊息和一些Exception資訊
  • 可以在各種平台上使用,甚至透過javascript也可以追蹤Html網頁
  • 不過只能在visual studio 2013 update 3版本後加入Application Insights SDK

Application Insights如何收集資訊呢?主要是透過HTTPs傳遞監控訊息,因為目前還在preview階段,所以,只能接收端還在北美資料中心內。當Application Insights收到資訊後,會依照資訊類型分別被派送到內部不同Channel中。

在使用Application Insights時,基本上只需要EnableSDK就可以,如果覺得官方監控的資訊不夠,也可以自己定義要收集的資訊進去

新版的SDK,統一採用TelemetryClient作為各個不同平台相同的API,透過這個類別可以搜集相關所需要的資訊,而這個類別可以分成六種Tag(在Portal是六種不同分類)分別如下:

  • TrackPageView : 顧名思義就是監控網頁,表單或是瀏覽器相關資訊

  • TrackEvent : 可以了解用戶操作行為跟Application事件,一般都是在觀察用戶怎樣操作系統,以及衍生的效能問題

  • TrackMetric : 主要是針對效能指標相關數據搜集,這個目前個人是還沒有用過,都是採用預設值

  • TrackException : 追蹤系統發生的Application Exception,這部分如果不自己追加,本身也會自動幫忙記錄,紀錄的Exception可以完整Trace出來,目前認為最好用之一

  • TrackRequest : 記錄Application收到的Request量和時間,作為監控效能之用

  • TrackTrace : 可以幫你追蹤到第三方元件,甚至你呼叫Store procedure也可以告訴這個花費多少時間完成

如果,純粹把Application Insights作為可以快速搜集Log或是即時監視系統效能或是問題的一個蒐集器,對於企業來說其實並不夠吸引人,很多企業內部系統,說不定都已經有相對應的解決方案,搞不好反而更可以符合企業內的系統應用(畢竟比較接地氣)

所以,Application Insights在資料分析,則提供不少資訊分析模組讓我們使用,而Analytics功能更可以針對搜集資料做客製化分析,畢竟,資料做有效分析才是有意義,進而做到提前預防系統問題或是進行策略應用,而不是純搜集資料而已,也因此應用在企業內不僅有了Log記錄功能也可以省掉對資料分析應用的開發,專注在其他有意義事物上