![Zabbix源碼解析之監(jiān)控項(xiàng)數(shù)據(jù)采集流程_第1頁(yè)](http://file4.renrendoc.com/view/ed3a778a37eff3af5cd7266fc6b11404/ed3a778a37eff3af5cd7266fc6b114041.gif)
![Zabbix源碼解析之監(jiān)控項(xiàng)數(shù)據(jù)采集流程_第2頁(yè)](http://file4.renrendoc.com/view/ed3a778a37eff3af5cd7266fc6b11404/ed3a778a37eff3af5cd7266fc6b114042.gif)
![Zabbix源碼解析之監(jiān)控項(xiàng)數(shù)據(jù)采集流程_第3頁(yè)](http://file4.renrendoc.com/view/ed3a778a37eff3af5cd7266fc6b11404/ed3a778a37eff3af5cd7266fc6b114043.gif)
![Zabbix源碼解析之監(jiān)控項(xiàng)數(shù)據(jù)采集流程_第4頁(yè)](http://file4.renrendoc.com/view/ed3a778a37eff3af5cd7266fc6b11404/ed3a778a37eff3af5cd7266fc6b114044.gif)
![Zabbix源碼解析之監(jiān)控項(xiàng)數(shù)據(jù)采集流程_第5頁(yè)](http://file4.renrendoc.com/view/ed3a778a37eff3af5cd7266fc6b11404/ed3a778a37eff3af5cd7266fc6b114045.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 Zabbix 源碼解析之監(jiān)控項(xiàng)數(shù)據(jù)采集流程 一、概述監(jiān)控項(xiàng)數(shù)據(jù)采集是一個(gè)監(jiān)控工具最基本的功能,監(jiān)控?cái)?shù)據(jù)采集的準(zhǔn)確、實(shí)時(shí)、有效是Zabbix其它監(jiān)控功能正常運(yùn)轉(zhuǎn)的前提。因此,Zabbix運(yùn)維人員有必要了解監(jiān)控項(xiàng)數(shù)據(jù)采集流程,并有針對(duì)性的設(shè)計(jì)巡檢和問題處理流程,確保監(jiān)控?cái)?shù)據(jù)質(zhì)量。Zabbix 的監(jiān)控采集類型很豐富,我最常用的是Agent方式,因此,就挑選Linux的內(nèi)存監(jiān)控(Zabbix內(nèi)置key:vm.memory.size)為例來(lái)梳理一下監(jiān)控項(xiàng)數(shù)據(jù)采集流程。二、程序流程圖下圖是我們梳理的vm.memory.size監(jiān)控項(xiàng)采集流程圖,數(shù)據(jù)采集的過程設(shè)計(jì)得縝密而復(fù)雜:下面,我們將對(duì)主要流程和具體
2、實(shí)現(xiàn)進(jìn)行解析,涉及函數(shù)的具體實(shí)現(xiàn)解析寫在了代碼注釋中。三、相關(guān)數(shù)據(jù)結(jié)構(gòu)定義在介紹vm.memory.size具體實(shí)現(xiàn)之前,我們先介紹幾個(gè)相關(guān)數(shù)據(jù)結(jié)構(gòu)的定義。(1)struct ZBXMETRIC該結(jié)構(gòu)體用于記錄zabbix的監(jiān)控項(xiàng)配置信息(2) struct AGENTREQUEST該結(jié)構(gòu)體用于記錄zabbix Agent的監(jiān)控項(xiàng)請(qǐng)求信息(3) struct AGENTRESULT該結(jié)構(gòu)體用于記錄給zabbix Agent返回的采集數(shù)據(jù)四、監(jiān)控項(xiàng)vm.memory.size配置用法: vm.memory.sizemode參數(shù):total (*) - 總物理內(nèi)存. mode的默認(rèn)值free (*
3、) - 可用內(nèi)存.active - 內(nèi)存當(dāng)前使用或最近使用,它在RAM中是活躍的。inactive - 未使用內(nèi)存.wired - 被標(biāo)記為始終駐留在RAM中的內(nèi)存,不會(huì)移動(dòng)到磁盤。pinned - 同“wired”。anon - 與文件無(wú)關(guān)的內(nèi)存(不能重新讀取)。exec - 可執(zhí)行代碼,通常來(lái)自于一個(gè)(程序)文件。file - 緩存最近訪問文件的目錄。buffers (*) - 緩存磁盤讀寫數(shù)據(jù)。cached (*) - 緩存文件系統(tǒng)讀寫數(shù)據(jù)。shared - 可以同時(shí)被多個(gè)進(jìn)程訪問的內(nèi)存。used (*) - 已使用內(nèi)存。pused (*) - 已使用內(nèi)存占總內(nèi)存的百分比。availab
4、le (*) - 可用內(nèi)存pavailable (*) - 可用內(nèi)存占總內(nèi)存的百分比。假如我們?cè)谀矵ost下定義了2個(gè)item:Item1:Total memory Key1:vm.memory.sizetotalItem2:Available memory Key2:vm.memory.sizeavailable這2個(gè)item就會(huì)被insert到Server數(shù)據(jù)庫(kù)的items表中,這樣該Host的Agent就可以獲取到相應(yīng)的采集任務(wù)了(獲取流程本文不具體闡述),下面我們來(lái)重點(diǎn)看下vm.memory.size的采集實(shí)現(xiàn)和數(shù)據(jù)上送。五、監(jiān)控項(xiàng)vm.memory.size 采值實(shí)現(xiàn)vm.memor
5、y.size監(jiān)控項(xiàng)在不同的操作系統(tǒng)下實(shí)現(xiàn)各不相同,Linux系統(tǒng)下的實(shí)現(xiàn),在src/libs/zbxsysinfo/linux/linux.c中。其配置項(xiàng)存放于parameters_specific數(shù)組中,可以看到對(duì)應(yīng)的實(shí)現(xiàn)函數(shù)為VM_MEMORY_SIZE,1. VM_MEMORYSIZE函數(shù)(位置在:src/libs/zbxsysinfo/linux/memory.c)用來(lái)接受參數(shù),并對(duì)應(yīng)調(diào)用對(duì)應(yīng)的取值函數(shù)進(jìn)行數(shù)據(jù)采集,并返回?cái)?shù)據(jù)。具體實(shí)現(xiàn)如下:從源碼中可以看到,Linux系統(tǒng)支持的模式包括如下參數(shù),與官方文檔中所列的參數(shù)不同。totalfreebuffersusedpusedavaila
6、blepavailablesharedcachedactiveanoninactiveslab通過分析各個(gè)參數(shù)對(duì)應(yīng)的取值邏輯,可分為2種方法:第一種:調(diào)用sysinfo函數(shù)獲取指標(biāo)值。通過這種方式獲取的選項(xiàng)參數(shù)有:total,free,buffers,used,pused,pavailable,shared。第二種:讀取/proc/meminfo文件中的指標(biāo)值。通過這種方式獲取的選項(xiàng)參數(shù)有:available,cached,active,anon,inactive,slab。下面我們分別對(duì)兩種情況進(jìn)行分析。(1)調(diào)用sysinfo函數(shù)Linux中sysinfo()函數(shù)是用來(lái)獲取系統(tǒng)相關(guān)統(tǒng)計(jì)信息
7、的函數(shù)。它會(huì)將結(jié)果存儲(chǔ)在struct sysinfo結(jié)構(gòu)體中。函數(shù)聲明:int sysinfo(struct sysinfo *info);struct sysinfo的定義如下:total,free,buffers,used,pused,pavailable,shared等指標(biāo),都是以struct sysinfo中的成員的取值來(lái)計(jì)算的。 total:info.totalram * info.mem_unit free:info.freeram * info.mem_unit buffers:info.bufferram * info.mem_unit used:(info.totalram
8、- info.freeram) * info.mem_unit pused:(info.totalram - info.freeram) / (double)info.totalram * 100 pavailable:available / (info.totalram info.mem_unit)100(available在/proc/meminfo文件中讀出) shared:info.sharedram * info.mem_unit(僅Linux 2.4)(2) 讀取/proc/meminfo文件該功能在VM_MEMORY_PROC_MEMINFO函數(shù)中實(shí)現(xiàn)。向meminfo_entr
9、y參數(shù)傳遞Cached:, Active:, AnonPages:, Inactive:, Slab:字段。其中available的獲取比較特殊,它先檢測(cè)/proc/meminfo文件文件中是否有MemAvailable:字段,如果沒有,則再調(diào)用sysinfo函數(shù)獲取。具體實(shí)現(xiàn)如下:六、監(jiān)控項(xiàng)vm.memory.size 數(shù)據(jù)上送前面解析的監(jiān)控項(xiàng)的采值邏輯,下面我們來(lái)分析數(shù)據(jù)從Agent端上送到Server的過程。介紹幾個(gè)相關(guān)的函數(shù):1.init_metrics函數(shù)vm.memory.size監(jiān)控項(xiàng)會(huì)被存儲(chǔ)到parameters_specific數(shù)組中。那么parameters_specifi
10、c數(shù)組在哪兒被使用到呢?就在init_metrics函數(shù)中。init_metrics函數(shù)在zabbix Server和zabbix Agent啟動(dòng)的過程中都被調(diào)用了,因此這些監(jiān)控項(xiàng)在zabbix啟動(dòng)時(shí)已經(jīng)被設(shè)置好了。2.add_metric函數(shù)add_metric函數(shù)會(huì)向commands數(shù)組中添加值。commands是在sysinfo.c中定義的一個(gè)ZBX_METRIC結(jié)構(gòu)體變量,初始值是NULL。add_metric函數(shù)具體實(shí)現(xiàn)如下:3.process函數(shù)commands數(shù)組在哪里被使用到了呢?在process函數(shù)中,process函數(shù)定義在src/libs/zbxsysinfo/sysin
11、fo.c中。在process函數(shù)中會(huì)最終調(diào)用監(jiān)控項(xiàng)實(shí)現(xiàn)函數(shù),那process函數(shù)在哪被調(diào)用到的呢?在zabbix_agent中,調(diào)用process函數(shù)的地方有2處,分別位于agent的被動(dòng)模式和主動(dòng)模式的實(shí)現(xiàn)中。我們分別來(lái)分析一下。(1) 被動(dòng)模式下的processlistener函數(shù)(2)主動(dòng)模式下的processactivechecks函數(shù)4. 監(jiān)控項(xiàng)值的序列化與上送介紹完相關(guān)的函數(shù)和調(diào)用,下面我們可以具體來(lái)分析數(shù)據(jù)上送的過程了(1)agent與server通信協(xié)議首先是通信協(xié)議,agent與server間的通信協(xié)議比較簡(jiǎn)單,其協(xié)議格式為:。 PROTOCOL: 協(xié)議頭,該字段長(zhǎng)度為4個(gè)字
12、節(jié),內(nèi)容為ZBXD。 FLAGS: 協(xié)議標(biāo)志,該字段長(zhǎng)度為1個(gè)字節(jié)。有2個(gè)取值(這兩個(gè)值可以使用“或”操作同時(shí)?。?0 x01:ZBX_TCP_PROTOCOL,zabbix TCP通信協(xié)議 0 x02:ZBX_TCP_COMPRESS,使用壓縮算法 DATALEN: 數(shù)據(jù)長(zhǎng)度,該字段長(zhǎng)度為4個(gè)字節(jié)。整型,以小端模式表示。 注意該長(zhǎng)度不包含協(xié)議頭這幾個(gè)字段的長(zhǎng)度,它僅表示DATA字段的數(shù)據(jù)長(zhǎng)度。 RESERVED: 保留字段,用作協(xié)議擴(kuò)展,字段長(zhǎng)度為4字節(jié)。當(dāng)ZBX_TCP_COMPRESS標(biāo)志被設(shè)置后,RESERVED字段會(huì)保存未被壓縮時(shí)的數(shù)據(jù)段的長(zhǎng)度。整型,以小端模式表示。 DATA: 數(shù)據(jù)內(nèi)容,使用JSON格式來(lái)序列化。(2)監(jiān)控項(xiàng)值的傳遞1、我們以主動(dòng)模式下會(huì)被調(diào)用的send_buffer函數(shù)(zbx_tcp_send()最終會(huì)調(diào)用到zbx_tcp_send_ext()函數(shù))為例,分析一下監(jiān)控項(xiàng)值如何發(fā)送給server。被動(dòng)模式下zbx_tcp_send_to(s, *value, .)函數(shù)最終也會(huì)調(diào)用到zbx_tcp_send_ext()函數(shù),與主動(dòng)模式下最終的處理是一致的,我們不再單獨(dú)分析。具體實(shí)現(xiàn)如下:根據(jù)上面的源碼分析結(jié)果,可得出agent發(fā)送的數(shù)據(jù)的格式如下:2、agent發(fā)送數(shù)據(jù)后,會(huì)從server端收到響應(yīng)數(shù)據(jù),響應(yīng)數(shù)據(jù)的格式如下
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- LY/T 2280-2024中國(guó)森林認(rèn)證森林經(jīng)營(yíng)應(yīng)用指南
- 蘇科版版數(shù)學(xué)七年級(jí)上冊(cè)聽評(píng)課記錄《2-7 有理數(shù)的乘方》第1課時(shí)
- 人教部編版八年級(jí)道德與法治上冊(cè):8.2《堅(jiān)持國(guó)家利益至上》聽課評(píng)課記錄3
- 蘇科版九年級(jí)數(shù)學(xué)聽評(píng)課記錄:第27講 切線性質(zhì)定理的應(yīng)用
- 用工合同范本(2篇)
- 生態(tài)環(huán)境融資協(xié)議書(2篇)
- 環(huán)境友好化學(xué)品研發(fā)合同(2篇)
- 一年級(jí)下雪啦聽評(píng)課記錄
- 六年級(jí)數(shù)學(xué)上聽評(píng)課記錄
- 人教版數(shù)學(xué)八年級(jí)下冊(cè)《構(gòu)建知識(shí)體系》聽評(píng)課記錄2
- 2025年大慶職業(yè)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 2025年中國(guó)南方航空股份有限公司招聘筆試參考題庫(kù)含答案解析
- 商務(wù)部發(fā)布《中國(guó)再生資源回收行業(yè)發(fā)展報(bào)告(2024)》
- 山東省濟(jì)南市2024-2024學(xué)年高三上學(xué)期1月期末考試 地理 含答案
- 2025年福建新華發(fā)行(集團(tuán))限責(zé)任公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 【課件】液體的壓強(qiáng)(課件)-2024-2025學(xué)年人教版物理八年級(jí)下冊(cè)
- 實(shí)施彈性退休制度暫行辦法解讀課件
- 冷凍食品配送售后服務(wù)體系方案
- 江蘇省駕校考試科目一考試題庫(kù)
- 四川省成都市青羊區(qū)成都市石室聯(lián)合中學(xué)2023-2024學(xué)年七上期末數(shù)學(xué)試題(解析版)
- 2024-2030年中國(guó)自動(dòng)光學(xué)檢測(cè)儀(AOI)市場(chǎng)競(jìng)爭(zhēng)格局與前景發(fā)展策略分析報(bào)告
評(píng)論
0/150
提交評(píng)論