基於IoT全鏈路實時質量-魔洛哥

簡介: 通過基於IoT的全鏈路實時質量,業務使用狄仁傑進行全鏈路埋點後,可一鍵接入魔洛哥平臺,實現終端問題的實時感知和鏈路分析,以及智能終端系統業務場景的全鏈路實時質量。整體方案接入成本低(分鐘級別接入),可實現全鏈路的實時質量分析,以及精準的終端預警能力。幫助開發運維同學實時發現問題,快速問題的定位分析。

1 背景

伴隨着物聯網(IoT)的快速發展,軟硬件交互場景越來越普及,在自用和商用的空間場域中,我們智慧園區、未來酒店的智能化場景也得到了極大的豐富,打造出多款智能有科技感的產品,如人臉門禁、雲前臺、入住自助機、無線AP、雲打印等等。空間域中圍繞“人”、“設備”、“空間”打造的“智能化場景”有着特殊的物理空間上的分散和連接,硬件終端的異地分散部署、終端與雲端(或邊緣端)的連接通信,服務端-雲端-硬件終端的遠程指令控制等。物理空間上的分散和連接,增加了監控運維的難度,時常出現用戶的各種問題反饋:

  • 設備離線
  • 固件升級後服務不可用
  • 終端應用升級後服務不可用
  • 卡死、白屏、樣式錯亂
  • 業務功能異常、服務異常
  • 上游依賴應用系統服務異常

基於阿里巴巴最佳實踐打造的智慧園區和未來酒店產品,已逐步走向商業化輸出,問題也從內部用戶反饋擴大到外部客戶反饋,如果問題總是通過客戶反饋才能被動感知到,必然會導致客戶對我們的產品逐漸失去信心。如何才能變被動爲主動,使得運維、開發和測試同學具備感知線上問題、診斷定位根因、快速應急止血的能力,是一件很必要的事情。

                                                              附拓撲結構圖

2 核心問題&挑戰

基於IoT打造的交互場景,從部署架構看,除了長鏈路的特性外,還有大規模分散部署的硬件終端,以及跑在終端上的軟件系統。通常來說,智能終端軟硬件交互系統是交付和長期運維的重難點,一方面存在硬件的不同廠商、不同型號、物理性損耗、ROM升級、摩爾定律等引發的五花八門的偶現問題,另一方面存在軟件升級、依賴不可用等引發的重大問題。

我們從日常具體問題中抽象提煉出2大核心問題:

  • 終端問題難感知:終端日誌缺失、偶發難發現、質量度量視圖缺失
  • 長鏈路問題難定位:質量分析模型不準確、端到端的日誌斷連

全鏈路日誌和質量度量視圖,是解決問題的關鍵所在。但要在智能終端軟硬件交互系統中建設全鏈路日誌和通用質量度量視圖有一定的挑戰,具體挑戰如下:

3 解決方案

基於IoT的智能終端交互系統,設備終端一般由交付同學來運維和升級,終端軟件由客戶端開發同學運維和升級,服務端由後端開發運維和升級。系統問題可能發生在硬件終端上、可能發生在終端應用軟件上、也可能發生在服務端依賴上。多職能角色的協同,長鏈路的調用,導致問題“發現-定位-止血”的耗時遠高於純軟件系統。

結合日常問題的分析經驗,我們期待的問題發現定位方式是:首先能夠實現終端問題的快速準確感知,其次基於業務場景指標呈現質量概覽,並通過不同維度的質量分析模型進行下鑽,最終通過全鏈路的調用日誌明細確定根因。這樣從業務場景出發,發現異常問題,串聯全鏈路,任何職能角色都可以方便易懂的感知,關注和分析系統質量情況。同時我們的解決方案要滿足以下要求才能真正的解決用戶的難度和痛點。

針對上述的問題解決方式和要求,通過調研分析發現集團內普遍存在服務端應用的長鏈路監控預警和分析診斷工具,但串聯終端應用在內的端到端的長鏈路診斷分析工具比較少。終端應用和服務端應用使用的技術棧差別很大,即使在同一個業務場景的邏輯實現中,日誌也是獨立埋點的,調用鏈路也是斷開的。要建設一套各種技術棧兼容的通用埋點工具成本很高,經過內外部的多方調研,我們選擇在自有業務中引入“狄仁傑”——它是專注於業務場景的全鏈路日誌分析,輕量級的sdk接入,通過一行代碼即可將系統中基於slf4j接口的業務日誌全部用鷹眼traceId串起來,還支持“業務場景”語義的標識傳遞,可實現從終端到服務端的全鏈路染色。

使用狄仁傑將日誌進行全鏈路串聯後,一鍵接入基於IoT的實時質量工具魔洛哥,可實現基於專家經驗設計的業務質量大盤等質量視圖,以及自動配置的終端異常感知預警模版,整個方案採用魔洛哥產品化接入和數據服務(參考5.2 數據服務)的能力實現不同產品通用質量視圖的分鐘級創建,同時根據質量大盤指標自動配置預警規則和模版,做到終端異常的實時準確感知和問題的快速定位分析,整體方案如下:

整體方案

以上2個核心問題的解決方案,已在“魔洛哥”承載的多個業務產品中應用實踐,詳見4.1和4.2。爲了支撐不同IoT產品的實時質量建設的差異化訴求,“魔洛哥”平臺本身的基礎能力也在持續打磨中。

4 “魔洛哥”中的落地策略&最佳實踐

4.1 終端異常感知

智能終端系統由於其特殊性有很多偶現性的"疑難雜症",同時"疑難雜症"難發現難定位。經過分析發現導致這一問題的兩個因素:

  • 基於終端的質量度量視圖缺失(終端鏈路質量,終端設備質量等)
  • 智能終端多職能角色的協同(客戶端開發、前端開發,算法開發,硬件開發,硬件供應商,硬件部署運維團隊等)

因此我們需要一種工具能夠像服務端的Sunfire、雲監控、eagleeye工具平臺一樣,能夠快速感知智能終端異常,同時精準定位出異常的鏈路模塊,使得異常模塊的負責人可快速的進行問題的接手和處理。通過調研我們開發了基於IoT的實時質量工具-魔洛哥,針對智能終端異常難感知採用了以下策略:

智能終端監控預警

通過基於專家經驗定義終端系統的異常指標來實時監控異常並觸發預警。首先將種類繁多且分散的智能終端系統日誌進行SLS雲化存儲,其次藉助魔洛哥平臺的數據服務能力,直接通過SLS編寫指標查詢SQL來生成HSF/HTTP服務,最後使用魔洛哥平臺配置基於專家經驗且通用的終端預警模版和規則,最終實時匹配預警規則產生告警。

魔洛哥平臺詳細實踐操作流程如下:

智能終端實時質量

首先智能終端系統存在多角色的協調,一旦發現了終端異常後,需要多角色參與進行分析,導致問題的止血時間較長,因此我們需要一種工具除了能夠反饋終端異常外,還能返回終端鏈路的過程質量,使得問題發生後,通過鏈路模塊實時質量,能夠精準的感知到異常鏈路模塊,以此來提升異常的感知能力。其次智能終端系統還存在很多偶發性問題,而偶發性問題很難觸發預警,但確非常影響用戶使用體驗(例如一臺門禁設備人臉識別成功率低,導致高峯通行時段極差的通行體驗),因此也需要一種工具能夠及時透出偶發的設備異常問題,通知運維或者開發同學進行優化,提升終端用戶的體驗。

綜上分析,我們需要提供一種標準化的運維工具,將終端硬件和系統的質量情況實時透出,幫助開發和運維同學快速感知問題,首先將種類繁多且分散的智能終端系統日誌進行SLS雲化存儲,然後定義出基於硬件智能終端的鏈路質量度量模型,藉助魔洛哥平臺的數據服務能力,直接生成基於智能終端系統的實時質量。

詳細方案如下:

魔洛哥平臺詳細實踐流程如下:

4.2 基於業務場景的全鏈路實時質量

通用實時質量視圖

實時質量的度量分析已經存在很多成熟的產品,比如主要用於服務端的Sunfire、雲監控、eagleeye和用於前端的體驗+等,那爲什麼我們不直接使用這些平臺,而要着重提到基於業務場景的全鏈路實時質量呢?在我們實踐業務質量保障的過程中,發現單純的服務端和前端實時質量度量及監控不能完全滿足我們想從用戶實際體驗的角度來度量和發現質量問題的訴求,主要體現在以下方面:

  • 產品視角維度:割裂的服務端和前端實時質量,從技術棧上就天然的把產品分開了,但是對於用戶來說,不論是服務端問題、前端問題或者設備問題,都可能造成用戶有損的體驗。因此,我們需要一個和用戶視角一致的維度來"看見"產品的質量。
  • 業務場景視角維度:舉個例子,用戶在長鏈路場景中,會訪問多個前端頁面和服務端接口,前置步驟操作成功(包含接口及頁面)是最終業務成功的必要條件。按照比較常規的做法,我們會去看最後一個接口的成功率,但是這樣就過濾掉了前面失敗的用戶。優化一下,我們用最後一個接口成功的數量比上業務起始接口的調用數量,但是如果前端出現了一些不影響流程但是確實影響用戶體感的問題(比如:最後一個接口調用成功跳轉的提示頁面展示錯誤),也就無從感知了。因此,我們需要一個涵蓋前後端的業務場景質量視角。

當然,除了我們定義的產品視角和業務場景視角,基礎的服務端和前端應用視角對於完整的質量全方位保障也是必不可少的,所以我們提煉瞭如下產品模塊:

  • 產品質量概覽:從業務場景入手,通過業務實時成功率,平均耗時以及日環比和周環比來反饋業務的整體質量情況;同時產品質量概覽中細分出了服務端和前端實時質量概覽大盤,服務端和前端質量主要是通過展示應用的接口調用成功率和耗時來進行實時質量的反饋。通過點擊詳情可以對單應用的質量指標進行詳細分析。

  • 業務場景質量:業務場景的實時質量情況,以及異常的頁面列表和錯誤碼分佈,同時根據錯誤碼進行明細日誌查詢,最後進行全鏈路Trace分析。

  • 服務端實時質量:基於單應用一段時間內的服務端質量情況,包括接口異常率,異常率趨勢,異常API分佈等,通過異常API分佈情況可進行異常API的詳細分析,包括耗時和錯誤碼分佈等,根據錯誤碼分佈可直接進行明細日誌查詢,以及全鏈路Trace查詢。

  • 前端實時質量:基於單應用一段時間內的前端質量情況,包含API,JS等的異常數,以及異常頁面排行。

業務應用實踐

使用狄仁傑埋點的業務,一鍵接入魔洛哥,分鐘級透出通用實時質量視圖,包含產品質量、業務場景質量分析、服務端質量分析、前端質量分析、質量查詢、多維分析(建設中)等,目前菲住布渴、餐配中臺等多個業務已經接入使用。

  • 菲住布渴產品在接入平臺後,經過對業務場景數據的分析發現:在小程序入住辦理場景中,真正能走到最後一步且成功的用戶佔比很低,很多用戶被前置流程的規則阻斷了。再深入下去,發現酒店房間未準備好的問題最多,反饋業務方之後,正在進一步討論優化方案。
  • 餐配中臺在接入平臺後,經過對業務場景數據的分析發現消費退款失敗較多,一部分失敗是因爲在之前就餐消費失敗時,會直接去調退款接口,近期迭代做了優化,代扣結果未返回支付成功便直接異步調用撤銷支付請求,並返回代扣失敗。訂單實際上支付未成功,因此去調用退款接口無可退訂單,導致大量退款異常。另一部分失敗是因爲查詢到訂單狀態是否支持退款的邏輯判斷不精準,部分訂單狀態無法調用退款。

5 技術架構

根據上述的目標,在業務接入時,我們需要實現低成本快速接入,同時展示業準確的全鏈路實時質量情況,因此從技術角度出發要解決的問題有三點:

  • 低成本快速接入
  • 實時數據
  • 全鏈路指標串聯

根據上述的三點,從技術實現上來說有一定的複雜度,首先要解決實時性,其次要能夠將全鏈路日誌進行串聯,最後還要實現低成本接入,最終通過一定的調研分析,整體的技術方案如下:

5.1 狄仁傑

爲了能夠將全鏈路指標進行串聯,我們需要在業務應用中引用狄仁傑SDK,通過一行代碼即可將系統中基於slf4j接口的業務日誌全部用鷹眼traceId串起來,並將收集到的日誌發送到應用自定義的SLS中。

5.2 數據服務

爲了降低接入成本,我們開發實現了基於SLS的數據服務工具,通過一條SQL即可將SLS數據查詢結果生成一個可調用的API。

數據服務能力參考了DFaaS(Data Function As Service)的數據服務能力,提供數據函數即服務,使用戶無需編碼而直接可生成服務,降低研發門檻、實現低成本接入,使得開發同學更快捷、持續的交付業務以及產品需求

6 總結和展望

通過基於IoT的全鏈路實時質量,業務使用狄仁傑進行全鏈路埋點後,可一鍵接入魔洛哥平臺,實現終端問題的實時感知和鏈路分析,以及智能終端系統業務場景的全鏈路實時質量。整體方案接入成本低(分鐘級別接入),可實現全鏈路的實時質量分析,以及精準的終端預警能力。幫助開發運維同學實時發現問題,快速問題的定位分析。

但目前整體方案還在持續建設中,還有部分能力需要持續進行迭代優化:

  • 離線加速:目前採用的數據服務直接調用sls SDK進行全鏈路日誌實時查詢以及生成可調用API,對於數據量較大的業務(億級數據量的查詢)查詢時間較長,正在優化中,預計本月底可上線
  • 預警規則模版自動生成:業務接入魔洛哥後,直接具備基於專家經驗配置的預警模版和規則,該方案還在迭代實現中,預計下個月可上線
  • 多維分析:基於業務場景任意指標和維度的分析能力,目前正在開發實現中。

原文鏈接:https://click.aliyun.com/m/1000361977/

本文爲阿里雲原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章