第0043期•2017.12.20 發行
ISSN 2077-8813

首頁 >專題報導

利用AI洞悉資訊服務

作者:許凱平 / 計算機及資訊網路中心作業管理組副組長

Application Insights(以下簡稱AI)是微軟架設於Azure雲的APM服務(Application Performance Management, 應用程式效能管理)[2]。相較於傳統的日誌分析(Log Analysis)與效能監控(Performance Monitoring),APM可以取得更即時、更全面、更真實、更詳細的服務資訊。根據Gartner的資料,目前市場上的領導品牌為Dynatrace、AppDynamics與New Relic三家,這幾家的產品功能相當齊全,當然也就價格不斐。如果有足夠的經費,當然可以優先考慮這幾家;但是如果沒有的話,不妨從近乎免費的AI著手。AI結合了領域知識與機器學習,不但可以讓我們找到服務哪裡出了問題,以及問題的根本原因,更可以讓我們洞燭機先,在問題的徵兆出現時,提早通知我們,預先進行處理。
除了微軟本身的.NET之外,AI也支援Java、Node.js建構的專案,因為筆者對.NET較為熟悉,所以以下就以.NET說明AI的使用。

安裝與使用
因為AI是佈署於微軟雲端的服務,所以首先必須先有一個Azure帳戶(免費的即可)。如果要監控已經上線的系統(IIS伺服器),可以下載狀態監視器安裝程式(Application Insights Status Monitor),經由簡單的設定,就可以開始監控你的應用程式。

登入Azure Portal後,就可以看到app1已經加進了儀表板。

由於資料的蒐集需要一段時間,所以剛設定好的監控需要靜待約一個禮拜後,各種統計資訊才會漸漸浮現。我們先從已經設定的服務來看,首先是「服務概觀」。需要注意的地方會以紅色標示,我們可以看到今天有兩個失敗的要求,點擊進去可以看到更詳細的資料。返回碼是403(拒絕存取)。

Failed Request Tracing
伺服器之所以拒絕的原因,可以從AI幫我們記錄的資料中看出來:(1)沒有用HTTPS,(2)過時的時戳。以往程式設計師必須找系統管理者調出Web Server Logs,然後再從所有的記錄中,過濾出可能有問題的記錄,現在透過AI的服務,我們可以很快就找到重點、相關資訊以及導出資訊(IP 用者的地點)。

對照IIS Log,我們可以看到,AI將IP最後一段遮罩為0。綜合以上,我們可以推測出,可能是Baidu 的根據某人的瀏覽紀錄(需要登入的網頁),以搜尋機器人繼續追蹤這個網頁。所以根本原因是搜尋引擎搜尋了不用(該)搜尋的網址。這一點可以透過robots.txt的設置,通知搜尋引擎不需要對我們的服務進行索引,或是以防火牆擋掉。

2017-12-06 13:33:19 172.16.x.x GET /adfs/ls/ wa=wsignin1.0&wtrealm=https%3A%2F% 2Fxxx.ntu.edu.tw%2Fworkbench%2Femployee%2Fsso.login.do&wctx=sso-rdu-%252Ffiles&wct=2017-10-18CST17%3A01%3A33Z 80 - 123.125.71.xxx Mozilla/5.0+(compatible ;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html) - 403 4 64 0

使用者統計
這些資訊Google Analytics 的功能相近,我們可以看到這個服務的使用者大多來自於台灣,累計有12k個不同的使用者,使用的語言是繁體中文,以Chrome瀏覽器居多。

用戶端錯誤
伺服器端最難蒐集的是在使用者的瀏覽器的(動態)錯誤,例如不同的設備(PC/NB/Tablet/Mobile Phone)可能對網頁支援程度不同。有些瀏覽器的某些版本會有問題,有些不會;或是安全性的設定造成網頁無法正常執行等等。這些問題都可以利用AI蒐集資料。以下圖為例,就是一個在Ajax回傳資料,在某些瀏覽器上會出現無法讀取屬性問題。

深入相依性呼叫
在一些較為複雜的情境,有些網頁會去呼叫遠端服務,例如將使用者上傳的文件,在送到某個網頁服務進行分析,然後在結果存在資料庫,再顯示給使用者。一但發生問題,我們要找到是哪個部分出問題往往要費很大的力氣。

應用程式對應。

現在可以透過AI一層一層Drilldown,找到問題的根源。例如以下的實例,是因為.NET的遠端呼叫元件預設最大等待時間是100秒,一但遠端服務的延遲超過100秒,系統就會中斷執行。

結語
Application Insights對於其所監控資訊系統進行基於機器學習的診斷和分析,提供系統管理者與程式開發人員一個更好的偵錯環境。雖然使用上仍需大量的領域知識,但是透過資訊的融合,可以讓我們更方便的找到原因以及預防問題發生,是個值得一試的好工具。

參考資料
[1] Application Insights, 應用程式效能管理(APM)服務
https://docs.microsoft.com/zh-tw/azure/application-insights/
[2] APM, Application performance management, 應用程式效能管理
https://en.wikipedia.org/wiki/Application_performance_management
[3] 2016 Gartner Magic Quadrant for APM Suites
http://www.dynatrace.com/gartner-magic-quadrant-application-performance-monitoring-suites/
[4] 在執行階段使用 Application Insights檢測Web應用程式
httpf://docs.microsoft.com/zh-tw/azure/application-insights/app-insights-monitor-performance-live-website-now