国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      監(jiān)控基于docker創(chuàng)建的container的方法及系統(tǒng)的制作方法

      文檔序號:10534674閱讀:212來源:國知局
      監(jiān)控基于docker創(chuàng)建的container的方法及系統(tǒng)的制作方法
      【專利摘要】本發(fā)明提供一種監(jiān)控基于docker創(chuàng)建的container的方法及系統(tǒng),其中,監(jiān)控方法包括:獲取當前主機上所有的container的id信息;獲取內(nèi)核導出的當前主機上所有container的命名空間的文件描述符;根據(jù)所述container的id信息和命名空間的文件描述符采集container的度量值數(shù)據(jù)。通過本發(fā)明提供的方法及系統(tǒng),可以實現(xiàn)對docker1.0創(chuàng)建的container的監(jiān)控,采集container的底層度量值數(shù)據(jù),監(jiān)控container中的應(yīng)用對資源的使用情況。
      【專利說明】
      監(jiān)控基于docker創(chuàng)建的conta i ner的方法及系統(tǒng)
      技術(shù)領(lǐng)域
      [0001 ]本發(fā)明實施例涉及虛擬化技術(shù)中的數(shù)據(jù)監(jiān)控采集,尤其涉及一種監(jiān)控基于docker創(chuàng)建的container的方法及系統(tǒng)。
      【背景技術(shù)】
      [0002]Docker是由Paas提供商dotCloud開源的一個基于LXC(Linux Container)的高級應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器(container)中,然后發(fā)布到任何流行的Linux機器中。由于其基于LXC的輕量級虛擬化的特點,docker相比其他虛擬技術(shù),具有啟動快、資源占用小的優(yōu)勢。
      [0003]目前,隨著Docker在云計算市場中領(lǐng)先地位的日益穩(wěn)固,容器虛擬化技術(shù)也因為比vm(virtual machine,虛擬機)有更小的系統(tǒng)的性能開銷,因而在對kernel(內(nèi)核)隔離要求沒有那么苛刻的情況下,有著廣泛的應(yīng)用場景。而傳統(tǒng)的對資源使用情況的監(jiān)控采集,主要是針對host或者vm的,因而當提供應(yīng)用服務(wù)的環(huán)境是container(容器)時,如何對其進行監(jiān)控采集,目前還沒有有效的實現(xiàn)方案。

      【發(fā)明內(nèi)容】

      [0004]本發(fā)明實施例提供一種監(jiān)控基于docker創(chuàng)建的container的方法及系統(tǒng),用以解決現(xiàn)有技術(shù)中在提供應(yīng)用服務(wù)的環(huán)境是容器時,無法對container的數(shù)據(jù)進行采集的問題,實現(xiàn)對部署在container中的應(yīng)用程序?qū)Y源的使用情況的監(jiān)控。
      [0005]本發(fā)明實施例提供一種監(jiān)控基于docker創(chuàng)建的container的方法,包括:
      [0006]獲取當前主機上所有的container的id信息;
      [0007]獲取內(nèi)核導出的當前主機上的所有container的命名空間的文件描述符;
      [0008]根據(jù)所述container的id信息和命名空間的文件描述符采集container的度量值數(shù)據(jù)。
      [0009]本發(fā)明實施例提供一種監(jiān)控基于docker創(chuàng)建的container的系統(tǒng),包括監(jiān)控代理模塊,所述監(jiān)控代理模塊包括ID信息獲取單元、描述符獲取單元和數(shù)據(jù)采集單元,
      [0010]所述ID信息獲取單元配置為與docker daemon進行通信,通過daemon的API獲取當前主機中的所有container的id信息;
      [0011 ]所述描述符獲取單元配置為對proc文件系統(tǒng)設(shè)置讀權(quán)限,通過proc文件系統(tǒng)提供的接口訪問內(nèi)核數(shù)據(jù),獲取內(nèi)核導出的當前主機上的所有container的命名空間的文件描述符;
      [0012I所述數(shù)據(jù)采集單元配置為根據(jù)所述id信息和文件描述符定時采集container的度量值數(shù)據(jù)。
      [0013]本發(fā)明實施例提供的監(jiān)控基于docker創(chuàng)建的container的方法及系統(tǒng),通過獲取container的id和文件描述符,基于cgroup和namespace接口,在內(nèi)核數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,獲取container的底層信息,在用戶空間通過相應(yīng)的接口,讀取相應(yīng)的內(nèi)核空間的數(shù)據(jù),實現(xiàn)了對部署在container中的應(yīng)用的資源使用情況的監(jiān)控采集,為container的底層數(shù)據(jù)采集提供了有效、可行的解決方案。
      【附圖說明】
      [0014]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0015]圖1為本發(fā)明中監(jiān)控基于docker創(chuàng)建的container的方法的實施例流程圖;
      [0016]圖2為本發(fā)明中監(jiān)控基于docker創(chuàng)建的container的系統(tǒng)的框架結(jié)構(gòu)圖;
      [0017]圖3為圖2所示的監(jiān)控基于docker創(chuàng)建的container的系統(tǒng)的時序圖。
      【具體實施方式】
      [0018]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
      [0019]本發(fā)明針對容器虛擬化技術(shù)在日益廣泛的應(yīng)用,但對應(yīng)用服務(wù)的環(huán)境是container (容器)時,無法有效監(jiān)控采集應(yīng)用在container中運行的資源使用情況這一問題,提供了一種對docker 1.0創(chuàng)建的container的監(jiān)控方法及系統(tǒng),該監(jiān)控方法及系統(tǒng)可以提取container的metric(度量值數(shù)據(jù)),這些數(shù)據(jù)包括但不限于CPU、硬盤、內(nèi)存、網(wǎng)絡(luò)等。本發(fā)明的方法及系統(tǒng)提供了采集數(shù)據(jù)和將采集的方法及系統(tǒng)本身container化兩個解決方案,在實現(xiàn)對container的數(shù)據(jù)采集的基礎(chǔ)上,也方便集群管理系統(tǒng)調(diào)用這個監(jiān)控采集程序。
      [0020]下面結(jié)合附圖對本發(fā)明作進一步詳細的說明。
      [0021]圖1示意性地顯示了根據(jù)本發(fā)明的一種實施方式的監(jiān)控container的方法。如圖1所示,該方法包括:
      [0022]步驟SlOl:與docker daemon進行通信,獲取當前主機節(jié)點上所有的container的idfg 息。
      [0023]首先,通過docker的協(xié)議建立與docker daemon(docker架構(gòu)中運行在后臺的守護進程)的通信。成功建立通信后,直接調(diào)用daemon已經(jīng)提供的RESTAPI(該API可以直接返回該節(jié)點上的所有的container的id信息),獲取本主機(HOST)節(jié)點上所有的container的id?目息O
      [0024]步驟S12:通過pr ο c文件系統(tǒng)的接口讀取內(nèi)核導出的當前主機節(jié)點上的所有container的命名空間的文件描述符。
      [0025]對當前的監(jiān)控應(yīng)用程序,賦予其讀取proc目錄的權(quán)限。進入proc目錄,通過proc文件系統(tǒng)提供的接口訪問系統(tǒng)內(nèi)核數(shù)據(jù),讀取內(nèi)核導出的該節(jié)點上的所有container的命名空間的文件描述符。由于LXC(Linux Container)所實現(xiàn)的隔離性主要是來自內(nèi)核的name space* 名 5? |1] ,namespace^'^lSlld^S^jpid'net、ipc、mnt、uts.,^^container|3tl進程、網(wǎng)絡(luò)、消息、文件系統(tǒng)與主機的hostname隔離開,為每個container提供互不影響的虛擬空間,因此通過獲取每個container的命名空間的文件描述符,即可以通過該文件描述符進入到對應(yīng)的container的網(wǎng)絡(luò)命名空間獲取信息。例如,在proc目錄下讀取container的命名空間的文件描述符,可以顯示當前的name space命名空間下包含的命名空間和對應(yīng)的描述符,如顯示命名空間包括丨口0、111111:、1161:4丨(1及11丨8,其對應(yīng)的文件描述符分別可以在控制臺輸出顯示為ipc: [4026532300]、mnt: [4026532298 ]、net: [4026532301 ]、pid:[4026532351]、uts:[4026532299]。
      [0026]其中,proc目錄是Linux內(nèi)核提供的一種通過文件系統(tǒng)訪問內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu)、修改內(nèi)核設(shè)置的機制。proc文件系統(tǒng)是一個偽文件系統(tǒng),只存在內(nèi)存當中,以文件系統(tǒng)的方式為訪問系統(tǒng)內(nèi)核數(shù)據(jù)提供接口。用戶和應(yīng)用程序可以通過proc得到系統(tǒng)的信息,并可以改變內(nèi)核的某些參數(shù)。由于系統(tǒng)的信息是動態(tài)改變的,用戶或應(yīng)用程序讀取proc文件時,proc文件系統(tǒng)是動態(tài)從系統(tǒng)內(nèi)核讀出所需文件信息并提交的。
      [0027]步驟S103:采集CPU、內(nèi)存及硬盤的度量值數(shù)據(jù)。
      [0028]根據(jù)獲取到的container的id信息,通過調(diào)用cgroup(controI group,LXC采用cgroup實現(xiàn)對每個container所能使用的資源的管理,cgroup提供類似文件的接口實現(xiàn)對資源的配額和度量)的API接口獲取各id信息對應(yīng)的container的資源數(shù)據(jù)信息,包括但不限于CPU、內(nèi)存、硬盤等。
      [0029]例如,當獲取至Ij的某一 c ο n t a i n e r的i d信息為“f2e602ba3e5662a8280ccb25b777e6eea405df 98bdc791d9587ee0cbc9f 315e4” 時,如果需要采集該container的CPU的度量值數(shù)據(jù),則可以結(jié)合cgroup的相應(yīng)API接口,通過相應(yīng)的命令獲取到相應(yīng)的度量值,如需要采集CPU的狀態(tài)信息的度量值時,可以通過命令“cat/cgroup/cpuacct/lxc/f2e602ba3e5662a8280ccb25b777e6eea405df98bdc791d9587ee0cbc9f315e4/cpuacct.stat”,結(jié)合cgroup的相應(yīng)API接口和cpuacct的cpuacct.stat屬性獲取到CPU的相應(yīng)狀態(tài)信息(如顯示結(jié)果為“userOsystemO”,則可以獲取到該狀態(tài)的度量值數(shù)據(jù)),如需要采集CPU的占用空間情況的度量值,則可以通過命令“cat/cgroup/cpuacct/Ixc/f2e602ba3e5662a8280ccb25b777e6eea405df98bdc791d9587ee0cbc9f315e4/cpuacct.usage”,獲取CPU的cpuacct.usage屬性的占用空間值(如顯示結(jié)果為“12011199”)。如果需要采集該container的內(nèi)存度量值數(shù)據(jù),貝Ij可以結(jié)合cgroup的相應(yīng)API接口和屬性值獲取相應(yīng)的度量值,如可以通過命令“cat / cgroup/memory/lxc/f2e602ba3e5662a8280ccb25b777e6eea405df98bdc791d9587ee0cbc9f315e4/memory.limit_in_bytes”獲取該id信息對應(yīng)的container的內(nèi)存占用的限制空間大小(如顯示結(jié)果為“2147483648”)。而如果需要采集該container的硬盤度量值數(shù)據(jù),則可以結(jié)合cgroup的相應(yīng)API接口和屬性值獲取相應(yīng)的度量值,如可以通過命令“cat/cgroup/blk1/Ixc/f2e602ba3e5662a8280ccb25b777e6eea405df98bdc791d9587ee0cbc9f315e4/blk1.1o_serviced”獲取該id信息對應(yīng)的container的硬盤的輸入輸出設(shè)備的占用情況的統(tǒng)計結(jié)果(如顯示結(jié)果為“Total O”)。
      [0030]步驟S104:獲取相應(yīng)的container的網(wǎng)絡(luò)命名空間,讀取獲得的網(wǎng)絡(luò)命名空間中的相應(yīng)數(shù)據(jù)信息。
      [0031 ] 通過獲取到的container的文件描述符,結(jié)合namespace系統(tǒng)調(diào)用即可獲取到該container對應(yīng)的網(wǎng)絡(luò)命名空間,如,通過“ns f2e-bash-4.1”即可得到文件描述符為“f 2e_bash-4.1”對應(yīng)的container的網(wǎng)絡(luò)命名空間。在每個獲得的container的網(wǎng)絡(luò)命名空間上包括有一個完全獨立的網(wǎng)絡(luò)協(xié)議棧,該網(wǎng)絡(luò)協(xié)議棧包括網(wǎng)絡(luò)設(shè)備接口、IPv4或IPv6協(xié)議棧、IP路由表、防火墻規(guī)則等信息。通過namespace系統(tǒng)調(diào)用和文件描述符進入到container的網(wǎng)絡(luò)命名空間中后,使用命令“ifconfig”即可獲取該container的網(wǎng)絡(luò)命名空間中的各項網(wǎng)絡(luò)數(shù)據(jù)信息,又如,在文件描述符為“f2e-bash-4.1”的container的網(wǎng)絡(luò)命名空間中,通過“ifconfig”命令即得到了相應(yīng)的數(shù)據(jù)信息。
      [0032]通過本實施例的方法,能夠?qū)崿F(xiàn)對所有的基于docker 1.0創(chuàng)建的container的資源使用的監(jiān)控采集,且可以準確地采集到由Paas(platform-as-a_service,平臺即服務(wù))云創(chuàng)建出的container的資源使用情況。
      [0033]同時,本發(fā)明的方法支持containerize(容器化),即可以將實現(xiàn)本發(fā)明方法的應(yīng)用程序部署在container中,在container上發(fā)布運行,在容器內(nèi)實現(xiàn)對本主機(host)上的其他container的采集監(jiān)控。其中,將實現(xiàn)本發(fā)明方法的應(yīng)用程序部署在container中的方法與現(xiàn)有技術(shù)容器部署方法相同,不同在于部署后需要對container進行proc讀權(quán)限的設(shè)置,而其他的操作都是在container中進行的,都是依據(jù)container本身的方式進行處理,如在container與docker daemon進行通信,獲取其他的container的id信息,在container容器內(nèi)通過proc文件系統(tǒng)的接口獲取其他的container的文件描述符,在container內(nèi)通過cgroup和namespace的調(diào)用,獲取其他container的相應(yīng)度量值數(shù)據(jù)信息。將實現(xiàn)本發(fā)明方法的整個采集程序部署在容器中,可以實現(xiàn)整個采集程序的容器化,從而將整個采集程序作為一個普通的container發(fā)布,發(fā)布后,可以由相應(yīng)的container的集群管理系統(tǒng)對監(jiān)控采集程序進行調(diào)度部署。而將程序以container的方式進行發(fā)布和管理,就可以享有container的所有優(yōu)勢,更加方便高效。
      [0034]本發(fā)明的方法,提供了一種全新的采集部署在container中的業(yè)務(wù)的資源使用情況的實現(xiàn)方案。通過cgroup和namespace系統(tǒng)調(diào)用接口,在內(nèi)核數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,獲取container的底層信息,在用戶空間通過相應(yīng)的接口,讀取相應(yīng)的內(nèi)核空間的數(shù)據(jù),實現(xiàn)了對container的度量值采集,為container的底層數(shù)據(jù)采集提供了有效可行的解決方案。
      [0035]圖2示意性地顯示了本發(fā)明的監(jiān)控基于docker創(chuàng)建的container的系統(tǒng)的一種實施方式的框架圖。如圖2所示,在具體實現(xiàn)的過程中,將該系統(tǒng)的架構(gòu)設(shè)計為包括配置模塊(configfile)40、加載模塊(bee)41、日志模塊(log)45、監(jiān)控代理模塊(collector)44、控制模塊(controlIer)43及監(jiān)控數(shù)據(jù)存儲模塊(handle)42六個功能模塊。其中,配置模塊40部分用于加載和解析整個系統(tǒng)的配置文件。加載模塊41是系統(tǒng)的daemon程序,用于負責加載配置文件指定的監(jiān)控代理模塊(col lector )44、控制模塊(control Ier )43及監(jiān)控數(shù)據(jù)存儲模塊(handle)42,并將整個系統(tǒng)的運行狀態(tài)信息通過調(diào)用日志模塊45輸出到指定的文件中。監(jiān)控代理模塊44用于采集監(jiān)控數(shù)據(jù)??刂颇K43用于實現(xiàn)系統(tǒng)的控制container部分的功能實現(xiàn)。監(jiān)控數(shù)據(jù)存儲模塊42用于實現(xiàn)數(shù)據(jù)處理存儲部分的接口,負責將采集到的監(jiān)控數(shù)據(jù)壓入不同的數(shù)據(jù)庫中。本發(fā)明實施例的數(shù)據(jù)庫可以是現(xiàn)有的通用數(shù)據(jù)庫(例如mysql等),本實施例的架構(gòu)中優(yōu)選influxdb數(shù)據(jù)庫,數(shù)據(jù)庫的相關(guān)配置和輸出可以通過其用戶界面granfana進行設(shè)置和顯示。其中,加載模塊41還包括有監(jiān)控守護單元411及監(jiān)控服務(wù)單元412,監(jiān)控服務(wù)單元412用于與監(jiān)控代理模塊44進行通訊,獲取采集的監(jiān)控數(shù)據(jù),通過監(jiān)控數(shù)據(jù)存儲模塊42存儲到不同的數(shù)據(jù)庫。監(jiān)控守護單元411用于接收用戶的數(shù)據(jù)請求,通過監(jiān)控數(shù)據(jù)存儲模塊42從數(shù)據(jù)庫中讀取監(jiān)控數(shù)據(jù)輸出給用戶。
      [0036]本發(fā)明系統(tǒng)中的配置模塊((3011;1^8;1^16)40、加載模塊(^66)41、日志模塊(log)45、控制模塊(controller)43及監(jiān)控數(shù)據(jù)存儲模塊(handle)的具體實現(xiàn)過程,可以參照現(xiàn)有技術(shù)進行實現(xiàn)。系統(tǒng)中的監(jiān)控代理模塊44則需要根據(jù)本發(fā)明實施例的技術(shù)方案進行實現(xiàn),以完成對docker創(chuàng)建的container的數(shù)據(jù)采集。具體為,如圖2所示,監(jiān)控代理模塊44包括ID信息獲取單元441、描述符獲取單元442和數(shù)據(jù)采集單元443 JD信息獲取單元441配置為與docker daemon進行通信,通過daemon的API獲取當前主機中的所有container的id信息。描述符獲取單元442配置為對proc文件系統(tǒng)設(shè)置讀權(quán)限,通過proc文件系統(tǒng)提供的接口訪問內(nèi)核數(shù)據(jù),獲取內(nèi)核導出的當前主機上的所有container的命名空間的文件描述符。數(shù)據(jù)采集單元443配置為根據(jù)id信息和文件描述符定時采集container的度量值數(shù)據(jù)。其中,數(shù)據(jù)采集單元443又包括資源數(shù)據(jù)采集單元4431和網(wǎng)絡(luò)數(shù)據(jù)采集單元4432。網(wǎng)絡(luò)數(shù)據(jù)采集單元4432用于通過container的文件描述符和namespace系統(tǒng)調(diào)用,采集網(wǎng)絡(luò)的度量值信息。資源數(shù)據(jù)采集單元4431用于根據(jù)container的id信息,通過cgroup調(diào)用,采集CPU、內(nèi)存及硬盤的度量值信息。數(shù)據(jù)采集的具體方法過程,可參照圖1所示的方法,在此不再贅述。需要說明的是,本發(fā)明實施例中可以通過硬件處理器來實現(xiàn)相關(guān)功能模塊。
      [0037]圖3示意性地顯示了圖2所示的的監(jiān)控基于docker創(chuàng)建的container的系統(tǒng)的時序圖。如圖3所示,該系統(tǒng)包括監(jiān)控代理模塊44、監(jiān)控服務(wù)單元412、監(jiān)控數(shù)據(jù)存儲模塊42和監(jiān)控守護單元411。監(jiān)控代理模塊44定時采集監(jiān)控數(shù)據(jù)發(fā)送給監(jiān)控服務(wù)單元412,監(jiān)控服務(wù)單元412將接收到的監(jiān)控數(shù)據(jù)發(fā)送到相應(yīng)的監(jiān)控數(shù)據(jù)存儲模塊42,通過監(jiān)控數(shù)據(jù)存儲模塊42壓入不同的數(shù)據(jù)庫中進行存儲。當用戶50請求監(jiān)控數(shù)據(jù)時,監(jiān)控守護單元411接收用戶的請求監(jiān)控數(shù)據(jù)的信息,根據(jù)請求信息從監(jiān)控數(shù)據(jù)存儲模塊42中獲取響應(yīng)的數(shù)據(jù)信息,返回給用戶50。
      [0038]本發(fā)明的監(jiān)控container的系統(tǒng),可以實現(xiàn)對container的資源使用情況的準確采集。并且系統(tǒng)可以以container的方式進行部署和發(fā)布,部署和發(fā)布的方式可以參照container的現(xiàn)有部署發(fā)布的過程,不同在于部署時需要將系統(tǒng)掛載在proc文件系統(tǒng)下,實現(xiàn)對proc的讀權(quán)限,以獲取內(nèi)核導出的本主機上的所有其他container的命名空間的文件描述符,以在監(jiān)控系統(tǒng)的container內(nèi)利用其他的container的id和文件描述符,對其他container的數(shù)據(jù)進行監(jiān)控采集,從而為container的底層數(shù)據(jù)采集提供有效的解決方案。當本發(fā)明的系統(tǒng)以container方式部署和發(fā)布時,監(jiān)控系統(tǒng)本身也遵循container的完整生命周期,監(jiān)控系統(tǒng)也成為了一個container,這在監(jiān)控系統(tǒng)的發(fā)布方式上,是一種新的方式。將監(jiān)控系統(tǒng)容器化以后(即在container中部署發(fā)布后),通過相應(yīng)的container集群管理系統(tǒng)就能對監(jiān)控系統(tǒng)進行調(diào)度部署,集中container的各種優(yōu)勢,移植性更好,實現(xiàn)了以一種全新的方式有效方便快捷地解決對container的監(jiān)控采集的問題。
      [0039]以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動的情況下,即可以理解并實施。
      [0040]通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在計算機可讀存儲介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個實施例或者實施例的某些部分所述的方法。
      [0041]最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。
      【主權(quán)項】
      1.一種監(jiān)控基于docker創(chuàng)建的container的方法,其特征在于,包括: 獲取當前主機上所有的container的id信息; 獲取內(nèi)核導出的當前主機上的所有container的命名空間的文件描述符; 根據(jù)所述container的id信息和命名空間的文件描述符采集container的度量值數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取當前主機節(jié)點上所有的container的id信息包括: 建立與docker daemon的通信,通過daemon的API獲取當前主機節(jié)點上所有的container 的 id 信息。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取內(nèi)核導出的當前主機節(jié)點上所有container的命名空間的文件描述符包括: 設(shè)置對proc文件系統(tǒng)的讀權(quán)限; 通過proc文件系統(tǒng)提供的接口訪問內(nèi)核數(shù)據(jù),讀取內(nèi)核導出的當前主機節(jié)點上的所有container的命名空間的文件描述符。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述采集的container的度量值數(shù)據(jù)包括CPU、內(nèi)存、硬盤以及網(wǎng)絡(luò)的度量值數(shù)據(jù)。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)所述container的id信息和命名空間的文件描述符采集container的度量值數(shù)據(jù)包括: 調(diào)用cgroup的API接口,根據(jù)所述container的id信息采集所述container的id對應(yīng)的container的CPU、內(nèi)存及硬盤的相應(yīng)數(shù)據(jù); 通過namespace系統(tǒng)調(diào)用,獲取所述文件描述符對應(yīng)的container的網(wǎng)絡(luò)命名空間,讀取所述網(wǎng)絡(luò)命名空間上包括的網(wǎng)絡(luò)協(xié)議棧的相應(yīng)數(shù)據(jù)。6.根據(jù)權(quán)利要求1至5任一項所述的方法,其特征在于,所述方法是在container中實現(xiàn)的。7.一種監(jiān)控基于docker創(chuàng)建的container的系統(tǒng),其特征在于,包括監(jiān)控代理模塊,所述監(jiān)控代理模塊包括ID信息獲取單元、描述符獲取單元和數(shù)據(jù)采集單元, 所述ID信息獲取單元配置為與docker daemon進行通信,通過daemon的API獲取當前主機中的所有container的id信息; 所述描述符獲取單元配置為對proc文件系統(tǒng)設(shè)置讀權(quán)限,通過proc文件系統(tǒng)提供的接口訪問內(nèi)核數(shù)據(jù),獲取內(nèi)核導出的當前主機上的所有container的命名空間的文件描述符; 所述數(shù)據(jù)采集單元配置為根據(jù)所述id信息和文件描述符定時采集container的度量值數(shù)據(jù)。8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述數(shù)據(jù)采集單元包括網(wǎng)絡(luò)數(shù)據(jù)采集單元和資源數(shù)據(jù)采集單元, 所述網(wǎng)絡(luò)數(shù)據(jù)采集單元配置為通過namespace系統(tǒng)調(diào)用,獲取所述文件描述符對應(yīng)的container的網(wǎng)絡(luò)命名空間,讀取所述網(wǎng)絡(luò)命名空間上包括的網(wǎng)絡(luò)協(xié)議棧的相應(yīng)數(shù)據(jù); 所述資源數(shù)據(jù)采集單元配置為調(diào)用cgroup的API接口,根據(jù)所述container的id信息采集所述container的id對應(yīng)的container的CPU、內(nèi)存及硬盤的相應(yīng)數(shù)據(jù)。9.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,還包括用于控制container的控制模塊、用于提供數(shù)據(jù)處理接口的監(jiān)控數(shù)據(jù)存儲模塊、用于加載所述控制模塊、所述監(jiān)控數(shù)據(jù)存儲模塊及所述監(jiān)控代理模塊的加載模塊, 其中,所述加載模塊包括監(jiān)控服務(wù)單元和監(jiān)控守護單元, 所述監(jiān)控服務(wù)單元設(shè)置為獲取所述監(jiān)控代理模塊采集的度量值數(shù)據(jù),將所述度量值數(shù)據(jù)通過所述監(jiān)控數(shù)據(jù)存儲模塊壓入數(shù)據(jù)庫進行存儲; 所述監(jiān)控守護單元設(shè)置為接收數(shù)據(jù)請求,通過所述監(jiān)控數(shù)據(jù)存儲模塊獲取監(jiān)控數(shù)據(jù)信息輸出; 其中,所述數(shù)據(jù)庫包括inf Iuxdb數(shù)據(jù)庫。10.根據(jù)權(quán)利要求7至9任一項所述的系統(tǒng),其中,所述系統(tǒng)是以container方式進行部署和發(fā)布的系統(tǒng)。
      【文檔編號】G06F11/30GK105893205SQ201510813051
      【公開日】2016年8月24日
      【申請日】2015年11月20日
      【發(fā)明人】鐘忻
      【申請人】樂視云計算有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1