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