不可否認,監控您的服務(wù)器非常重要。它不僅可以幫助您每天解決問(wèn)題,還可以幫助您完成擴展和容量規劃等任務(wù)。但無(wú)論您的監控有多先進(jìn),它總是從簡(jiǎn)單的服務(wù)器健康指示開(kāi)始。實(shí)際上,也許“簡(jiǎn)單”在這里并不是最好的詞?!胺?wù)器健康”通常會(huì )給你一個(gè)“健康/不健康”的指示。但這并不意味著(zhù)底層邏輯也很簡(jiǎn)單。在這篇文章中,您將了解檢查服務(wù)器運行狀況的實(shí)際操作。
什么是服務(wù)器運行狀況?
聽(tīng)起來(lái)可能很簡(jiǎn)單,但確定服務(wù)器運行狀況實(shí)際上并不那么容易。為了確定服務(wù)器運行狀況,您需要考慮多個(gè)指標。對于初學(xué)者來(lái)說(shuō),健康不僅僅意味著(zhù)服務(wù)器正在運行。服務(wù)器可能已啟動(dòng)并正在運行,但它可能存在多個(gè)問(wèn)題。CPU 使用率可以恒定為 100%,磁盤(pán)可能(幾乎)已滿(mǎn),或者網(wǎng)絡(luò )吞吐量可能非常低。
這些問(wèn)題相對容易發(fā)現。但也有一些情況可能看起來(lái)一切正常,但偶爾會(huì )出現問(wèn)題。在磁盤(pán)和網(wǎng)絡(luò )方面尤其如此。隨機磁盤(pán)和/或網(wǎng)絡(luò )問(wèn)題很難發(fā)現,但它們肯定會(huì )產(chǎn)生一些問(wèn)題。因此,服務(wù)器健康監控并不像資源消耗和正常運行時(shí)間那么簡(jiǎn)單。那么,良好的服務(wù)器運行狀況指示實(shí)際上應該包括哪些內容?讓我們深入了解它。
基礎
正確評估服務(wù)器的健康狀況肯定需要的不僅僅是基本指標。但是,這并不意味著(zhù)您應該跳過(guò)這些基礎知識。事實(shí)上,在大多數情況下,它們會(huì )為您提供服務(wù)器健康狀況的良好指示。
那么這些基礎是什么呢?
服務(wù)器狀態(tài)和正常運行時(shí)間
讓我們從(理論上)最直接表明服務(wù)器健康狀況的東西開(kāi)始——服務(wù)器狀態(tài)。如果服務(wù)器已啟動(dòng)并正在運行,則表示它是健康的。如果服務(wù)器關(guān)閉或沒(méi)有響應,則它不健康。但真的是這樣嗎?
想想看。大多數公司已經(jīng)遷移到云環(huán)境,這讓事情變得有點(diǎn)復雜。云的優(yōu)勢之一是靈活性和自動(dòng)擴展。您在云中的基礎架構可能會(huì )根據當前需求自動(dòng)啟動(dòng)和停止服務(wù)器。因此,如果服務(wù)器宕機,并不意味著(zhù)有問(wèn)題。這可能意味著(zhù)自動(dòng)縮放器停止了它,因為此時(shí)不需要它。出于同樣的原因,服務(wù)器正常運行時(shí)間或重啟次數也不再是服務(wù)器健康狀況的指標。
資源使用
嗯,不一定。
您可能認為服務(wù)器使用 10% 或 90% 的 CPU 并不重要。如果它使用任何數量的 CPU,那么這意味著(zhù)它已經(jīng)啟動(dòng)并正在運行。所以它應該是“健康的”,對吧?
根據具體情況,非常高或非常低的資源消耗可能表明存在問(wèn)題。這一切都取決于上下文和模式。假設您的服務(wù)器在過(guò)去一年中使用率穩定在 40% 到 60%,然后突然飆升至 100%。這告訴你可能有問(wèn)題。
想象一下,您有服務(wù)器在公司中承擔繁重的工作。它們的典型使用率接近 100%。(例如,他們可能會(huì )批量處理大量數據或 GPU 驅動(dòng)的圖形渲染。)如果其中一臺服務(wù)器突然下降到接近 0% 的使用率,那么肯定有問(wèn)題。所以有什么問(wèn)題?也許進(jìn)行重要處理的軟件崩潰了。
理想情況下,您應該在服務(wù)器健康指標中包含資源消耗——但前提是您能夠將其與基線(xiàn)進(jìn)行比較,并且僅適用于具有穩定、可預測的使用模式的服務(wù)器。
你還應該考慮什么?
如本文開(kāi)頭所述,服務(wù)器可能已啟動(dòng)并正在運行,但這可能并不意味著(zhù)它是健康的。我們涵蓋了基礎知識,但即使是這些指標也可能并不總能告訴您全部真相。以下是評估服務(wù)器運行狀況時(shí)需要考慮的一些額外事項。
網(wǎng)絡(luò )和存儲
網(wǎng)絡(luò )和存儲對于評估服務(wù)器運行狀況都非常重要。但是,它并不像 CPU 或內存使用那么簡(jiǎn)單。在這里,我們對簡(jiǎn)單的使用數字并不感興趣。相反,查看一些可以直接表明健康問(wèn)題的具體指標是有意義的。
對于網(wǎng)絡(luò ),您應該(例如)查看延遲和丟包計數,而不是查看吞吐量或網(wǎng)絡(luò )飽和度。當然,一天中的延遲也會(huì )有所不同,具體取決于整體網(wǎng)絡(luò )流量。但如果它真的關(guān)閉了,那么你就知道出了點(diǎn)問(wèn)題。
以秒而不是毫秒為單位計算的延遲是需要研究的。有時(shí)它可能只是一個(gè)軟件問(wèn)題,但非常高的延遲也可能表明服務(wù)器上存在一般網(wǎng)絡(luò )問(wèn)題。
實(shí)際上,將延遲與丟包計數結合起來(lái)可以幫助您確定這是硬件問(wèn)題還是軟件問(wèn)題。如果您看到非常高的延遲和大量的數據包丟失,那么將服務(wù)器標記為不健康是有意義的。
在存儲方面,我們也有類(lèi)似的情況。磁盤(pán)吞吐量對于服務(wù)器的運行狀況并不那么重要,盡管寫(xiě)入或讀取速度非常慢可能表明存在磁盤(pán)問(wèn)題。
更有趣的是 I/O 等待時(shí)間。如果您經(jīng)??吹礁?I/O 等待時(shí)間,那么我會(huì )認為這樣的服務(wù)器不健康。這實(shí)際上并不一定意味著(zhù)磁盤(pán)有問(wèn)題。同樣,與網(wǎng)絡(luò )一樣,它可能表示磁盤(pán)無(wú)法處理負載。但這也可能意味著(zhù)實(shí)際硬件存在一些問(wèn)題。
如何將這些知識付諸實(shí)踐?讓我們來(lái)了解一下。
健康檢查
現在您已經(jīng)大致了解了如何評估服務(wù)器運行狀況,現在是討論如何實(shí)際執行運行狀況檢查的時(shí)候了。有幾種方法可以做到這一點(diǎn)——主要取決于您選擇的監控工具。但總體思路對所有人來(lái)說(shuō)都是一樣的。
一種選擇是基于監控系統評估服務(wù)器運行狀況,而監控系統又基于某些指標。例如,您可以創(chuàng )建一些復雜的邏輯來(lái)考慮我們上面提到的所有指標?;诖?,您可以在監控工具中創(chuàng )建“健康/不健康”條目。
另一種選擇是臨時(shí)執行遠程運行狀況檢查。這意味著(zhù)您向服務(wù)器發(fā)送某種調用并等待響應。根據響應,您可以評估服務(wù)器運行狀況。
此調用可以有多種形式,從簡(jiǎn)單的 ping (ICMP) 或 TCP 數據包到高級 HTTP 調用,直接調用服務(wù)器上運行的軟件。簡(jiǎn)單的調用只會(huì )告訴您服務(wù)器是否啟動(dòng)。更高級的、基于 HTTP 的調用不僅可以告訴您服務(wù)器是否正在運行,還可以告訴您它是否在做它應該做的工作。
總結并尋找先進(jìn)的監控解決方案
如您所見(jiàn),完全了解服務(wù)器運行狀況并不像知道服務(wù)器是否已啟動(dòng)和運行那么簡(jiǎn)單。但是,許多公司仍然這樣對待服務(wù)器健康。像這樣一個(gè)非常簡(jiǎn)單的指標通??梢栽诜?wù)器實(shí)際上存在一些問(wèn)題時(shí)表明它是“健康的”。
如果您不想成為這些公司中的一員,請查看可以幫助您構建更好的服務(wù)器健康評估的高級監控解決方案。服務(wù)器管理軟件就是這樣一種工具。無(wú)論您在服務(wù)器上運行什么操作系統,都可以幫助您避免被無(wú)用的警報轟炸。更好的是,它可以為您提供有關(guān)服務(wù)器健康狀況的有用見(jiàn)解。銷(xiāo)售團隊將很樂(lè )意向您展示一個(gè)演示和一個(gè)有用的、可搜索的博客。