丑話說前頭
先跟研發(fā)leader溝通,灌輸運維理念,丑話說在前頭,我們不做保姆式運維,我們會致力于線上服務(wù)安全、穩(wěn)定、低成本、快速迭代,從運維視角提高產(chǎn)品力。開發(fā)機、測試環(huán)境,研發(fā)自己搞,我們可以協(xié)助幫忙,做專業(yè)的咨詢服務(wù),想讓我們直接操刀開發(fā)環(huán)境的變更,免談!
業(yè)務(wù)概要了解
了解業(yè)務(wù)相關(guān)的人,對應(yīng)的研發(fā)同學(xué)、研發(fā)leader、測試同學(xué)、測試leader、產(chǎn)品經(jīng)理分別是誰,聯(lián)系方式存下來,拉個群,出了問題可以找到對應(yīng)的人。
了解服務(wù)是干啥的,解決了什么問題,業(yè)界有對標的開源產(chǎn)品嗎,方便我們快速認識這個產(chǎn)品。
了解服務(wù)的上下游,依賴哪些服務(wù),哪些服務(wù)依賴我,對應(yīng)的接口人是誰,這里先簡單了解一下即可。
了解服務(wù)部署情況,部署在哪些機房,用什么語言編寫的,基礎(chǔ)網(wǎng)絡(luò)、專線帶寬、機房出口是否靠譜,是否曾因基礎(chǔ)設(shè)施導(dǎo)致過問題,當(dāng)前主要痛點是什么。
業(yè)務(wù)串講
要求研發(fā)同學(xué)(或者上一任運維同學(xué))準備PPT,做一個業(yè)務(wù)串講,講解一些研發(fā)同學(xué)希望傳達給運維同學(xué)的信息,講解一些運維同學(xué)希望從研發(fā)這得到的信息。比如:詳細部署拓撲、服務(wù)整體架構(gòu)、數(shù)據(jù)流、提測變更流程、監(jiān)控方式、部署到了哪些機器、機器登錄方式、每個機器上是什么模塊、OS參數(shù)是否有調(diào)優(yōu),考量是什么、用到了哪些第三方軟件,考量是什么,比如為啥用了tomcat而不是resin、相關(guān)wiki、故障處理預(yù)案、常見故障、當(dāng)前線上問題……等等
如果業(yè)務(wù)有單點,不接,讓研發(fā)改造。如果運維的老板的老板強制要求,丑話說前頭:因單點導(dǎo)致的問題,運維不背鍋。
資產(chǎn)梳理
正式準備接手,第一步,梳理資產(chǎn)。比如用到了哪些域名,這些域名對應(yīng)哪些業(yè)務(wù)、哪些虛IP,分別是提供了什么服務(wù)、哪些機器,分別部署了什么模塊、業(yè)務(wù)在哪些機房、用了多少帶寬、總帶寬情況、是否有其他業(yè)務(wù)共用爭搶。
機器需要拿到更詳盡的信息,比如機器配置、機架位、IP、管理卡IP等等,公司應(yīng)該有個CMDB供查詢。如果沒有,運維同學(xué),需要你去構(gòu)建這個CMDB。
后面要考慮機器是否需要有備機、備件,機型是否可以統(tǒng)一。
基礎(chǔ)監(jiān)控
知道有哪些資產(chǎn)了,就可以對這些資產(chǎn)做監(jiān)控了,比如域名連通性監(jiān)控/延遲監(jiān)控、虛IP的連通性監(jiān)控/延遲監(jiān)控、機器宕機監(jiān)控、機器硬件監(jiān)控、sshd/crond等系統(tǒng)進程監(jiān)控、系統(tǒng)運行的進程總數(shù)監(jiān)控、系統(tǒng)參數(shù)配置監(jiān)控,可以參看我之前的文章《完備的監(jiān)控應(yīng)覆蓋什么》
服務(wù)梳理
吃透之前串講時給的架構(gòu)圖、數(shù)據(jù)流圖、部署拓撲圖。從運維層面,最好還要知道公司網(wǎng)絡(luò)拓撲圖。
了解每個模塊的情況,部署在哪些機器上,部署在哪個目錄,用什么賬號啟動的,日志打到哪里了,用什么語言編寫的,怎么上線的,主要吃CPU資源還是內(nèi)存還是磁盤還是IO,需要預(yù)留多少資源,平時利用率是多少,應(yīng)該配置多大的閾值做監(jiān)控,是否需要watchdog自動拉起,日志里出現(xiàn)哪些關(guān)鍵字需要報警,以及其他各種需要注意的問題。
業(yè)務(wù)監(jiān)控
基本的進程、端口存活性監(jiān)控,機器利用率監(jiān)控、日志關(guān)鍵字監(jiān)控、日志不滾動監(jiān)控、關(guān)聯(lián)的服務(wù)的監(jiān)控等等,后面會做API粒度的監(jiān)控,來推動業(yè)務(wù)優(yōu)化。
標準化改造
機器命名方式、操作系統(tǒng)發(fā)行版、OS版本、第三方軟件,比如jdk、tomcat、nginx,都要統(tǒng)一,做標準化方案。
服務(wù)擴容、變更、下線做一鍵化,每次升級只需要給個版本號即可,此時研發(fā)操作還是運維操作效果一樣,故而可以交給研發(fā)上線,釋放運維人力,權(quán)限要控制好。
重復(fù)的常規(guī)操作也要固化成腳本,一鍵完成。
梳理故障自愈場景,看平時有哪些故障的處理方式是固定的,抽象為腳本,報警之后自動觸發(fā),無人值守處理。
公司如果有一些基礎(chǔ)設(shè)施,比如名字服務(wù)、MQ、日志平臺,推動研發(fā)改造,將新服務(wù)接入。如果公司還沒有這些基礎(chǔ)設(shè)施,作為運維這個角色,可以著手搞起。
SOP梳理
故障預(yù)案是一個非常重要的事情,線上沒出故障之前,就應(yīng)該提前去想,服務(wù)可能會出什么故障,如果真出了,應(yīng)該如何處理,把處理步驟提前記錄下來。畢竟,線上出故障的時候,人都比較緊張,直接看著預(yù)案處理,就踏實不少,不容易出錯。
故障演練
光有預(yù)案沒有演練,是不靠譜的,沒有經(jīng)過驗證的預(yù)案是不可信任的。所以,搞個放火演習(xí),把模塊搞掛試一把,把機器搞掛試一把,對線上穩(wěn)定性絕對會有提升。
特別是研發(fā)說這個模塊掛掉,可用性肯定沒影響,OK,搞掛試試先。很可能會打他臉,-_-||
有些場景演練是會有損的。這種場景還要不要演練?這個需要case by case的看,大部分情況都是要做演練會更好,畢竟,人在這盯著的時候出問題,比晚上睡著了出了問題要強太多。當(dāng)然, 大規(guī)模基礎(chǔ)網(wǎng)絡(luò)故障這種演練,還是算了吧,通常的業(yè)務(wù)都是不具備機房級容災(zāi)的,呵呵
上面做完了,基本工作就完成了。上面很多事情都是一次性的,那未來的大把時間運維做啥?
除了再花費部分時間做線上問題處理,我們應(yīng)該把主要精力來提升業(yè)務(wù)產(chǎn)品力。做精細化運維,還記得運維九字真言么?“安全穩(wěn)定高效低成本”,這就是我們的工作方向。下面舉幾個例子。
再談業(yè)務(wù)監(jiān)控
上面談到過一次業(yè)務(wù)監(jiān)控,主要是一些通用的監(jiān)控指標。我們對產(chǎn)品了解足夠之后,應(yīng)該做一些業(yè)務(wù)特有的監(jiān)控,推動研發(fā)去做也可以,達到效果就好。
比如你運維了一個MQ,消息堆積量是需要監(jiān)控滴;比如你運維了一個RPC服務(wù),提供了三個接口,這三個接口的響應(yīng)時長、成功率是需要監(jiān)控滴;比如你運維了一個S3服務(wù),每個桶的短期帶寬增量你是需要監(jiān)控滴;有那么點感覺了么? :)
API成功率、延遲統(tǒng)計
在流量入口的nginx做所有業(yè)務(wù)線的所有API的成功率和延遲統(tǒng)計,是非常有必要的。把成功率比較低的TopN找出來,把延遲比較大的TopN找出來,讓業(yè)務(wù)去優(yōu)化。老板會喜歡這個的。
線上問題梳理
整理線上所有問題,挨個解決,運維可以搞定的運維搞定,運維搞不定的找研發(fā)要排期,每周解決了多少問題,還有多少問題待解決,用周報的方式體現(xiàn)出來。
成本優(yōu)化
通過服務(wù)混部、或者統(tǒng)一的資源調(diào)度平臺來節(jié)省機器資源,一臺機器便宜的也好幾萬呢,這個事是比較容易有產(chǎn)出的。
容量規(guī)劃
容量規(guī)劃和成本優(yōu)化實際是緊密相關(guān)的,容量規(guī)劃的重點是根據(jù)自然增量和運營需求,提前規(guī)劃準備相應(yīng)的容量,容量可能包括帶寬、專線、網(wǎng)絡(luò)設(shè)備、機器等等;當(dāng)業(yè)務(wù)量下來的時候,可以騰挪相關(guān)資源支持其他業(yè)務(wù)線,讓這些硬件盡量滿負荷運轉(zhuǎn),物有所值。
業(yè)務(wù)精細化運維可以想出各種事情來搞,除了做這事,另一個需要長期投入的是構(gòu)建運維基礎(chǔ)平臺,像什么監(jiān)控系統(tǒng)、部署系統(tǒng)、產(chǎn)品庫、資源利用率平臺、域名管理、四七層接入配置平臺、日志平臺、Trace系統(tǒng)等等等等,嗯,其實運維還是挺忙的。
關(guān)于溝通
最后說一點,接手一個新業(yè)務(wù)運維,勢必與研發(fā)有各種溝通,每次溝通都要寫會議紀要,發(fā)郵件出來,跟進人是誰,時間點是啥時候都要寫明白,郵件發(fā)送雙方團隊郵件組,cc各方老大。事后關(guān)鍵節(jié)點做check,如未完成,線下溝通,達成一致后追此郵件給結(jié)論,說明延期原因以及新的時間點。如果溝通不暢,讓老大去協(xié)調(diào)。