《發(fā)現(xiàn)運(yùn)維穩(wěn)定性問題的明眸——可用性》要點(diǎn):
本文介紹了發(fā)現(xiàn)運(yùn)維穩(wěn)定性問題的明眸——可用性,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
上篇講到了破解運(yùn)維穩(wěn)定性問題的利器——復(fù)盤.復(fù)盤更多的是基于事后的總結(jié)與提升.那么我們?nèi)绾伟l(fā)現(xiàn)、測(cè)量穩(wěn)定性問題呢?那么我們就需要請(qǐng)出今天的主角了——可用性.
可用性作為評(píng)價(jià)業(yè)務(wù)穩(wěn)定性的一個(gè)重要指標(biāo),它可以通過數(shù)據(jù)量化、建立基線的方式來發(fā)現(xiàn)業(yè)務(wù)中存在的周期性問題,并由此更有針對(duì)性的進(jìn)行服務(wù)質(zhì)量改進(jìn).
那么,什么是可用性呢?
可用性是指在一個(gè)指定的時(shí)間間隔內(nèi),對(duì)于一個(gè)功能個(gè)體來講,總的可用時(shí)間所占的比例.換句話說,是指在指定的時(shí)間段內(nèi),系統(tǒng)能夠正常運(yùn)行的概率或占比.對(duì)于我們現(xiàn)在的互聯(lián)網(wǎng)業(yè)務(wù)來說大部分都屬于「實(shí)時(shí)」、「在線」,即Real-Time Online System,實(shí)時(shí)在線系統(tǒng).對(duì)于我們的大部分業(yè)務(wù)說上面所指的指定時(shí)間段,應(yīng)該就是7*24小時(shí).
可用性的結(jié)果經(jīng)常使用小數(shù)點(diǎn)或者百分比表示.我們通常使用一個(gè)被稱為幾個(gè)九的度量,對(duì)應(yīng)小數(shù)點(diǎn)后連續(xù)9的個(gè)數(shù).比如,“五個(gè)九”就是指該系統(tǒng)在指定時(shí)間段內(nèi)有0.99999(或者99.999%)的可用性.
怎么理解對(duì)應(yīng)的量級(jí)呢?
比如,某系統(tǒng)在一個(gè)指定的時(shí)間段內(nèi),如1天,即24小時(shí).同時(shí)我們的監(jiān)測(cè)粒度是分鐘,即1440分鐘.在我們監(jiān)控的1440分鐘內(nèi),系統(tǒng)正常運(yùn)行了1430分鐘.那么在這個(gè)指定的時(shí)間段內(nèi),該系統(tǒng)的可用性即為1430/1440≈0.99306(99.306%).也就是我們常說的2個(gè)9.
那么,99.306%這個(gè)值就代表該系統(tǒng)處于正??捎玫腁vailability狀態(tài)占比,那么1-99.306%得到的0.694%這個(gè)值就代表該系統(tǒng)處理異常不可用的Unavailability狀態(tài)占比.簡(jiǎn)單的羅列為公式,即為:
業(yè)務(wù)在線總時(shí)長(zhǎng) = 業(yè)務(wù)的正常可用時(shí)長(zhǎng) + 業(yè)務(wù)的異常不可用時(shí)長(zhǎng)
更進(jìn)一步,可用性就是指:
可用性=業(yè)務(wù)的正??捎脮r(shí)長(zhǎng) / 業(yè)務(wù)在線總時(shí)長(zhǎng)
理解了什么是可用性,接下來我們講一下如何建立可用性.建立可用性的方法有很多,常見的方法有幾種:
撥測(cè)法即是按照各業(yè)務(wù)的應(yīng)用、功能、模塊進(jìn)行周期性測(cè)試其運(yùn)行狀態(tài)是否正常的一種方法.
舉例:我們業(yè)務(wù)有一個(gè)名為A的模塊,那么就周期性的(比如,每5分鐘一次)對(duì)這個(gè)模塊使用模擬用戶行為的方法對(duì)其運(yùn)行狀態(tài)進(jìn)行抽樣檢查.如果該模塊運(yùn)行正常,就記為Availability,如果為非正常,就記為Unavailability.累加至一個(gè)時(shí)間周期內(nèi)(比如,1天)Availability狀態(tài)的占比即是這個(gè)模塊的可用性.
那么,如何判斷業(yè)務(wù)或模塊是否正常呢?我們以一個(gè)web類型的業(yè)務(wù)為例,我們可以檢查該服務(wù)下的主頁、分類頁或內(nèi)容頁的關(guān)鍵內(nèi)容.一般來說,我們可以匹配指定頁面Head、Body、bottom的指定字段或關(guān)鍵字.如果可以匹配到指定的一個(gè)或一組字段或關(guān)鍵字,那么即為正常,反之為異常.我們可以通過腳本、Nagios、Zabbix等工具來實(shí)現(xiàn)對(duì)業(yè)務(wù)的周期性撥測(cè).
這種方法的優(yōu)、缺點(diǎn)都很明顯.優(yōu)點(diǎn)是這種方法實(shí)施難度較低且可以與通過模擬用戶行為的方式來測(cè)量,也業(yè)務(wù)實(shí)際情況可以比較吻合.但通過這種周期性抽樣的方法,存在抽樣樣本不足或偏差的問題.比如每5分鐘撥測(cè)一次,如果故障出現(xiàn)和修復(fù)都在這5分鐘內(nèi)完成,那么撥測(cè)法就很難去捕獲到這種錯(cuò)誤.
日志分析法即是通過各業(yè)務(wù)的應(yīng)用、功能、模塊日志進(jìn)行分析得到可用性的一種方法.
舉例:我們業(yè)務(wù)有一個(gè)名為A的模塊,那么就周期性的(比如,每小時(shí)一次)對(duì)這個(gè)模塊上1個(gè)小時(shí)日志進(jìn)行分析.從日志層面區(qū)分出正常請(qǐng)求在占比,即是這個(gè)模塊在過去1個(gè)小時(shí)的可用性.還是以web類型的業(yè)務(wù)為例,我們可以從日志中將2XX、5XX狀態(tài)分別進(jìn)行統(tǒng)計(jì)、分析,可以理解2XX即是Availability,5XX即是Unavailability.(3XX與4XX可以按照實(shí)際的業(yè)務(wù)情況再考慮是否參與分析)
這種方法上很明顯的解決了撥測(cè)法抽樣樣本不足或偏差的問題,但也存在與實(shí)際業(yè)務(wù)影響指數(shù)可能會(huì)存在較大差別的情況.比如,我們?cè)谶^去1個(gè)小時(shí)的錯(cuò)誤都發(fā)生在1分鐘內(nèi),剩余的59分鐘業(yè)務(wù)都是正常的.很顯然這樣得出來的可用性和實(shí)際業(yè)務(wù)情況是有一定偏差的.那么怎么解決這種偏差呢?日志分析閾值法就應(yīng)運(yùn)而生了.
日志分析閾值法是在日志分析法的基礎(chǔ)上添加了狀態(tài)閾值判斷的一種可用性計(jì)劃方法.
舉例:我們業(yè)務(wù)有一個(gè)名為A的模塊,我們通過日志分析法得到,這個(gè)模塊每分鐘正常情況下的請(qǐng)求數(shù)約為10W次,那么我們可以設(shè)置一個(gè)閾值為10次.這10次的意思就是指,我們?nèi)菰S在1分鐘內(nèi)發(fā)生萬分之一以內(nèi)的錯(cuò)誤.如果1分鐘內(nèi)發(fā)生的錯(cuò)誤在10次以內(nèi),我們就認(rèn)為在過去1分鐘的狀態(tài)為正常,就標(biāo)記為Availability.如果1分鐘內(nèi)發(fā)生的錯(cuò)誤超過10次,那么我們就認(rèn)為在過去1分鐘的狀態(tài)為異常,就標(biāo)記為Unavailability.最后再統(tǒng)計(jì)Availability狀態(tài)的占比即是這個(gè)模塊的可用性.當(dāng)然這個(gè)閾值需要根據(jù)業(yè)務(wù)的實(shí)際情況進(jìn)行調(diào)整.
這種方法上就很好的解決了撥測(cè)法抽樣樣本偏差與日志分析法差生實(shí)際業(yè)務(wù)影響脫節(jié)的不足,達(dá)到很好的一種平衡.
如果一個(gè)業(yè)務(wù)由A、B、C三個(gè)模塊構(gòu)成,那么怎樣通過模塊的可用性,怎么算出業(yè)務(wù)的可用性呢?簡(jiǎn)單的方法就是通過最三個(gè)模塊可用性的平均值即可.但這存在與業(yè)務(wù)目標(biāo)相悖的問題.那么我們可以通過與業(yè)務(wù)目標(biāo)對(duì)齊,進(jìn)行加權(quán)平均的方法.比如A模塊對(duì)業(yè)務(wù)來說更加關(guān)鍵,那么我們?cè)谟?jì)算可用性時(shí)就給出A模塊更多的權(quán)重;C模塊是業(yè)務(wù)的旁路系統(tǒng),那么就可以在計(jì)算時(shí)降低對(duì)C模塊的權(quán)重.以此類推,我們得出的可用性就可以盡可能的貼近業(yè)務(wù)及其目標(biāo)了.
其它的方法
計(jì)算可用性的方法有遠(yuǎn)不至上面寫的幾種,并且并有哪一種方法可以解決所有的問題和痛點(diǎn).從成本、收益、時(shí)間等角度選擇一種或多種最合適自己業(yè)務(wù)或團(tuán)隊(duì)的方法,用于持續(xù)改進(jìn)業(yè)務(wù)的服務(wù)質(zhì)量才是王道.
胡楊,目前就職于阿里巴巴移動(dòng)事業(yè)群網(wǎng)絡(luò)運(yùn)維部.高級(jí)運(yùn)維專家.多年工作于大型互聯(lián)網(wǎng)領(lǐng)域.對(duì)大型互聯(lián)網(wǎng)運(yùn)維體系中的容災(zāi)體系設(shè)計(jì)、自動(dòng)化、性能優(yōu)化、troubleshoot等方面有著豐富的經(jīng)驗(yàn)及獨(dú)道的見解.
文章來自微信公眾號(hào):高效開發(fā)運(yùn)維
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/4179.html