論一個合格的NOC-SLA場景是如何養成的
1、前言
在所有的互聯網企業中,告警經常性的誤告,都是讓技術人員最頭疼的問題之一。試想一下,在凌晨兩三點時,你收到了來自告警平臺的電話告警,于是你揉了揉惺忪的雙眼,短暫的回味了下剛才的美夢,下床打開電腦,開始排查問題,卻發現這是一個誤告,線上業務都是在有序的運行當中,于是你關上電腦,重新上床睡覺,但此時你已睡意全無,在床上輾轉反側一個小時才睡著,于是乎,第二天同事看到了一臉滄桑的你。這種誤告一次兩次還能接受,但如果是每隔一天或者是每晚都會觸發呢?
因此在互聯網行業中,頻繁的誤告通常會遇見如下幾個問題:
單位時間內有效信息獲取率變低,技術人員很難從頻繁的誤告中得到真正有問題的告警;
真正的問題發生時,猶如《狼來了》一樣,認為都是誤告,大大加長了問題的發現時間;
降低技術人員的工作效率,每天都沉浸在對于各種告警的處理當中,降低人員產出;
2、治理
在對于SLA告警的摸索階段,團隊就已經預估到后面可能面臨著大量噪音的騷擾,因此組建起一個告警測試群,用于針對性的調優;團隊為了測試線上告警誤告水位,測試性地將SLA場景告警規則進行接入。果不其然,上個廁所回來,群里已經積攢上百條告警了,根本無法提取出有效的告警,其原因就是我們的告警規則配置都是相對單一的,全天候就一條規則,如:
為了在告警正式上線后,大家晚上能有一個如嬰兒般的睡眠,我們自然而然的就啟動了對于噪音的治理工作。而告警噪音的治理最重要的就是對于利弊的權衡,如果閾值設置過高,可能線上問題無法發現;如果閾值過低,又會導致噪音頻發,所以對于閾值的調整里邊有很大的學問。
- 第一階段
區分業務場景。我們創新性地將場景分為平穩型、波浪型、突發型,它們的定義如下:
平穩型:日常流量波動在30%以內,流量波動小;
波浪型:日常流量波動在30%以外,流量波動較大;
突發型:日常流量波動在30%以內,但在遇見某些突發情況下,如重大活動或者時間,波動會超過30%;
針對不同類型的場景,我們也擁有不同的告警配置方案,比如平穩型,那么就可以評估一下該場景的波動范圍,在其正常的波動的范圍內,進行設置閾值,比如大部分時間我們的取消訂單,相比于前七天的平均值,波動在30%以內,如下:
那么我們經過兩三天的觀測,我們就可以將告警閾值設置在30%,于是告警的設置就會如下:
上升告警也是同理,將閾值設置到30%。
那么針對于波浪形告警,我們的閾值范圍可能就會設置的大一點,比如到50%,并且設置與昨日同比等多種規則來限制噪音,例如:
這樣我們配置的規則就會相對復雜,利用昨日以及基線的量來進行綜合判斷。
- 第二階段
在我們告警都上了之后,發現白天的噪音相對有了一定的改善,但夜間由于流量波動大,導致經常性流量波動比能大于30%,進而觸發告警,如下圖所示:
如果在這個時候,我們為了適應夜間的大波動,而將30%的閾值拉長,修改到50%甚至80%,這樣的話確實在一定程度上降低了噪音的產生;但在另一方面,我們的告警發現率可能會大大降低。假如出現線上故障的時候,流量波動下小于我們設置的閾值范圍,那么整個配置都沒有意義。在這個時候,我們就開始構思區分白天和夜間,跑兩套規則,保證噪音相對較低的同時,也能反映出線上的問題,于是取消訂單的規則就變成了如下所示:
與此同時,我們也發現,線上流量并不穩定,可能這段時間低一點,過段時間來個大促,流量就上升的厲害,導致告警頻繁的觸發,這個時候技術人員又會面臨大量的告警騷擾,而很難從中發現真正有問題的告警。
10月1號大盤數據
告警觸發數據
- 第三階段
在此基礎上,整個團隊集思廣益,討論如何破局。因此就有了如下的解決方案,既然線上流量是實時波動的,容易受各種事件影響,那么基線為何一定要簡單粗暴的只取前七天的一個平均值呢?為何我們不能在此基礎上,讓基線也可以動態調整,并且盡可能匹配線上流量呢?
如上圖所示,當我們實時流量與線上真實流量偏差較大的時候,我們可能讓基線盡可能的靠近線上實時流量,從而更好的評估線上流量水平,不至于讓我們的告警失靈,產生過多的噪音;針對取消訂單場景,我們也做了如下調整:
調整前(紅色部分表示波動超過30%)
調整后(紅色部分表示波動超過30%)
從大盤上可以看到,明顯經過調整后,大部分時候的波動能夠保持在30%內,大大減少了噪音的產生。
C端告警數據
B端告警數據
- 第四階段
整個團隊在現有基礎成果上,為了減小人員的投入以及負擔,開始探索能否有一種手段,可以讓大家不為了應對線上水位變化,而頻繁調整SLA場景基線呢?
答案就是智能基線,智能基線它能根據過往的數據,智能的推測出流量的曲線圖,并評估出流量的最高水位(上限)以及最低水位(下限),在保證告警噪音相對較小的情況下,幫助我們更便捷以及靈敏的發現線上問題,并且保鮮周期也能進一步拉長,配置規則也進一步簡單化,便捷化。
時間段 | 告警等級 | 平穩性 | 波浪形 | 突發型 |
白天 | P0 | 任意條件: XX總量最近30s求和與智能基線值環比下跌XX% XX總量最近30s求和與智能基線值環比上升XX% | 所有條件: XX總量最近30s求和與預測上線比高于XX XX總量最近30s求和與智能基線值環比上升XX% | |
P1 | 任意條件: XX總量最近30s求和與智能基線值環比下跌XX%&持續XX個點位 XX總量最近30s求和與智能基線值環比上升XX%&持續XX個點位 | 任意條件: XX總量最近30s求和與預測上線比高于XX&持續XX個點位 XX總量最近30s求和與預測下線比低于XX&持續XX個點位 | 任意條件: XX總量最近30s求和與預測上線比高于XX&持續XX個點位 XX總量最近30s求和與預測下線比低于XX&持續XX個點位 | |
P2 | ||||
夜間 | P0 | 所有條件: XX總量最近30s求和與預測上線比高于XX&XX總量最近30s求和與智能基線值環比上升XX% XX總量最近30s求和與預測下線比低于XX&XX總量最近30s求和與智能基線值環比下跌XX% | 所有條件: XX總量最近30s求和與預測上線比高于XX XX總量最近30s求和與智能基線值環比上升XX% | |
P1 | 所有條件: XX總量最近30s求和與預測上線比高于XX&XX總量最近30s求和與智能基線值環比上升XX% XX總量最近30s求和與預測下線比低于XX&XX總量最近30s求和與智能基線值環比下跌XX% | 任意條件: XX總量最近30s求和與預測上線比高于XX&持續XX個點位 XX總量最近30s求和與預測下線比低于XX&持續XX個點位 | 任意條件: XX總量最近30s求和與預測上線比高于XX&持續XX個點位 XX總量最近30s求和與預測下線比低于XX&持續XX個點位 | |
P2 |
一些比較特殊的場景可能會有些差別,但絕大多數場景都可以按此進行配置,還是以取消訂單為例,智能基線大盤如下:
從圖上我們可以看出此場景的波動比例基本在上下限控制以內,而對應的一般基線如下:
3、總結
從剛開始的對于噪音治理的探索,到現在極低噪音的治理成果,這是整個團隊的努力造就的。從分場景,分時間段,到根據流量動態調整基線,再到現在的智能基線,眼看著它在越變越優秀,這是讓我們穩定生產人打心底感到自豪的。也相信也不久的將來,我們的NOC-SLA告警能夠報出更多的線上問題的同時,也能產生更少的噪音。