數據為王,如何通過數據挖掘為運維增值升值?

myie4925 6年前發布 | 25K 次閱讀 運維技術 數據挖掘

數據為王,如何通過數據挖掘為運維增值升值?



「可量化」是一個嚴謹的技術人員需要追求的客觀準則,用一個更加高級的詞匯來描述是「可計價」。一切行為都是有價值的,特別是對線上環境的各種的運維操作、變更,會造成怎樣的影響,我們如何判斷其價值所在?

 

作者之前所寫的《中小型運維團隊如何設計運維自動化系統》主要講述了 DevOps體系中最核心的兩大模塊:CMDB和作業平臺。其次核心是數據平臺 ,無論是監控、輔助運營、智能伸縮、故障自愈等高級功能都要依賴數據來驅動實現。

 

在運維自動化體系里面,數據是一個非常核心且是承上啟下的重要元素,它即可以反映運維服務的效率、故障比例、可用性,也可以衡量業務運維狀態的質量、穩定性、成本、速度等。

數據為王,如何通過數據挖掘為運維增值升值?


 

而且在前文的最后部分,就有一個利用作業平臺執行數據來挖掘運維價值的例子,因為和本文主題相關,所以也推薦給讀者,這兩個例子分別是關于運維人力價值和故障分析價值。

 

除了上述兩個例子以外,怎樣利用數據來提供運維團隊的增值服務,本文通過幾個實戰例子來描述說明。

 

 

技術棧的選擇

 

 

關于數據收集、處理和展示,業界比較常見的技術棧主要這幾類:

 

  • 第一類是著名的ELK,即 Elasticsearch、Logstash、Kibana(或者EFK,F 是 Fluentd 代替 Logstash,畢竟Logstash因性能問題所以口碑不咋的);

  • 第二類是 Flume + Kafka + Storm,Java系的技術團隊會比較傾向選用這套工具集;

  • 還有一類比較少見的是用 Scribe 作為收集工具;

 

以上是主流的技術選型方案,但本文的重點不是介紹各種數據分析技術的優缺點,這是屬于「怎么做」。

 

本文的主要目的是介紹「做什么」,哪些數據值得我們分析?以及數據背后價值是什么?

 

通常來說,分析這類數據在技術上都不會存在多大的障礙,有各種現成的開源的技術解決方案可以供我們隨意選擇。但是如何挖掘自家業務該有哪些數據值得分析卻沒有一個統一的業界標準或者參考,更多的是需要運維工程師深入理解自家業務后,通過系統運維技術加上業務運營理解的雙重緯度結合才能得出一套比較完整、立體化、精細化的分析方法。

 

業務的誕生過程

 

一個站點或者App,大致經歷著這樣的誕生過程:PM設計出產品原型,交給 Dev 開發實現,然后交付給 Ops 部署到線上運行,最后供用戶使用。

 

在這幾個簡單步驟中卻涉及了眾多的人、角色、交付等對象,這是一個完整、復雜的系統工程,而任意一個環節的失誤都可能影響最終呈現給用戶的體驗以及效果。但是我們卻不可能一個個子步驟都去加監控、加數據分析,這樣做是非常吃力不討好的事情,甚至會產生很多監控冗余的情況,所以我們要做的是抓住核心指標。


什么是監控冗余

 

隨著我們的業務發展慢慢變得龐大、復雜,其需要監控的點會變得越來越多,如果我們對每個環節、每個組件可能的異常都做對應的監控,那么一臺host可能會要有數十個監控項,這是不太科學的做法。

 

監控的意義在于迅速發現問題,如果存在過多的冗余監控,可能會影響運維人員對于告警的敏感性。例如每天好幾百條告警短信接收下來,又沒有非常準確地發現真正的故障情況的話,這個告警就沒有存在的意義。

 

因此,我們該如何監控,首先是找到核心指標。

 

什么是核心指標

 

核心指標對于不同角色會有不同的側重點:

 

  • 對于PM:PV、UV、日活、月活、ARPU等

  • 對于Dev:Bug、TPS、QPS、JVM、消息隊列等

  •  對于Ops:服務可用性、機器負載、帶寬流量等

 

以上都是核心指標,但是缺偏偏少關注了一個重要角色——用戶。對于用戶來說,他們不會關心站點的PV、日活,也不會關心TPS,更加不會關心我們線上用了多少機器多少帶寬。

 

用戶只關注我們的業務產品更否提供穩定的、快速的、高質量的服務,用通俗的語言來描述,就是我打開網站是否秒開,登錄app是否秒進,購物付款是否快速完成等等。

 

從用戶的角度分析問題,才算是真正的通過運維技術加上運營理解來保證服務的高效穩定運行,這就是所謂的技術運營需要關注的。

 

那么問題來了,到底什么才是用戶關注的核心指標?

 

不同業務形態有不同的用戶關注指標:

  • 對于信息類站點(例如門戶網站等):首屏時間、完整首頁時間

  • 對于電商類站點:首屏時間、登錄時間、付款時間

  • 對于頁游:首屏時間、登錄時間、進服時間

  • 對于手游:啟動時間、登錄時間、進服時間

     

這需要不同業務形態的運維工程師從用戶角度來分析,通過技術手段來挖掘、定位出一些核心的步驟,然后在這些核心步驟作出可監控的方法,如 URL撥測、服務端監控API、頁面JS被動檢測等方式。

 

業務監控

 

前面鋪墊了那么多內容,目的就是要引出業務監控這個概念。

 

監控的作用是對業務具有全面的診斷能力,按各種層次各種維度的監控方法,建立一套立體的監控模型,對影響業務的各個核心數據指標進行采集、分析、建模、展示、處理,最終得到一套可量化可計價的業務運行狀況,以確保業務正常穩定運行以及最佳的用戶體驗效果。

 

而監控的工具很多,如 Zabbix、Nagios 等,是否用這些工具就夠了呢?

 

數據為王,如何通過數據挖掘為運維增值升值?

 

一般運維團隊都可以做到基礎系統和基礎業務監控,然而高級業務監控才是衡量運維團隊能力水平的指標。

 

業務監控—PCU

 

【最高同時在線人數】即 PCU(Peak Concurrent Users),對游戲項目來說是標配的關鍵業務監控項,該指標在運營角度反映了游戲業務的受歡迎程度,在系統運維的角度反映了整個線上環境的運行負載狀態如服務器機器的負載情況、網絡帶寬使用情況、數據庫的壓力情況等。

 

一般PCU數據都可以從業務數據庫或者后端API獲得,然后在運維平臺通過圖表展示,但是這個數據只是展示出來供運維偶爾看看的話,就沒發揮到它的真正作用。

 

  • 歷史對比

 

可以把 PCU 和歷史對比,如上周同期、上月同期 或者 去年同期。通過對比可以根據偏差值自動判斷 PCU 是否有異常,有異常則告警通知運維同事review線上環境情況。

 

對于偏差值的閾值設定需要比較復雜的判斷,比如歷史同期是公眾假期或者寒暑假會使得 PCU 劇增,或者 PCU 本來偏低(如100以下)則不能按百分比來作判斷條件等等。

 

數據為王,如何通過數據挖掘為運維增值升值?

 

如圖所示,紫色線為上周PCU,綠色線為當天PCU,可以看出在7:00有個異常的下降,通過平臺自動判斷并告警通知,當然實際的監控時間粒度可以設置為1分鐘或者5分鐘,讓監控更加及時且不會太影響系統性能。

 

舉一反三,其實不止 PCU 這個數值可以這樣利用,還有其他如新增注冊人數、新增登錄人數等也可以用類似的方法來分析。

 

業務監控—模擬用戶行為

 

一個互聯網產品可以看作由一系列獨立且具有特定功能的模塊組合而成,這些模塊間的相互作用構成了整個產品的所有功能。而任意模塊的故障都會影響整個業務的正常運行,所以我們都會對產品的關鍵模塊會重點關注。

 

對于關鍵模塊,我們可以要求 Dev 提供監控接口,通過 curl 或者 API 的形式,定期獲取響應碼以及響應時間,保存歷史數據并制作圖表。

 

監控接口應該是完整的,可以模仿用戶行為的,比如一個電商站點,一個用戶必然會做這些操作:

  • 注冊

  • 登錄

  • 添加購物車

  • 生成訂單

  • 付款

 

這些步驟都屬于用戶級別的核心體驗指標,必須提供相應的監控接口供運維長期監控其正常運行,監控數據也需要可視化處理,任何異常都能直接通過圖表反映出來,后期也根據實際情況建立相應指標的告警模型和容量管理模型。

 

數據為王,如何通過數據挖掘為運維增值升值?

 

例如,點擊某個監控項的圖,可以看到具體的響應時間監控曲線。

 

數據為王,如何通過數據挖掘為運維增值升值?

 

業務監控-用戶來源分析

 

用戶來源分析也是一個非常實用的業務級監控,通過各種客戶端技術獲取用戶真實IP,如果是通過HTTP協議則需要 x-forwarded-for 來跟蹤用戶的真實IP,收集好IP信息和用戶對應關系后,通過數據分析IP庫得出用戶所在地區、ISP等信息,然后就可以得出我們實際業務的當前用戶地區、ISP分布圖,然后結合中國地圖前端控件制造圖表。

 

數據為王,如何通過數據挖掘為運維增值升值?

 

只是展示還是不夠的,還要結合類似前面例子的歷史對比方法,如果發現某省份或者某ISP的用戶比上個對比周期劇減了,那就反映了當地骨干網、DNS或者CDN等發生故障,讓運維工程師可以迅速定位故障源頭。

 

智能伸縮與輔助運營

 

輔助運營的說法是運維業界近幾年才提出來的,以往的輔助運營的工作一般是交給BI數據團隊負責,他們把線上數據收集分析并出報表,得到 日活、月活、各種留存率、ARPU等業務數據供 PM 或者運營同事分析并做業務決策。其實運維部門也可以用技術方法輔助運營,下面就用游戲項目的開服合服作為實踐例子。

 

游戲行業經常有開服、合服的操作,用通用的說法就是擴容和縮容,因為一個游戲的生存周期很短,從內測、公測、引入期、成長期、成熟期到衰退期說不定總共就一兩年的時間,擴容和縮容操作的高效、快速反映了運維團隊的服務能力,也對公司的運營成本節約有著重大的意義。

 

開服,即擴容的操作一般經常發生在引入期和成長期;合服,一般是在成熟期和衰退期。

 

開新服是游戲運營中的一種刺激玩家人數增長的良好手段,因為在老服中排名相對一般的玩家,去新服往往可以獲得更多的進步空間和利益,刺激用戶消費來換取用戶成就感。

 

而合并老服務器,可以把N個活躍人數較低的鬼服組合在一起重新煥發生命力,游戲必須基于一定的人數才能完全體現游戲價值,這樣用戶才有繼續升級的欲望。

 

  • 開服策略

 

那么怎樣選擇最佳的開服時間,運維部門怎樣利用技術手段協助判斷?

 

根據運營策略,開服的最佳時間是用戶登錄數最高的時間段,因為這樣用戶才更高的概率發現有新服開了并進入新服。

 

在前面的業務監控部分,我們已經掌握了各種業務指標數據,當然必須包含用戶登陸數這個重要數據。

 

數據為王,如何通過數據挖掘為運維增值升值?

 

可以看出,對于手游來說用戶登錄數在12點、19點以及23點左右都有一個峰值出現,分別對應午休、下班和臨睡覺的三個時刻,我們該如何選擇呢?

 

一般在開服前,運維工程師已經對機器初始化完畢,并部署好業務代碼,聯調各種輔助系統并交給QA測試。測試完畢后會經過清檔、業務活動配置、再次測試等流程。這些環節都需要技術同事和運營同事共同參以確保整個流程正確無誤,所以開服時間理論上放在工作時間會比較好,因為這個時間大家都在公司可以更好地溝通交流。

 

如果游戲是聯運項目還需要和第三方供應商聯調,就更加需要在雙方都在線的時間比較好,否則一旦出現異常情況就會影響處理的響應時間。

 

綜上,開新服時間定在12點或是19點比較合適,至于具體的精確時間,可以根據歷史峰值所在的時刻自動觸發即可,這在技術層面很容易實現。

 

  • 合服策略

 

對比開服,合服是一個更加復雜的業務操作,能否正確選擇哪些服該合并既反映了運營人員的業務水平的高低,也對公司的業務運營情況有正面促進的作用。我們也可以通過系統運維的角度來協助分析,利用數據指標來給他們提供更優的選擇。

 

合服需要考慮的指標大概有以下兩大類:業務指標和系統指標。

 

數據為王,如何通過數據挖掘為運維增值升值?

 

其中業務指標大多數需要通過業務數據庫統計獲得,而系統指標需要根據 CMDB 的各種信息統計,最終可以匹配出一系列適合合服的服列表信息。

 

至于具體的判斷算法和評判標準,需要和 運營、開發 等業務部門同事反復討論確定,因為各家業務情況不同,這里不多作展開。

 

總結

 

怎樣才能挖掘到有用的數據,其核心指導思想是運維工程師要從用戶以及業務運營的角度思考問題,再結合自身的技術思維角度,完善出一套科學且精細化的數據分析方法。

 

我們可以看出,上面例子在實踐中并沒有很高的技術門檻,只是需要我們稍微具備一些業務方面的產品優化或者運營策略知識即可,只要運維部門走出一小步,就可以為整個業務團隊作出非常大的貢獻。

 

數據為王,如何通過數據挖掘為運維增值升值?

 

另外,在現在云計算技術的普及,讓大多數中小型企業瞬間具備了彈性計算的能力,讓運營成本利用率最大化和用戶體驗價值最優化都有了可落地的技術基礎。

 

緊接下來我們繼續思考以下內容:

  • 線上服務器以及帶寬等硬件資源是否已經達到最優利用率?我們有沒有可量化的分析方法并持續優化?

  • 業務是否有不科學的功能點在極度浪費線上硬件成本資源或者對用戶體驗不佳,運維部門如何量化并反饋業務部門整改?

     

如果運維團隊能做到以上內容,我們的定位就不再是一個支撐后勤崗位,不再是成本中心,而是作為一個可以理解運營策略且可以為業務部門作出價值貢獻的核心環節。

來自:

 

 本文由用戶 myie4925 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!