閱讀734 返回首頁    go 阿裏雲 go 技術社區[雲棲]


業務實時監控服務(ARMS)在票務係統的應用實踐

阿裏巴巴旗下-淘票票 王偉 撰稿

1. 簡介

淘票票為了開拓國際業務,需要做國際化的在線售票,並選擇了阿裏雲新加坡節點作為技術方案,項目上線後急需一套自動化的監控係統代替人肉維護監控。看了ARMS的功能說明,發現其剛好以很低的接入成本來滿足我們業務實時監控的需求,因此決定采用阿裏雲的業務實時監控服務(ARMS)做業務監控。

業務的基本需求是需要實時大盤和報警功能,對要實時統計訂票接口的各種狀態進行統計和報警,包括:

  • 訂票成功率,從業務層麵看是否係統運行正常。
  • 訂票接口狀態,如響應時間,同比環比調用,等,從係統層麵看是否係統運行正常。

以下篇幅從日誌設計到配置,到最終大盤展示。

2. 監控配置

2.1. 采集日誌

ARMS基本原理是采集日誌通過實時流式計算出聚合數據監控業務,可以通過ECS,LogHub,SDK等多種方式獲得日誌源,這裏我們選擇LogHub,因為我們所有使用阿裏雲的ECS已經采集日誌到日誌服務上,隻需要簡單通過配置即可讓ARMS從LogHub上獲取日誌。

采集到LogHub上的原始日誌示例為:

2017-08-21  

13:54:48,805|20170821|2f58c35e15033448888056471d27aa|tibizrouter|HSFBizProcessor-5-thread-265|INFO|API_DIGEST:108|RegionAPIImpl|getRegionNotice|1|0|Y[{"appChannel":"000100","appDevice":"458805f1934f07_dwada29t0gCNkDAIQwAJI4EOia__353317069054105","appEnv":"PROD","appPlatform":"ANDROID","appVersion":"4.1.2","regionId":1}]|-

2017-08-21   

13:54:48,806|20170821|2f58d75c13231228888057385d7976|tibizrouter|HSFBizProcessor-5-thread-244|INFO|API_DIGEST:108|ConfigAPIImpl|getByGroup|3|0|Y|[{"appChannel":"000100","appDevice":"660d3b4bd6872442__WX/m9PEqA2cDANH6dYHwh2k6__3550awdaw61314546","appEnv":"PROD","appPlatform":"ANDROID","appVersion":"4.2.0"}]|-

按照我們定義的分隔符解析日誌格式為JSON,格式示例如下:

{"__column15__":"28667","__column16__":"","runtime":"449","__column17__":"","__column14__":"4","response":"-","appName":"tigateway","time":"2017-04-19 21:24:20,462","apiName":"ticketnew","logLevel":"INFO","request":"{\"boxOffice\":\"TICKETNEW\",\"extAreaId\":\"3\",\"extCinemaId\":\"4\",\"extScheduleId\":\"28667\"}","traceId":"2f58d75c1492608260eeaa2072d7d0f","thread":"HSFBizProcessor-5thread-42","resultCode":"0","__column18__":"","indiaTime":"20170419","logName":"API:73","method":"PULL_SOLD_SEAT","success":"Y"}  

{"runtime":"1","response":"-","appName":"tibizrouter","time":"2017-04-19 21:24:21,102","apiName":"MovieAPIImpl","logLevel":"INFO","request":"[{\"appChannel\":\"000100\",\"appDevice\":\"ANcca0bff117c2faaf__WPnpLeWzcDAIlMjjPv2LJS\",\"appEnv\":\"PROD\",\"appPlatform\":\"ANDROID\",\"appVersion\":\"4.1.0\",\"movieId\":2515,\"regionId\"1}]","traceId":"2f58d75c1492adwa611022076d7d0f","thread":"HSFBizProcessor-5-thread-40","resultCode":"0","indiaTime":"20170419","logName":"API_DIGEST:108","method":"getMovieDetail","success":"Y"}

其中:

• method是業務方法名,通過appName,apiName和method來唯一確定某個應用係統上某個接口的業務方法;
• success用來表示該業務方法執行成功與否;
• resultCode來用表示方法返回的錯誤碼;
• runtime表示該方法執行的時間,單位為毫秒,可以用來統計哪些方法執行較慢,做後期優化;
• request為方法請求參數。

2.2.配置切分

對以上已經存在的字段按照JSON切分器切分,為了計算成功率,還需要把成功數轉換成數字類型,方便在數據集做累加來計算。

2.3.配置數據集

配置接口成功率,通過sum累加得到成功的數量successCount,通過count得到總數量totalCount,使用successCount/totalCount得到成功率,當然也可以額外計算平均接口耗時等參數,在通過下磚維度獲取按維度的成功率。

2.4.配置報警

由數據集可以直接配置報警,當成功率低於一定閾值的時候直接發出報警,實時監控線上業務,最大成都降低業務影響範圍。

2.5.配置業務大盤

通過配置好的數據集就可以配置業務接口成功率大盤了,用來監控各個業務的實時穩定性。

3. 業務提升

我們通過ARMS對目前線上大部分業務性能指標如成功率,接口錯誤碼分布,接口平均響應時間等性能參數做了實時監控,尤其在前段時間兩次重大活動中及時發現線上性能問題,針對特定問題及時響應解決起了巨大的作用,提升了業務穩定性和業務響應速度。

除穩定性方麵,我們也通過ARMS配置實時業務數據監控,通過按維度統計訂單,用戶訪問等業務數據,根據不同時間段的業務數據快速調整業務運營和決策,對業務增長起了很好的推動作用。

ARMS正在公測,速來

最後更新:2017-08-23 11:02:29

  上一篇:go  基於阿裏雲數加MaxCompute的企業大數據倉庫架構建設思路
  下一篇:go  測試-信息標題11