監(jiān)視微服務(wù)的五個(gè)原則

責(zé)任編輯:cres

作者:Loris Degioanni

2018-03-27 09:26:44

來(lái)源:企業(yè)網(wǎng)D1Net

原創(chuàng)

微服務(wù)提供了一種構(gòu)建,交付和管理企業(yè)應(yīng)用程序的新方法,但是它們還需要一種不同的方法——開(kāi)發(fā)運(yùn)維如何監(jiān)視系統(tǒng)和為總體健康狀況提供洞察的數(shù)據(jù)。

微服務(wù)提供了一種構(gòu)建,交付和管理企業(yè)應(yīng)用程序的新方法,但是它們還需要一種不同的方法——開(kāi)發(fā)運(yùn)維如何監(jiān)視系統(tǒng)和為總體健康狀況提供洞察的數(shù)據(jù)。
 
我七歲就開(kāi)始編程(在紙上,沒(méi)有電腦,但那是另一回事)。早期我學(xué)到的一件事就是軟件開(kāi)發(fā)就像生活一樣充滿(mǎn)了權(quán)衡:組織和開(kāi)發(fā)人員過(guò)去常常不得不在性能或簡(jiǎn)單性,創(chuàng)新性或可管理性之間進(jìn)行選擇。但是,隨著作為容器/ Docker趨勢(shì)的一部分的微服務(wù)的出現(xiàn),應(yīng)用程序開(kāi)發(fā)已轉(zhuǎn)變?yōu)橐幌盗行⌒偷姆?wù),每個(gè)服務(wù)都運(yùn)行在自己的進(jìn)程中,并與API等機(jī)制進(jìn)行通信。微服務(wù)的優(yōu)勢(shì)非常明顯:軟件開(kāi)發(fā)和部署的速度有了巨大的提升,從而節(jié)省了資金,并且在合適的情況下為組織帶來(lái)了競(jìng)爭(zhēng)優(yōu)勢(shì)。
 
在過(guò)去的幾年中,我和很多開(kāi)發(fā)人員進(jìn)行了交流,并且了解了他們所面臨的難題。這些對(duì)話(huà)清楚地告訴我,當(dāng)開(kāi)發(fā)人員接受了微服務(wù),組織要徹底反思作為良好性能和安全衛(wèi)生的一部分的軟件管理實(shí)踐。微服務(wù)的使用意味著軟件管理方法的變革,特別是組織如何處理基礎(chǔ)設(shè)施,應(yīng)用程序和數(shù)據(jù)的監(jiān)控。如果企業(yè)不思變革,它們?cè)诶斫馕⒎?wù)性能時(shí)會(huì)困難重重,更不用說(shuō)故障排除的問(wèn)題了。下面來(lái)看看可以使你對(duì)微服務(wù)的監(jiān)控更加智能,響應(yīng)更快(更高的效率也不在話(huà)下)的五種方法。
 
1.監(jiān)視容器和運(yùn)行于其中的內(nèi)容
 
容器作為微服務(wù)的基本構(gòu)成材料,它是跨越開(kāi)發(fā)人員筆記本電腦乃至云端的黑盒子。但是,如果沒(méi)有對(duì)容器的真實(shí)可見(jiàn)度,要執(zhí)行監(jiān)視或服務(wù)故障排除等基本功能就很困難。你需要知道容器中運(yùn)行的是什么,應(yīng)用程序和代碼的運(yùn)行情況以及它們是否在生成重要的自定義指標(biāo)。
 
隨著貴組織規(guī)模的擴(kuò)大,它可能要在數(shù)千臺(tái)主機(jī)中運(yùn)行數(shù)以萬(wàn)計(jì)的容器,部署可能會(huì)變得很昂貴,并成為編排上的棘手事情。要獲得容器的監(jiān)控權(quán)限,你有幾個(gè)選擇:要求開(kāi)發(fā)人員直接測(cè)試代碼,運(yùn)行挎斗容器(sidecar container),或利用通用內(nèi)核級(jí)別的檢測(cè)工具來(lái)查看所有的應(yīng)用程序和容器的活動(dòng)。每種方法都有各自的優(yōu)缺點(diǎn),因此你需要考察哪一種方法能實(shí)現(xiàn)你最重要的目標(biāo)。重要的是,對(duì)虛擬機(jī)中的靜態(tài)工作負(fù)載有效的老方法將不再能勝任工作了。
 
2.使用編排系統(tǒng)
 
你可以執(zhí)行的最關(guān)鍵流程之一是跟蹤與某個(gè)功能或服務(wù)關(guān)聯(lián)的所有容器的聚合信息,比如每個(gè)服務(wù)的響應(yīng)時(shí)間。舉例來(lái)說(shuō),這種即時(shí)聚合還適用于基礎(chǔ)設(shè)施級(jí)監(jiān)控,以了解哪些服務(wù)的容器正在使用超出其CPU配額的資源。
 
如果你是開(kāi)發(fā)團(tuán)隊(duì)的一員,那么你可以使用Kubernetes、Mesosphere DC/OS或Docker Swarm這樣的編排系統(tǒng)來(lái)定義你的微服務(wù)并了解每個(gè)已部署服務(wù)的當(dāng)前狀態(tài)。如果你是開(kāi)發(fā)運(yùn)維團(tuán)隊(duì)的成員,那么你應(yīng)該重新定義系統(tǒng)警報(bào),要盡可能貼近監(jiān)控服務(wù)的體驗(yàn),因?yàn)榫瘓?bào)是評(píng)估應(yīng)用程序運(yùn)行狀況的第一道防線(xiàn)。如果監(jiān)視系統(tǒng)是原生于容器的(container-native),這樣的監(jiān)視系統(tǒng)使用編排元數(shù)據(jù),動(dòng)態(tài)地將容器和應(yīng)用程序數(shù)據(jù)聚合起來(lái),并且根據(jù)每個(gè)服務(wù)計(jì)算監(jiān)視指標(biāo),那么這個(gè)過(guò)程會(huì)變得更容易。
 
根據(jù)編排工具的不同,可能會(huì)有不同的層次結(jié)構(gòu)需要深入;Kubernetes提供Namespace、ReplicaSets、Pods和一些容器。無(wú)論服務(wù)的容器在物理上是如何部署的,在這些層進(jìn)行聚合對(duì)于邏輯故障排除都至關(guān)重要。
 
3.為彈性的多地點(diǎn)服務(wù)做好準(zhǔn)備
 
原生于容器的環(huán)境會(huì)發(fā)生迅速的變化,而這種活力暴露了所有監(jiān)控系統(tǒng)的弱點(diǎn)。手動(dòng)定義和調(diào)整衡量標(biāo)準(zhǔn)的做法可能適用于20或30個(gè)容器,但微服務(wù)監(jiān)控必須能夠與彈性服務(wù)一起擴(kuò)展和收縮——而且無(wú)需人工干預(yù)。因此,如果你必須手動(dòng)定義容器包含在監(jiān)控中的服務(wù),那么你很可能會(huì)錯(cuò)過(guò)Kubernetes或Mesos在白天啟動(dòng)的新容器。同樣,如果貴組織在構(gòu)建和部署新代碼時(shí)安裝了自定義的統(tǒng)計(jì)信息端點(diǎn)(custom stats endpoint),則開(kāi)發(fā)人員會(huì)從Docker注冊(cè)表中提取基本的鏡像(base image),因此監(jiān)視過(guò)程會(huì)變得非常復(fù)雜。
 
如果貴組織正在使用微服務(wù),那么你還需要跨越多個(gè)數(shù)據(jù)中心或多個(gè)云的監(jiān)控。例如,只有當(dāng)你的微服務(wù)限用于AWS時(shí),AWS CloudWatch才有用。。
 
4.監(jiān)視API
 
作為微服務(wù)環(huán)境的通用語(yǔ)言,API是其他團(tuán)隊(duì)能體驗(yàn)到的唯一服務(wù)元素。如果尚未定義正式的服務(wù)水平協(xié)議,則API的響應(yīng)和一致性甚至可能成為內(nèi)部的服務(wù)水平協(xié)議。這意味著API監(jiān)控必須超越標(biāo)準(zhǔn)的,非此即彼的啟用/停用檢查(binary up-down check)。
 
作為微服務(wù)的用戶(hù),你會(huì)發(fā)現(xiàn)了解作為時(shí)間函數(shù)的最常用的端點(diǎn)是很有價(jià)值的,它可以讓你了解服務(wù)的使用情況發(fā)生了什么變化(不管是因?yàn)樵O(shè)計(jì)還是用戶(hù)更改)。發(fā)現(xiàn)最慢的服務(wù)端點(diǎn)還可以向你表明哪些地方需要優(yōu)化。通過(guò)系統(tǒng)跟蹤服務(wù)調(diào)用的能力(通常僅由開(kāi)發(fā)人員使用的功能)將有助于貴組織理解整體的用戶(hù)體驗(yàn)。API監(jiān)控的這一方面也將把信息分解成微服務(wù)環(huán)境的基于基礎(chǔ)架構(gòu)和應(yīng)用程序的視圖。
 
5.將監(jiān)視映射到組織結(jié)構(gòu)
 
雖然微服務(wù)預(yù)示著你和你的組織監(jiān)控和保護(hù)軟件基礎(chǔ)架構(gòu)的方式發(fā)生了全面轉(zhuǎn)變,但你不忽視軟件監(jiān)控的人為方面,這是很重要的。如果貴組織希望從這種新的軟件體系結(jié)構(gòu)方法中受益,那么你的團(tuán)隊(duì)必須自行創(chuàng)建微服務(wù)的鏡像。這意味著團(tuán)隊(duì)會(huì)更小,更松散,擁有大量的自主權(quán),但把重點(diǎn)放在戰(zhàn)略目標(biāo)上。每個(gè)團(tuán)隊(duì)對(duì)所使用的語(yǔ)言,錯(cuò)誤解決(bug resolution)或操作責(zé)任方面比以往任何時(shí)候都保留了更多的控制權(quán)。然后,你可以創(chuàng)建一個(gè)監(jiān)控平臺(tái),這個(gè)平臺(tái)允許每個(gè)微服務(wù)團(tuán)隊(duì)隔離警報(bào)、指標(biāo)和儀表板,同時(shí)仍然在整個(gè)系統(tǒng)中為操作提供綜覽。
 
軟件監(jiān)控的一些基本改變有助于促進(jìn)微服務(wù)的速度,效率和潛在節(jié)約。改進(jìn)了的微服務(wù)監(jiān)控使性能更強(qiáng)大,最終用戶(hù)滿(mǎn)意度更高。微服務(wù)得到適當(dāng)調(diào)校后將在更短的時(shí)間內(nèi)提供更多的功能,這是服務(wù)交付的良性循環(huán)。
 
版權(quán)聲明:本文為企業(yè)網(wǎng)D1Net編譯,轉(zhuǎn)載需注明出處為:企業(yè)網(wǎng)D1Net,如果不注明出處,企業(yè)網(wǎng)D1Net將保留追究其法律責(zé)任的權(quán)利。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)