運(yùn)維自動(dòng)化重點(diǎn)解讀之監(jiān)控系統(tǒng)(一):可擴(kuò)展性
2016-02-20 19:33:28 來源: Reboot運(yùn)維開發(fā) 51CTO博客 評(píng)論:0 點(diǎn)擊:
【引自Reboot運(yùn)維開發(fā)的博客】寫在前面
我從事運(yùn)維自動(dòng)化相關(guān)的工作,也已經(jīng)8年了。當(dāng)初剛開始做的時(shí)候,運(yùn)維開發(fā)(devops)這詞還不火,很少人知道。國內(nèi)對(duì)運(yùn)維的理解,也就是機(jī)房、服務(wù)器、苦逼的7*24小時(shí)值班。甚至當(dāng)時(shí)還流傳著段子,招運(yùn)維要人高馬大,扛得動(dòng)服務(wù)器。
很幸運(yùn)的主導(dǎo)了兩個(gè)一線互聯(lián)網(wǎng)公司的公司級(jí)的運(yùn)維自動(dòng)化。這倆公司的服務(wù)器,都是幾十萬臺(tái)級(jí)的,IDC都是幾十個(gè)。很多事情都是摸索著來。一路走來也形成了一些對(duì)運(yùn)維自動(dòng)化的理解。第一家公司好容易做的七七八八的時(shí)候,到第二家實(shí)施發(fā)現(xiàn)原有的很多理解都被打爛了重新來。但這種經(jīng)歷反而凝練了一些經(jīng)驗(yàn)。我個(gè)人性格原因,不喜歡到外面去講。偶爾實(shí)在沒法推辭過去的,也誠惶誠恐的準(zhǔn)備,到最后發(fā)現(xiàn)很多干貨還是沒辦法一言以蔽之。最后留在外面的都是一些只言片語,不成系統(tǒng),更不敢說能指導(dǎo)多少。
終于下定決心要把我個(gè)人的一些理解,通過系列文章來寫一寫。文筆有限,可能寫的不盡人意。也歡迎大家加入運(yùn)維開發(fā)討論交流群來交流,群號(hào):365534424
廢話少說,直接上文。
庖丁解監(jiān)控(一)
我始終認(rèn)為監(jiān)控對(duì)于運(yùn)維來說,猶如眼睛對(duì)人來說一樣重要。不管說的多么高大上,運(yùn)維工作里面很大一部分還是響應(yīng)型的工作。來自于架構(gòu)調(diào)整、服務(wù)變更或者來自于監(jiān)控。說監(jiān)控是整個(gè)運(yùn)維或者服務(wù)生命周期里面最重要的一環(huán)都不為過。從事前發(fā)現(xiàn),預(yù)警或者故障報(bào)警,到事后提供監(jiān)控現(xiàn)場(chǎng)供回溯追查,監(jiān)控系統(tǒng)貫穿了運(yùn)維整個(gè)環(huán)節(jié)。怎么才能有一副好視力,今天我們就來稍微談?wù)劇?/p>
正因?yàn)楸O(jiān)控系統(tǒng)如此重要和通用,所以業(yè)內(nèi)最成熟、最多的產(chǎn)品也是監(jiān)控系統(tǒng)。商用的、開源的監(jiān)控系統(tǒng)比比皆是。也有一些很優(yōu)秀的開源系統(tǒng)應(yīng)用很廣泛。比如Zabbix、cacti、nagios、ganglia等。對(duì)于使用開源系統(tǒng),還是自己開發(fā)(相信看這個(gè)文章的,應(yīng)該都不會(huì)有購買監(jiān)控系統(tǒng)的打算),是使用者自己決定的。業(yè)務(wù)和團(tuán)隊(duì)規(guī)模都不足夠的時(shí)候,直接拿來主義,開源的系統(tǒng)能解決基本問題,性價(jià)比高。業(yè)務(wù)如果后期發(fā)展的好,規(guī)模快速擴(kuò)大,復(fù)雜度迅速增加的情況下,開源系統(tǒng)就難以為繼了。具體表現(xiàn)在時(shí)效性、擴(kuò)展性、二次開發(fā)、支持的服務(wù)規(guī)模(或者叫系統(tǒng)容量)、良好的權(quán)限控制等各方面。
從上面幾點(diǎn)來看,一個(gè)監(jiān)控系統(tǒng)需要具備的是數(shù)據(jù)采集、擴(kuò)展性、告警管理、高可用、歷史數(shù)據(jù)存儲(chǔ)與展示、權(quán)限管理等幾個(gè)方面。
監(jiān)控本質(zhì)上就是對(duì)被監(jiān)控對(duì)象的狀態(tài)進(jìn)行判定。這個(gè)監(jiān)控對(duì)象可以是服務(wù)器、交換機(jī),也可以是一個(gè)幾千臺(tái)服務(wù)器的集群,還可以是帶寬、CPU利用率,甚至深入到服務(wù)內(nèi)部,監(jiān)控服務(wù)內(nèi)部的進(jìn)程、線程、cache命中率等。
監(jiān)控對(duì)象多種多樣,既有實(shí)體的,也有虛擬的。 對(duì)被監(jiān)控對(duì)象的狀態(tài)進(jìn)行判定,這句話里面有三個(gè)要素。被監(jiān)控對(duì)象、狀態(tài)、判定。所以監(jiān)控系統(tǒng)要能夠適配足夠多的監(jiān)控對(duì)象類型、收集并能轉(zhuǎn)換為可衡量的狀態(tài)值,才能支持下一步的判定動(dòng)作。例如,一臺(tái)服務(wù)器上的nginx服務(wù)的連接數(shù)。服務(wù)器上的nginx服務(wù),就是被監(jiān)控的對(duì)象;連接數(shù)就是被監(jiān)控對(duì)象的指標(biāo),那么狀態(tài)呢?我們可以定義為,超過1萬就是不正常,否則是正常。
從這個(gè)角度做框,我們來看看監(jiān)控系統(tǒng)的核心指標(biāo)都有哪些。首先是能監(jiān)控的對(duì)象范圍要越多越好(當(dāng)然你可以說小而精的也挺美。但維護(hù)多套監(jiān)控系統(tǒng)也是代價(jià))。也就是數(shù)據(jù)采集,能采集的渠道、支持的方式、采集的指標(biāo)越多越好。
關(guān)于擴(kuò)展性的定義
可伸縮性(可擴(kuò)展性)是一種對(duì)軟件系統(tǒng)計(jì)算處理能力的設(shè)計(jì)指標(biāo),高可伸縮性代表一種彈性,在系統(tǒng)擴(kuò)展成長(zhǎng)過程中,軟件能夠保證旺盛的生命力,通過很少的改動(dòng)甚至只是硬件設(shè)備的添置,就能實(shí)現(xiàn)整個(gè)系統(tǒng)處理能力的線性增長(zhǎng),實(shí)現(xiàn)高吞吐量和低延遲高性能。
可伸縮性和純粹性能調(diào)優(yōu)有本質(zhì)區(qū)別, 可伸縮性是高性能、低成本和可維護(hù)性等諸多因素的綜合考量和平衡,可伸縮性講究平滑線性的性能提升,更側(cè)重于系統(tǒng)的水平伸縮,通過廉價(jià)的服務(wù)器實(shí)現(xiàn)分布式計(jì)算;而普通性能優(yōu)化只是單臺(tái)機(jī)器的性能指標(biāo)優(yōu)化。他們共同點(diǎn)都是根據(jù)應(yīng)用系統(tǒng)特點(diǎn)在吞吐量和延遲之間進(jìn)行一個(gè)側(cè)重選擇,當(dāng)然水平伸縮分區(qū)后會(huì)帶來CAP 定理約束。
可擴(kuò)展與過度設(shè)計(jì)的矛盾
具體討論到監(jiān)控系統(tǒng)的可擴(kuò)展性,我們這里特指系統(tǒng)可以隨著被監(jiān)控對(duì)象的規(guī)模擴(kuò)大而無需對(duì)架構(gòu)做大的變更修改。一千臺(tái)服務(wù)器的時(shí)候,是這個(gè)架構(gòu),一萬臺(tái)服務(wù)器的時(shí)候還是這個(gè)架構(gòu),最好十萬臺(tái)的時(shí)候只需要增加服務(wù)器就可以,架構(gòu)還是那個(gè)架構(gòu)。聽起來很棒吧!這也是每個(gè)系統(tǒng)架構(gòu)設(shè)計(jì)者的夢(mèng)想。但現(xiàn)實(shí)照進(jìn)理想的時(shí)候,發(fā)現(xiàn)理想很殘酷。首先是對(duì)于設(shè)計(jì)者來說,當(dāng)他在一家只有幾百臺(tái)服務(wù)器規(guī)模的公司時(shí),很難去想到自己的系統(tǒng)可能有一天會(huì)在跑在幾萬臺(tái)的服務(wù)器規(guī)模上。這里面也有一個(gè)架構(gòu)設(shè)計(jì)的原則,就是要盡量避免過度設(shè)計(jì)。如果一個(gè)幾百臺(tái)服務(wù)器規(guī)模的公司的運(yùn)維開發(fā),對(duì)他的老板說要做一個(gè)系統(tǒng)可以支撐幾萬臺(tái)服務(wù)器,但因此要多花了多少時(shí)間去架構(gòu)和重構(gòu),我想老板會(huì)認(rèn)為自己的運(yùn)維開發(fā)一定是瘋了。架構(gòu)原則之一也是要盡量避免過度設(shè)計(jì)。
但軟件設(shè)計(jì)依然還是推崇良好的架構(gòu)、良好的可擴(kuò)展性。否則架構(gòu)設(shè)計(jì)的價(jià)值就會(huì)打很大的折扣,代碼復(fù)用和系統(tǒng)實(shí)現(xiàn)成本會(huì)隨著規(guī)模的擴(kuò)大而線性增長(zhǎng)。良好的架構(gòu)可以通過迭代得出之后,反過來指導(dǎo)低階的系統(tǒng)設(shè)計(jì)。但低階的無法預(yù)測(cè)高階的。這就是架構(gòu)的用處之一。所以這里稍后我會(huì)介紹一下,我對(duì)于監(jiān)控系統(tǒng)架構(gòu)的一些經(jīng)驗(yàn)和心得。
一個(gè)稱職的設(shè)計(jì)者,是可以站在幾百臺(tái)服務(wù)器的規(guī)模時(shí),考慮到幾千臺(tái)的情況的。但他考慮幾萬臺(tái)的話就有點(diǎn)過度了。這里并非說能支撐幾萬臺(tái)的系統(tǒng)架構(gòu)不優(yōu)秀。只是如果他不知道,那也沒必要過度考慮。如果能提前知道,甄
相關(guān)熱詞搜索:可擴(kuò)展性 監(jiān)控 運(yùn)維自動(dòng)化
上一篇:Trello的5個(gè)開源替代品介紹
下一篇:運(yùn)維自動(dòng)化重點(diǎn)解讀之監(jiān)控系統(tǒng)(二):高可用

頻道總排行
- Cisco NetFlow v9為何無人問津?
- 技術(shù)專題:智能化運(yùn)維
- 開源代碼管理:如何安全地使用開源庫?
- Facebook架構(gòu)解讀
- IT運(yùn)維分析與海量日志搜索需要注意什么(1)
- 金山運(yùn)維肖力:如何將業(yè)務(wù)遷移到虛擬化環(huán)境并穩(wěn)定運(yùn)行(1)
- Apache Ignite(四):基于Ignite的分布式ID生成器
- CrazyEye,一款國人開源的堡壘機(jī)軟件(1)
- SDN時(shí)代的網(wǎng)絡(luò)管理系統(tǒng)會(huì)走向何方
- WOT2016吳兆松:Zabbix監(jiān)控自動(dòng)化的未來如何發(fā)展
頻道本月排行
- 8你消費(fèi)我買單——"漏洞"天使OneRASP...
- 7有了Jenkins,為什么還需要一個(gè)獨(dú)立...
- 6IT運(yùn)維分析與海量日志搜索需要注意什么(1)
- 5新浪微博王傳鵬:微博推薦架構(gòu)的演進(jìn)(1)
- 4史上最大機(jī)器學(xué)習(xí)數(shù)據(jù)集,雅虎對(duì)外開...
- 4雅虎開源可以提升流操作速度的DataSketches
- 4大眾點(diǎn)評(píng)高可用性系統(tǒng)運(yùn)維經(jīng)驗(yàn)分享
- 4云運(yùn)維如何選擇部署適合自身的IDC和...
- 4開源還是商用?十大云運(yùn)維監(jiān)控工具測(cè)...
- 4論開發(fā)與運(yùn)維沖突的根源、表現(xiàn)形式及...