采集間隔
定義了采集的頻率,gmond按照這個頻率對某項數(shù)據(jù)進行采集和處理。對某些常量數(shù)據(jù),如機器CPU的核數(shù),只采集一次。
值閾值
定義采集值和上次報告的值之間的絕對值差(absolute difference),只有值的顯著變化才會引發(fā)一條消息。
時間閾值
該閾值定義了兩次報告測量值之間的最大時間間隔,而不管測量數(shù)據(jù)的值具體是多少。這個閾值是解決UDP的不可靠性的一種變通方案,提供了一種計算值的年齡的手段,如果自從我們上次收到報告以來,已經(jīng)過去了一次或幾次該國值的時間,則認為我們的當(dāng)前測量值是過時的。
從高層來看,gmond對其監(jiān)測的測量數(shù)據(jù)遵從下列步驟:
1.采集當(dāng)前的測量數(shù)據(jù)值。
2.如果當(dāng)前值和上次報告的值的絕對值差大于指定的值閾值,轉(zhuǎn)步驟5。3.如果當(dāng)前時間超過了發(fā)送測量數(shù)據(jù)的硬限制(hard limit),轉(zhuǎn)步驟5。
4.轉(zhuǎn)步驟7。
5.發(fā)送測量數(shù)據(jù)的值,并保存用于下次比較(在步驟2中)。
6.把時間閾值加到當(dāng)前時間上,作為下次發(fā)送測量數(shù)據(jù)的硬限制。
7.進人睡眠,時長為采集間隔。
8.轉(zhuǎn)步驟1。
這種方式使得gmond只在測量數(shù)據(jù)發(fā)生顯著變化時才發(fā)送消息,而且,前述的計算也加上了一個隨機值,以減少網(wǎng)絡(luò)爭用。最后,對于數(shù)千臺機器,測量數(shù)據(jù)的采集與發(fā)送要協(xié)調(diào)進行。
對降低測量數(shù)據(jù)采集的成本同樣重要的是,將成本固定下來。最壞情況下,每次采集間隔的每次采集都發(fā)送一條消息,最好情況下,消息僅在指定的時間閾值過去之后發(fā)送。這個范圍使你能夠?qū)y量數(shù)據(jù)采集建立一個固定的成本預(yù)算,當(dāng)然,除非閾值有問題。
對于網(wǎng)絡(luò)測量數(shù)據(jù),要小心選擇值國值。我在第一次把網(wǎng)絡(luò)測量數(shù)據(jù)采集加到Ganglia上時,把默認的采集間隔設(shè)置得太短,值閾值也設(shè)置得太小,在我的筆記本電腦上沒有注意到這種配置錯誤,在將Ganglia部署到大量的集群上的時候,這種錯誤就非常明顯了。每個節(jié)點都開始發(fā)送網(wǎng)絡(luò)測量數(shù)據(jù)更新,以響應(yīng)其他節(jié)點的發(fā)送,Ganglia導(dǎo)致了一場巨大的網(wǎng)絡(luò)風(fēng)暴。希望你不會發(fā)生這種尷尬的事情。
Ganglial應(yīng)有而沒有的一個功能是測量數(shù)據(jù)的批量處理。你要是自己寫測量數(shù)據(jù)采集系統(tǒng),記住要支持這個功能。將測測量數(shù)據(jù)收集起來批量發(fā)送,既減少了發(fā)送的網(wǎng)絡(luò)包數(shù),也減少了帶寬占用。例如,你發(fā)送的每個IPv4UDP包都包含一個14字節(jié)的以太網(wǎng)頭部、一個20字節(jié)的P頭部、一個8字節(jié)的UDP頭部和一個4字節(jié)的以太網(wǎng)尾部。實際上這些數(shù)字還沒考慮如填充、VLAN、IP選項、IPv6的差異等因素,但我們可以用這些數(shù)字做一個大概的計算。假設(shè)你發(fā)送的數(shù)據(jù)是32字節(jié),發(fā)送10次更新,則需要10個78字節(jié)的包,總計780字節(jié)。批量發(fā)送的話,則只需要1個366字節(jié)的包,其中320字節(jié)用于測量數(shù)據(jù)。這個例子中,批量發(fā)送減少了90%的包,帶寬減少了一半以上。批量發(fā)送的缺點是,一旦包丟失匯集與組織測量數(shù)據(jù)將會丟失多個數(shù)據(jù),而不是一個。
如果一項測量數(shù)據(jù)對于一臺機器是有價值的,則可能對所有機器都有價值,這一點對系統(tǒng)測量數(shù)據(jù)而言是對的,但對于應(yīng)用而言則不一定對。如,采集 MYSQL的測量數(shù)據(jù),只對運行數(shù)據(jù)庫的機器才有意義。但是,每分鐘的負荷,則對于不論運行什么應(yīng)用的機器而言,都是有意義的。
Ganglia元數(shù)據(jù)進程(gmetad)采集、匯集、存儲一組機器的測量數(shù)據(jù),這種匯總數(shù)據(jù)將通過數(shù)據(jù)采集的層次結(jié)構(gòu),傳遞給上游的gmetad。這種層次結(jié)構(gòu)的代理模式能夠創(chuàng)建很大的非中心化的測量數(shù)據(jù)采集重疊,這些重疊可以跨越一座校園或整個地球。
作為一個極端的例子,設(shè)想將美國的每臺機器都連到一個大的測量數(shù)據(jù)采集重疊上,我們將有一個國家級的gmetad,這個gmetad從運行在每個州的50個授權(quán)gmetad中獲取數(shù)據(jù),每個州的gmetad從每個縣級的gmetad中收集數(shù)據(jù),而每個縣級的gmetad從每個市級的gmetad中收集數(shù)據(jù),等等。
這個例子中的根節(jié)點不會被美國的每臺機器中的所有測量數(shù)據(jù)壓垮,它只從每個州州獲取匯總數(shù)據(jù),然后生成全美國的匯總數(shù)據(jù)。所以,對于將50個數(shù)加在一起這樣的運算,是不需要很強大的計算能力的。
Ganglia的Web前端通常安裝在運行g(shù)retai的機器上上,Web前端將gmetad的數(shù)據(jù)進行可視化,你可以直觀地測覽,并在測量數(shù)據(jù)采集重疊中進行導(dǎo)航。例如,你可以通過根節(jié)點的gmetad查看全美國的匯總信息,以及每個州的數(shù)據(jù)源,然后在圖上點擊伊利諾伊州,進入感興趣的數(shù)據(jù)。這種樹狀的測量數(shù)據(jù)值屬于空間組件,除此之外,還有時間組件。伊利諾伊州的Web前端,查看詳細信息。 Ganglia:還讓你可對圖片進行放大和縮小,以找到Gmetad:將測量數(shù)據(jù)存儲于RD數(shù)據(jù)庫中,RRD數(shù)據(jù)庫用于存儲數(shù)值數(shù)據(jù)并生成歷史報表。RD一個非常有用的特點是體積并不隨著時間的增長而增長。RRD的每個內(nèi)部檔案庫( archive)都有固定數(shù)量的“桶”,新數(shù)據(jù)到來后,更新所有相關(guān)的檔案庫,并丟棄陳舊的數(shù)據(jù)。對于一個簡化的例子,你可以用24個桶對應(yīng)于一天的24小時,另外的7個桶對應(yīng)于一周的7天。要在不同時期中發(fā)現(xiàn)數(shù)據(jù)的趨勢,RRD是一個理想的工具。將日時序數(shù)據(jù)和前述的層次代理模式結(jié)合起來,可以用于回答這樣的問題:“對于全美國來說,過去一年CPU的利用率是一個什么樣的趨勢?”
盡管我希望如此, Ganglia卻從來沒有這樣大范圍地部署過。一個更為實際的例子是像Grid3群組這樣的,2003年使用 Ganglia,從數(shù)千臺機器中采集測量數(shù)據(jù),這些機器分布在美國和韓國的幾十個站點,用于高等物理研究。這些為Grid3采集的測量數(shù)據(jù)嵌人其他系統(tǒng),如 Globus,讓人們分享計算資源進行物理實驗。
從大量機器中匯集不同時期的數(shù)據(jù),對于容量規(guī)劃也很有用。了解單臺機器的CPU利用率為80%是有用的,但知道整個網(wǎng)站建設(shè)集群上個月的利用率為80%卻更有價值。能夠看到這種種“宏觀圖景”,對于計劃硬件采購、發(fā)現(xiàn)處理流水線中的瓶頸、洞察Web運維的動態(tài),都是非常有幫助的。
本文地址:http://murenxiang.com.cn//article/3314.html