單日2000W+訂單,如何忙中不錯?美團外賣業務異常檢測實踐詳解

寫在前面

外賣業務持續高速成長,業務迭代快,邏輯複雜,關聯服務多。如何快速準確識別系統各項指標的異常,發現問題根因,並快速解決顯得尤爲重要。在常規業務指標監控工作中需要手動維護上萬業務指標報警閾值,不僅成本高,效果也不佳。我們嘗試使用“形變分析模型”對業務指標自動進行異常檢測,無需人工設置閾值。在實踐過程中與外賣全鏈路壓測,服務保護等穩定性保障系統進行內聯,目前已覆蓋絕大部分美團外賣C端核心業務指標,效果不錯。

美團外賣業務異常檢測現狀

外賣業務特點

美團外賣從2013~2018,歷時五年,現在已經是全球最大外賣交易平臺。外賣業務相關的指標主要會分爲兩大類:

  • 有規律的時間序列,大多數核心業務指標都會呈現出較強的規律性,如下圖1所示:主要的履約交易流程(用戶下單 > 支付 > 商家接單 > 配送 > 用戶收貨)中各個業務指標呈現週期性、趨勢性,午、晚高峯陡升明顯,與低峯期數值相差百倍。目前單日完成訂單兩千多萬單,交易頻次高,如果不能及時發現潛在業務指標異常,有可能引發重大事故。

image

圖1:有規律的時間序列
  • 無規律的時間序列,這類指標會因爲一些偶發事件引起曲線的波動,沒有很強的規律性。如下圖2所示:

    1. 根據當前的業務現狀實施有針對性的營銷策略,在特定時間進行紅包發放等。
    2. 特定業務上線,比如外賣SET化確定某一時間點進行引流。
    3. 某應用失敗率因爲服務器硬件問題出現陡升現象。
    4. 某應用性能指標因爲網絡抖動引起的變化。

image

圖2:無規律的時間序列

主要痛點

美團外賣在業務穩定性監控建設中會與一線開發人員頻繁溝通,針對監控告警需求主要存在如下幾個痛點,如下圖3所示:

  • 告警精確率與召回率難平衡。精確率可以反映出對異常點的識別是否準確,誤報會直接影響精確率。召回率可以反映出對所有異常點識別的是否夠全,漏報會直接影響召回率。在業務異常檢測告警過程中,漏報往往比誤報帶給業務的傷害更大,在重大事故時,如果不能及時識別出核心業務指標的異常點,很有可能會延誤處理事故的最佳時機。提升召回率的同時可能降低精確率,而如果誤報太多又會讓業務開發人員在日常運維中對告警失去敏感度。
  • 人工配置告警閾值成本高。告警閾值配置需要對業務特點熟悉,對於新業務上線或者功能變更等動作可能會調整相應的告警閾值,指標波動在什麼範圍內發出什麼等級的告警,這都需要投入較高的人力成本去維護。
  • 典型故障場景分析需要人工介入。對於故障場景需要人工介入去進行問題排查定位與解決,不同的開發人員處理問題的經驗有差異,交接成本高。針對經常碰到的故障場景,在多次出現之後我們是可以將這些故障場景對應的特徵進行歸類整理並落地成專家模型,幫助開發人員快速定位故障方向,採用對應預案處理,提升效率。
  • 重大事故時如何避免告警洪潮。日常某一個業務指標出現問題發送告警,我們還可以較容易的定位具體問題。當多業務鏈路同時出現問題,可能會出現告警洪潮,讓開發人員很難快速定位到問題根因去解決問題,這個時候需要有一套告警收斂策略幫助開發人員快速找到問題最嚴重的地方,給出處理建議。

image

圖3:開發人員在業務監控上的主要痛點

形變分析模型介紹

概覽

在外賣業務場景下,與業務開發人員日常溝通過程中發現大家判斷業務指標是否異常,大多數是通過人眼觀察形狀是否符合預期。我們希望找到一種方式可以通過對時間序列的 形狀預測 來判斷是否異常,並希望可以對異常嚴重程度設定不同的告警等級。通過簡單的模型來覆蓋常見故障場景,並具備較好的普適性。形變分析模型從上述痛點出發不斷向前演進。

任何一種異常檢測模型都有它的適用範圍,形變分析模型也不例外,這裏需要強調一下形變分析模型主要針對有規律的時間序列進行分析檢測,主要會依賴兩個簡單的計算公式:

  1. 歸一化互相關(餘弦相關性)公式。它經常被用來判斷兩篇文章是否相似,也可以體現兩個曲線的相似度,相似度越高說明形狀越相似。
  2. 形變量計算公式。這裏雖然是簡單的四則運算,但是具備較好的適應性。

基於形變分析模型的異常檢測主要關注點概括爲如下幾點,具體如下圖4所示:

  • 形變分析:對時間序列兩次處理歸一形成形變量集合,通過形變量計算不同等級告警閾值。
  • 相關性變點檢測:針對出現的特殊情況稱之爲超級變點,採用相關性變點檢測作爲方案補充。
  • 告警收斂策略:通過時間桶、鏈路維度對告警進行收斂,提供圖形化的直觀告警信息,避免告警洪潮。

image

圖4:基於形變分析模型的異常檢測主要的關注點

下面會對形變分析模型詳細展開介紹。

模型分析過程

image

圖5:基於形變分析的異常檢測主要流程

下面給大家重點介紹一下形變分析模型的分析過程,這裏主要會有四個步驟,具體如圖5所示:

  • 確定時間序列特徵,是否是有規律的時間序列。因爲形變分析模型的適用範圍是有規律的時間序列,這裏主要表現爲有周期、有趨勢,所以可以確定曲線是否是有周期的(可以通過傅里葉變換確定曲線的短週期),確定節假日與工作日的差異性,並進行歸類(工作日歸爲一類,節假日歸爲一類)。
  • 選擇基準線。形變分析模型需要找到一個基準線來進行相關性分析,這裏的基準線主要關注形狀,而非具體數值。這個基準線,我們可以使用周同比的數據,可以通過一些預測算法進行預測(比如:STL + Holt-Winters),這裏更加關注預測出的形狀而非具體數值,也可以選擇同源數據(同一鏈路上其他相似的業務指標)作爲基線。
  • 基準形變量計算。根據選擇的基準線與真實數據通過兩次處理,去除時間、形狀、量級等因素的影響,將時間序列歸一到一個基準上,通過形變量計算得到基準形變量,爲後續異常判定、等級設定做準備。
  • 異常判斷階段。可以通過聚類計算基準形變量,根據基準形變量自動設定不同等級的告警閾值,並結合人工反饋是否敏感等信息進行自動修正。

兩次處理

image

圖6:形變分析的第一次處理

上面通過流程圖介紹了一下形變分析模型的整體流程,下面針對形變分析模型中最核心的兩次處理操作通過具體案例展開介紹一下。第一次是針對形狀或時間的處理,具體如圖6所示,形變分析模型預測出基準線,通過真實數值與基線數值進行歸一化互相關計算,計算出一個新的時間序列,因爲餘弦相關通常用於正空間,所以每一個點都歸一到了[0 , 1]區間上,從而去除了形狀或時間的影響。歸一化之後新的時間序列除了在午高峯附近兩個明顯的異常點有較大波動,在凌晨低峯期因爲量級較小,也會出現比較明顯的波動(因爲量級小,形狀差異會被放大)。上述現象表明不同時段的業務量級對餘弦相關性影響較大,需要找到一種方式將量級的影響去除。

image

圖7:形變分析的第二次處理

第一次處理去除了形狀或時間對時間序列的影響,接下來我們發現通過 如圖7所示 的形變量計算公式可以將量級進行還原,或者可以理解爲針對不同的量級賦予不同的權重,形成新的時間序列可以去除量級的影響,這就是第二次針對量級的處理,最終將時間序列歸一到形變量集合上,通過聚類計算基準形變量達到設定不同告警等級閾值的目的。統一的標準爲我們後續結合用戶反饋對不同等級告警閾值進行微調帶來了便利。

告警收斂策略

針對重大事故時如何避免出現告警洪潮,針對典型故障場景如何快速給開發人員提供簡單直觀的建議,這些也是在異常檢測系統中需要重點關注的問題。其中告警收斂模型會優先關注兩大類問題:

  • 簡化告警內容,直觀展示異常點與變化趨勢。如下圖8所示,日常大家收到的告警內容更多的是文字版,這裏針對異常點的嚴重程度與前後變化趨勢不太容易通過文字簡單直觀的表達出來。我們逐漸將異常告警信息變成了圖形化,可以直觀展示異常點變化幅度,展示最近時間區間異常變化趨勢。通過收集用戶點擊行爲判斷大家對特定異常的關注度,對低關注度異常告警實施對應收斂策略。

image

圖8:告警展示形式
  • 在重大事故時避免出現告警洪潮,給用戶推送清晰的分析報告。如下圖9所示,在事故持續時間較長時,每分鐘都發送告警會對業務造成干擾,模型可以採用連續三分鐘發送異常告警之後,採用間隔3、5、7、7……分鐘進行發送,直到判斷異常恢復爲止。在多個業務鏈路出現故障時,同時多個業務指標發送告警,即使做了時間桶的收斂,也可能會出現較多告警,異常檢測系統需要根據業務相關性,從強相關業務的業務鏈路上收集異常告警事件進行分析,從更高維度給出鏈路級分析報告(例如在外賣業務中:提單業務是支付業務的前置,支付業務是推單業務的前置,當支付業務發生問題時,提單業務一定會上漲,而推單業務一定會下降)。

image

圖9:告警收斂策略

解決了哪些問題

上面向大家介紹了形變分析模型的分析過程,接下來會通過幾個典型案例詳細說明形變分析模型解決了美團外賣哪些現實問題。

案例1

業務背景:因爲全國大範圍出現惡劣天氣,導致當天外賣訂單整體擡升,如圖9所示,午晚高峯整體擡升明顯,這種情況下業務側並不希望出現連續高等級告警。

image

圖10:案例1,整體擡升

第一次對時間或形狀的處理:將歷史真實樣本與基線進行歸一化互相關計算,得到的歸一化數據集可以看到在業務低峯期時,相關性波動較大,在午晚高峯時相關性很穩定。這時已經去除了時間或形狀的影響。

第二次對量級的處理:通過形變量計算公式,還原量級,去除量級的影響,得到形變量數據集,通過基準形變量計算出不同告警等級對應的形變量告警閾值。如圖10所示,沒有發現任何時間點的形變量超過告警閾值,符合不作爲異常識別的預期。

案例2

業務背景:某一業務渠道出現問題,引起整體流量緩慢下降,如下圖11所示,該情況需要在下降的過程中及時識別爲異常,並根據下降的程度逐級提升告警等級。

image

圖11:案例2,陰跌

通過兩次對形狀與量級的處理,最終可以看到只有在業務指標緩慢下降的時間範圍內有對應形變量超過告警閾值,並且會隨着下降程度告警等級逐級提升,符合需要識別爲異常點的預期。

案例3

業務背景:某服務入口流量因爲某一渠道突然故障,引起整體入口流量陡降,之後曲線形狀又恢復到與基線值重合,如下圖12所示,該案例需要及時識別爲較高等級異常。

image

圖12:案例3,超級變點

通過對時間與量級兩次處理,並沒有任何時間點的形變量達到較高等級告警。這是爲什麼呢?對於形變量計算公式:(1 - 餘弦相關性)x |實時當前值 - 基線當前值| ,這裏看到在陡降異常點時 |實際當前值 - 基線當前值| 會趨近與0,這樣在陡降時的形變量也會趨近於0,並沒有超過對應的告警等級。這個案例在形變分析模型中屬於一個特殊情況,針對這樣的案例,我們需要引入互相關變點檢測作爲彌補,這樣的異常點稱之爲超級變點。針對超級變點,需要利用公式:(1 - 餘弦相關)x |前一分鐘數值 - 當前值| 來進行識別,在進行形變量計算過程中只要這兩種方式其中一種超過對應告警閾值就進行告警。在進行相關性變點檢測之後,可以識別該異常點爲較高等級異常,符合檢測預期。

案例4

業務背景:世界盃期間有針對性的進行營銷活動,屬於非常規營銷活動,會不定時引起業務指標陡升,如下圖13所示,該場景需要及時識別出指標異常,提醒開發人員關注相關業務指標。該業務場景是屬於比較常見的在有規律的時間序列上出現隨機的陡升陡降場景。

image

圖13:案例4,陡升

在進行兩次處理之後,三次活動期間引起的指標陡升超過告警閾值,符合指標異常需要被識別的預期。

案例5

業務背景:在高峯期與低峯期都有跟基線相比波動超過5%的異常點,在午高峯時需要進行P0級別告警,低峯期波動經常超過10%可能並不需要進行告警,如下圖14所示。

image

圖14:案例5,高峯期與低峯期對告警識別的適應性

在進行兩次處理後,可以看到在低峯期時形變量非常小,達不到告警閾值。在午高峯時形變量非常大,達到P0級別告警閾值。那麼在低峯期如果想達到P0級別告警閾值,需要波動在50%左右,如圖24所示,這個案例體現了形變分析模型在閾值判定上較好的適應性。

異常檢測系統的主要關注點

image

圖15:異常檢測系統結構圖

業務異常檢測系統在整個穩定性保障體系中處在覈心位置,承載着在業務出現重大事故時進行快速異常識別、定位根因、給出降級建議的責任。會分幾大模塊進行建設,具體如圖15所示:

  • 多維度監控指標採集,這裏主要包括:業務指標、應用指標(客戶端、服務端、端到端)、系統指標(CPU、Memory、IO等)。指標採集需要儘可能短的鏈路,需要對指標進行可信度標記,儘可能給後續異常檢測流程提供穩定準確的數據支持。
  • 通過對不同類型時間序列特徵進行識別,選擇對應的異常檢測模型。這裏不僅需要識別出異常,還需要進行不同告警等級的閾值計算,通過收集用戶反饋信息對不同模型識別異常的效果進行評估,進行半監督學習不斷修正模型效果。
  • 異常檢測系統針對識別出的異常告警事件進行彙總分析,可以從更高維度對業務進行健康檢查(比如:可以分析出某一業務鏈路在某些時間點不穩定),給出故障診斷報告。

異常檢測與其他穩定性保障系統的內聯

image

圖16:業務穩定性保障兩大核心場景

美團外賣偏向業務的技術保障能力對用戶主要分爲兩大核心場景,具體如圖16所示:

  • 業務穩定性監控場景,主要針對實時業務數據的監控、異常檢測與故障診斷,在出現事故時直接幫助用戶做出決策,給出處理建議。該場景中產生的診斷數據會形成多維度報告幫助用戶進行日常的健康檢查。用戶可以消費異常檢測事件,進行業務後續定製的保護動作。
  • 定期常規壓測,分析核心鏈路中的性能瓶頸點,結合基於異常檢測事件統計的穩定性報告對各個服務進行容量規劃。在日常壓測中會結合典型故障場景進行故障演練,確保各個服務保護動作真實有效。在壓測施壓過程中,異常檢測發出的告警事件可以作爲壓力是否停止和開啓的條件。

基於形變分析的異常檢測落地情況及實踐效果

基於形變分析的異常檢測系統現在美團外賣應覆蓋核心業務指標2400多個(其中包括訂單、流量、營銷、SET等),因爲使用的算法較簡單,單次異常檢測流程時間可以控制在200ms。

在發送給用戶的告警信息中不斷收集用戶反饋信息,在已有的反饋標記中,異常檢測的精確率、召回率可以達到80%,當然異常檢測的準確性還有一部分依賴時間序列數據採集聚合通道的穩定性。關於告警閾值配置功能,有74%的核心業務指標可以進行自動配置並調整。

整體回顧

本文主要給大家介紹了形變分析過程,突出對時間序列形狀的預測。針對有規律的時間序列形變分析模型具有較好的適應性。然後給大家介紹了異常檢測系統在美團外賣整個穩定性保障體系中的作用,以及形變分析模型在美團外賣的落地情況。

在進行業務指標異常檢測時,嘗試找到通用的異常檢測方法非常具有誘惑力,但可能並不是最佳選擇。嘗試最適合你問題的最簡單方法。用簡單方法處理複雜問題,用簡單模型收斂問題,用小成本撬動大效能。


作者簡介

劉宏偉,2016年加入美團點評,美團外賣技術保障組負責人,現正在圍繞業務進行穩定性評估、實時監控、異常檢測與故障診斷等方向的建設。

美團外賣技術保障組:圍繞業務穩定性建設事前通過全鏈路壓測系統建設提前發現服務性能瓶頸、進行服務保護預案演練、容量規劃;事中通過異常檢測與故障診斷模塊,在重大事故時可以快速識別關鍵問題鏈路,定位根因;事後通過服務保護系統進行快速保護預案的觸發,幫助開發人員快速解決線上問題,提升人效。

在此感謝對美團外賣業務異常檢測做出重要貢獻的同學:永強、慶文、召新、胡巍、龔炎、文浩、昌盛、佔峯、素娟、強強、劉凱、紳寶、長偉、亢磊。

歡迎感興趣的同學溝通聯繫。
聯繫郵箱: [email protected]

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