專訪劉元:雅虎的監控平臺與故障告警那些事兒
原創【51CTO專稿】運維人員的工作壓力很大,他們雖然不一定要每天守在機房,卻必須對機房的一舉一動了如指掌。雅虎作為全球領先的互聯網企業,是如何做好機房監控的?故障告警機制又是什么樣的?51CTO記者帶著這些困惑,專程采訪了雅虎北京全球研發中心高級系統運維工程師劉元,才了解到這背后的故事。
(雅虎北京全球研發中心 高級系統運維工程師劉元)
以下是采訪實錄:
51CTO:劉老師,您好!首先請您簡單地做一下自我介紹。
劉元:我叫劉元,來自雅虎北京研發中心,在這里工作了四年,四年里一直從事系統業務相關的工作。最早加入雅虎的時候,我主要負責搜索廣告產品的運維,這是雅虎全球的一個統一的搜索廣告平臺,這個平臺的運作效率直接影響了雅虎的收入。
后來我加入了個性化推薦系統團隊,這也是公司主推的一個項目,我們把雅虎的內容,按照個性化推薦給用戶。同時也會對我們的合作伙伴,以及互聯網用戶關心的信息,進行個性化推薦。我目前主要負責系統維護、部署等,以及系統設計方面的個性化系統運維工作。
51CTO:您從事的這個個性化運維團隊,大致規模是什么樣的?
劉元:在雅虎,整個運維團隊(包括系統運維、網絡運維等),大概不足千人,這個團隊負責雅虎全球的所有運維工作。
51CTO:您目前所在的這個部門,主要的職責是什么?
劉元:我現在所處的部門負責系統服務運維,更關注的是服務的可用性,也就是說我們會持續不斷地為用戶提供高可用性的服務。除此之外,我們部門需要負責容量規劃,比如在哪些地方有多少臺服務器,在不同的機房有多少臺服務器等,另外,災難備份規劃也是我們的工作內容之一,比如說一個數據中心發生故障了,要怎么樣才能把用戶引導到其他數據中心去。
51CTO:雅虎作為全球領先的互聯網企業,日均瀏覽量應該也是百萬量級的。能否介紹下雅虎當前的主要架構,大致的規模是什么樣兒?用到了哪些技術?
劉元:雅虎有一個完整的技術生態圈,在各個數據中心,我們提供大量的基礎服務。對于應用來講,我們更注重它的應用邏輯,同時,我們也有大量的應用開發框架,比如說雅虎也有自己版本的Java框架,在后端有自己的本機存儲的技術,然后我們還有大量的通用平臺技術,前端應用只需要調用后端的平臺,就可以去獲得個性化數據,比如身份驗證,統一惡意流量管理,以及廣告。所以我們的開發,更多地放在應用邏輯上。后端我們有非常大的平臺,來支撐其他基礎的信息。
51CTO:這個平臺完全是雅虎自主研發的?
劉元:其中有一些是通用技術,雅虎在通用技術上有自己的改進和創新,雅虎有自己版本的技術,因為我們的規模非常大,所以會在一些通用技術的基礎上做很多優化,來實現更好的性能,使數據更容易地被分發到全球所有的機房,幫助我們實現更大規模的數據服務。
51CTO:您剛剛提到這些技術,在搭建和實施的過程中,遇到的主要難題是什么?是怎么解決的?
劉元:由于雅虎服務的用戶遍布全球,所以在全球范圍的核心區域,都會部署這樣的應用。怎樣把產品部署到全球所有的數據中心,這就是我們現階段最主要的難題。至于如何解決?這個其實非常復雜,因為我們做的所有事情,都是為了解決這個問題,除了一流的硬件環境,良好的技術體系以外,我們還擁有大量的系統運維工程師,來幫助我們克服每一個困難。
51CTO:能否介紹一下具體的流程?比如說哪個部門,或者哪些人專門負責哪一塊?
劉元:運維團隊里有不同的分工,也會有專門的團隊來幫助我們所有的產品做檢驗,確認災難轉移的方案是否合適。有些人,會更關注系統性能,或者應用性能。當我們需要采購新機器,他會幫我們檢驗,比如說考量是否真的需要這樣的機器,是否真的需要這個性能,來達到你的產品需求。
51CTO:雅虎的監控平臺和監控手段是什么?故障告警機制是什么樣的?
劉元:雅虎有一個完整統一的監控平臺,我們通過這個監控平臺,基本上可以從不同的層面看到服務運行情況。在這個監控平臺里,我們首先會對主機層面,也就是每臺主機的狀況進行檢查,比如它的硬件狀況,負載狀況。同時會對上面的一些服務,做一個服務層面的檢查,比如說這個服務是不是可用,基本的數據是不是正常。同時我們還會把上面的應用數據搜集起來,比如現在的訪問量是多少,用戶平均的訪問延時是多少,每個用戶期望的結果等。我們把這些數據匯成圖表,同時和歷史的數據相比較,這樣就可以更早、更快地發現異常的數據行為,幫助我們更早地發現潛在的問題。
這個監控平臺會和其他若干系統相連,讓我們方便地知道在不同時間內,是哪個國家地區、哪個工程師在維護這個產品。在這些信息的幫助下,告警信息會自動地通過郵件、短信、配件的形式發給對應的工程師。如果一段時間內這個報警還沒有得到及時的響應和處理,那么我們會給更高水平的運維工程師反饋。我們有一個全球72小時的監控運維團隊,如果出現服務層面故障的告警信息,沒有人及時處理的話,監控團隊會打電話通知我們。所有這些都是集中在一個統一的監控平臺里面的。
51CTO:剛剛是告警,那么預警和預報警的機制又是什么樣的?
劉元:預報主要是靠歷史數據的積累,比如說知道每天的日高峰是什么時間,把最新的數據匯成圖,和歷史的數據進行比較,通過這些信息來做預警或者預報。至于如何清晰地定位故障,我們用的是統一的監控系統,這樣能夠很方便地讓所有人很精確地知道究竟是哪個系統出現故障,它會影響上下游的哪些系統等。
51CTO:一般故障響應的時間大概是多久?
劉元:我們根據不同的服務等級,來提供不同的響應時間。比如對于那些優先級別很高的問題,我們要求響應的時間非常短。如果問題沒有直接影響用戶,或者沒有影響到數據的準確性,這樣的問題響應時間可能會相對長些。我們會按照不同的服務等級決定響應時間。
51CTO:雅虎一年當中出現這種故障的機率大概是什么情況?有統計嗎?
劉元:有統計,但因為我們所有的故障都是分級的,所以我很難給你一個確切的數字。我們以故障的不同級別、不同嚴重程度來決定故障時間和響應情況。平時出現的故障都是比較小的,比較容易解決的。如果是比較大的故障,因為對服務的等級要求非常高,所以我們會很快調動很多團隊進行處理,比如一個核心的系統故障發生,可能很快就會影響到前端的系統,影響范圍將非常廣,那么很快就會有大量的運維工程師進行處理。
51CTO:從您這么多年運維的經歷來看,您在哪個時間段的成長比較快?
劉元:這個因人而異,我自己覺得是新加入一個團隊那段時間。因為我非常喜歡學習新東西。新加入一個團隊之后,我會很快地學習這個團隊里面新的東西,和原來的信息進行比較,并與之前的經驗結合起來,思考原來的經驗在新的環境中怎樣能夠繼續使用,或者是如何幫助我優化新的流程。
51CTO:您覺得一名合格的運維工程師應該具備哪些方面的素質?雅虎招聘系統運維工程師的主要要求有哪些?
劉元:其實運維工程師也分很多種。對于我們系統運維工程師,我們更多的是關注于服務的高可用性運行。所在雅虎在招聘方面主要有以下幾個要求:
首先,我們更關注工程師的基礎知識好不好,比如說網絡基礎。因為雅虎維護的都是非常大規模的應用,如果你的基礎不扎實,工作中就可能會出現力不從心的情況。這個時候再去補基礎就晚了,所以我們有這樣的要求。
其次,是否好學也是一個要求,工程師要有學習動力來不斷提升自己的工作效率。比如說他現在每天面臨很繁瑣的工作,就需要自己去寫工具,來做優化,他需要考慮如何更高效地處理現有狀況。
同時我們還很看重他解決問題的思路以及解決問題的能力。我們更希望和有系統運維想法的工程師一起工作,這樣我們才可以把事情做得更好。
另外有一點不得不提,在雅虎北京全球研發中心,我們會和全球所有的團隊一起工作,所以英語也是很重要的一個方面。
專訪到此就告一段落。非常感謝劉元老師的分享。作為運維工程師的你,有沒有加入雅虎這個團隊的意愿,歡迎留言討論。
專題推薦:2013,應屆畢業生需要知道的事兒