本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及一種容器日志采集方法及裝置。
背景技術(shù):
彈性計(jì)算,可以根據(jù)應(yīng)用的業(yè)務(wù)需求,隨時(shí)創(chuàng)建容器、銷毀容器,而無需提前采購?fù)度耄且环N比物理服務(wù)器或虛擬服務(wù)器管理更簡單高效的云計(jì)算服務(wù)。
彈性計(jì)算系統(tǒng)中,通常包含多個(gè)彈性計(jì)算節(jié)點(diǎn),而每個(gè)容器都會被分配在一個(gè)彈性計(jì)算節(jié)點(diǎn)上,其中,一個(gè)彈性計(jì)算節(jié)點(diǎn)表示一臺物理服務(wù)器。此外,在彈性計(jì)算系統(tǒng)中,一個(gè)容器只能對應(yīng)一個(gè)應(yīng)用,而一個(gè)應(yīng)用可以運(yùn)行在多個(gè)容器中,這些容器可能被分配在同一個(gè)彈性計(jì)算節(jié)點(diǎn)上,也可能被分配在不同的彈性計(jì)算節(jié)點(diǎn)上,具體地,每個(gè)容器被分配到哪個(gè)節(jié)點(diǎn)上是不確定的,由彈性計(jì)算調(diào)度決定,因此針對一個(gè)應(yīng)用,它的日志文件的存儲路徑也是不確定的。
在傳統(tǒng)日志采集方法中,只能針對指定彈性計(jì)算節(jié)點(diǎn)上指定路徑的日志文件進(jìn)行采集,因此,當(dāng)使用傳統(tǒng)日志采集方法,針對某一應(yīng)用進(jìn)行日志采集時(shí),必須首先經(jīng)過人工查詢,確定該應(yīng)用對應(yīng)的容器的日志路徑,然后在收集端對要采集的日志路徑進(jìn)行修改后,再進(jìn)行日志采集,那么,當(dāng)在該應(yīng)用運(yùn)行過程中,需要不斷地對日志進(jìn)行采集時(shí),就需要不斷地重復(fù)上述查詢-確定-修改的步驟,導(dǎo)致日志采集效率低。
舉例而言,要采集應(yīng)用A的日志,需要先人工查詢,確定應(yīng)用A運(yùn)行的計(jì)算節(jié)點(diǎn)和生成的日志文件的路徑。假設(shè),通過人工確定得出,應(yīng)用A分別運(yùn)行在彈性計(jì)算節(jié)點(diǎn)a、b、c的容器1、2、3上,那么,需要分別獲得容器1、2、3對應(yīng)的日志文件的路徑d1、d2、d3,然后在日志采集端配置采集路徑d1、d2、d3后進(jìn)行日志采集;但是,如果下次采集之前,應(yīng)用A的容器發(fā)生了變化,彈性計(jì)算節(jié)點(diǎn)a上的容器1銷毀了,原容器1中運(yùn)行的程序,在彈性計(jì)算節(jié)點(diǎn)b上的新建容器4中運(yùn)行了,那么,若仍只采集d1、d2、d3對應(yīng)的日志文件,就可能會導(dǎo)致應(yīng)用A的日志采集不完整,因?yàn)閐1、d2、d3對應(yīng)的日志文件中需要采集的日志可能只有容器發(fā)生變化前的一部分,為了保證日志采集完整性,此時(shí),還需要再應(yīng)用上面提到的方法,重新確定應(yīng)用A的所有容器的日志路徑,對新的日志路徑對應(yīng)的日志文件中的日志進(jìn)行采集。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的在于提供一種容器日志采集方法及裝置,以提高日志采集效率。
為達(dá)到上述目的,本發(fā)明實(shí)施例提供了一種容器日志采集方法及裝置。技術(shù)方案如下:
第一方面,本發(fā)明實(shí)施例公開了一種容器日志采集方法,應(yīng)用于彈性計(jì)算系統(tǒng)中的計(jì)算節(jié)點(diǎn),預(yù)先將應(yīng)用程序?qū)?yīng)的容器的日志文件對應(yīng)的存儲路徑存儲在預(yù)設(shè)容器日志目錄中;所述方法包括:
每隔預(yù)設(shè)時(shí)間段或每達(dá)到預(yù)設(shè)時(shí)間點(diǎn),根據(jù)所述預(yù)設(shè)容器日志目錄以及用戶采集指令,查找與所述用戶采集指令匹配的日志文件,其中,所述用戶采集指令中包括:待采集容器日志對應(yīng)的應(yīng)用程序的標(biāo)識信息、待采集容器日志對應(yīng)的容器的標(biāo)識信息、待采集容器日志對應(yīng)的日志文件的標(biāo)識信息中的一種或幾種組合;
采集所述日志文件中記錄的日志。
可選地,在所述采集所述日志文件中記錄的日志,之前,所述方法還包括:
確定所述日志文件是否滿足日志采集條件;
所述采集所述日志文件中記錄的日志,包括:
在確定所述日志文件滿足所述日志采集條件的情況下,采集所述日志文件中記錄的日志。
可選地,所述確定所述日志文件是否滿足日志采集條件,包括:
判斷所述日志文件的最后修改時(shí)間是否位于上一次采集所述日志文件中記錄的日志的時(shí)間之后,如果是,表示滿足所述日志采集條件,如果否,表示不滿足所述日志采集條件。
可選地,所述確定所述日志文件是否滿足日志采集條件,包括:
判斷所述日志文件的最后修改時(shí)間與當(dāng)前時(shí)間的時(shí)間差是否不大于預(yù)設(shè)第一時(shí)長,如果是,表示滿足所述日志采集條件,如果否,表示不滿足所述日志采集條件。
可選地,所述方法還包括:
當(dāng)確定所述日志文件不滿足所述日志采集條件時(shí),判斷所述日志文件的最后修改時(shí)間與當(dāng)前時(shí)間的時(shí)間差是否不小于預(yù)設(shè)第二時(shí)長;
如果是,判定所述日志文件對應(yīng)的容器已被銷毀。
可選地,所述方法還包括:
每隔預(yù)設(shè)時(shí)間段或每到達(dá)預(yù)設(shè)時(shí)間點(diǎn),對比當(dāng)前容器日志目錄和上一次對比時(shí)的容器日志目錄存儲的日志文件對應(yīng)的存儲路徑;
根據(jù)對比結(jié)果,確定是否有容器被創(chuàng)建。
可選地,所述方法還包括:
將采集到的日志發(fā)送給預(yù)先指定設(shè)備。
第二方面,本發(fā)明實(shí)施例提供了一種容器日志采集裝置,應(yīng)用于彈性計(jì)算系統(tǒng)中的計(jì)算節(jié)點(diǎn),預(yù)先將應(yīng)用程序?qū)?yīng)的容器的日志文件對應(yīng)的存儲路徑存儲在預(yù)設(shè)容器日志目錄中;所述裝置包括:
查找模塊,用于每隔預(yù)設(shè)時(shí)間段或每達(dá)到預(yù)設(shè)時(shí)間點(diǎn),根據(jù)所述預(yù)設(shè)容器日志目錄以及用戶采集指令,查找與所述用戶采集指令匹配的日志文件,其中,所述用戶采集指令中包括:待采集容器日志對應(yīng)的應(yīng)用程序的標(biāo)識信息、待采集容器日志對應(yīng)的容器的標(biāo)識信息、待采集容器日志對應(yīng)的日志文件的標(biāo)識信息中的一種或幾種組合;
采集模塊,用于采集所述日志文件中記錄的日志。
可選地,所述裝置還包括:
第一確定模塊,用于在所述采集模塊采集所述日志文件中記錄的日志之前,確定所述日志文件是否滿足日志采集條件,如果滿足,觸發(fā)所述采集模塊。
可選地,所述第一確定模塊,具體用于:
在所述采集模塊采集所述日志文件中記錄的日志之前,判斷所述日志文件的最后修改時(shí)間是否位于上一次采集所述日志文件中記錄的日志的時(shí)間之后,如果是,觸發(fā)所述采集模塊。
可選地,所述第一確定模塊,具體用于:
在所述采集模塊采集所述日志文件中記錄的日志之前,判斷所述日志文件的最后修改時(shí)間與當(dāng)前時(shí)間的時(shí)間差是否不大于預(yù)設(shè)第一時(shí)長,如果是,觸發(fā)所述采集模塊。
可選地,所述裝置還包括:
判斷模塊,用于當(dāng)所述第一確定模塊確定所述日志文件不滿足所述日志采集條件時(shí),判斷所述日志文件的最后修改時(shí)間與當(dāng)前時(shí)間的時(shí)間差是否不小于預(yù)設(shè)第二時(shí)長;
判定模塊,用于在所述判斷模塊的判斷結(jié)果為是的情況下,判定所述日志文件對應(yīng)的容器已被銷毀。
可選地,所述裝置還包括:
對比模塊,用于每隔預(yù)設(shè)時(shí)間段或每到達(dá)預(yù)設(shè)時(shí)間點(diǎn),對比當(dāng)前容器日志目錄和上一次對比時(shí)的容器日志目錄存儲的日志文件對應(yīng)的存儲路徑;
第二確定模塊,用于根據(jù)對比結(jié)果,確定是否有容器被創(chuàng)建。
可選地,所述裝置還包括:
發(fā)送模塊,用于將采集到的日志發(fā)送給預(yù)先指定設(shè)備。
本發(fā)明實(shí)施例所提供的日志采集方法,應(yīng)用于彈性計(jì)算系統(tǒng)中的計(jì)算節(jié)點(diǎn),預(yù)先將應(yīng)用程序?qū)?yīng)的容器的日志文件對應(yīng)的存儲路徑存儲在預(yù)設(shè)容器日志目錄中,每隔預(yù)設(shè)時(shí)間段或每達(dá)到預(yù)設(shè)時(shí)間點(diǎn),根據(jù)預(yù)設(shè)容器日志目錄以及用戶采集指令,查找與用戶采集指令匹配的日志文件,然后,采集日志文件中記錄的日志;其中,用戶采集指令中包括:待采集容器日志對應(yīng)的應(yīng)用程序的標(biāo)識信息、待采集容器日志對應(yīng)的容器的標(biāo)識信息、待采集容器日志對應(yīng)的日志文件的標(biāo)識信息中的一種或幾種組合?,F(xiàn)有技術(shù)中,在每次采集前,都需要根據(jù)用戶采集指令,經(jīng)過人工查詢,確定對應(yīng)容器的日志路徑,并在收集端修改要采集的日志路徑后,再進(jìn)行日志采集;與之相比,在每一彈性計(jì)算節(jié)點(diǎn)上,應(yīng)用本發(fā)明實(shí)施例提供的容器日志采集方法,由于應(yīng)用程序?qū)?yīng)的容器的日志文件對應(yīng)的存儲路徑已預(yù)先存儲在預(yù)設(shè)容器日志目錄中,因此,可以直接根據(jù)預(yù)設(shè)容器日志目錄以及用戶采集指令,查找出與用戶采集指令匹配的日志文件,進(jìn)行日志采集,在保證日志采集完整性的同時(shí),簡化了查詢-確定-修改的步驟,提高了日志采集效率。此外,可以理解的是,應(yīng)用本發(fā)明實(shí)施例提供的容器日志采集方法對彈性計(jì)算系統(tǒng)侵入性較低,可以適用于多種彈性計(jì)算系統(tǒng)。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的容器日志采集方法的一種流程示意圖;
圖2為本發(fā)明實(shí)施例提供的預(yù)設(shè)目錄格式的示意圖;
圖3為本發(fā)明實(shí)施例提供的容器日志采集方法的另一種流程示意圖;
圖4為本發(fā)明實(shí)施例提供的容器日志采集裝置的一種結(jié)構(gòu)示意圖;
圖5為本發(fā)明實(shí)施例提供的容器日志采集裝置的另一種結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
為提高日志采集效率,本發(fā)明公開了一種容器日志采集方法及裝置,應(yīng)用于彈性計(jì)算系統(tǒng)中的計(jì)算節(jié)點(diǎn),以下分別進(jìn)行詳細(xì)說明。
參見圖1,圖1為本發(fā)明實(shí)施例提供的容器日志采集方法的一種流程示意圖,可以包括如下步驟:
S101,每隔預(yù)設(shè)時(shí)間段或每達(dá)到預(yù)設(shè)時(shí)間點(diǎn),根據(jù)預(yù)設(shè)容器日志目錄以及用戶采集指令,查找與用戶采集指令匹配的日志文件。
其中,預(yù)設(shè)容器日志目錄可以為文件系統(tǒng)上的日志根目錄,也可以為文件系統(tǒng)上任一可用的目錄,在此不作限定。用戶采集指令中包括:待采集容器日志對應(yīng)的應(yīng)用程序的標(biāo)識信息、待采集容器日志對應(yīng)的容器的標(biāo)識信息、待采集容器日志對應(yīng)的日志文件的標(biāo)識信息中的一種或幾種組合;具體地,待采集容器日志對應(yīng)的應(yīng)用程序的標(biāo)識信息可以為待采集容器日志對應(yīng)的應(yīng)用程序的名稱、待采集容器日志對應(yīng)的容器的標(biāo)識信息可以為待采集容器日志對應(yīng)的容器的名稱、待采集容器日志對應(yīng)的日志文件的標(biāo)識信息可以為待采集容器日志對應(yīng)的日志文件的名稱,此處不作限定。
實(shí)際應(yīng)用中,當(dāng)針對一應(yīng)用,采集該應(yīng)用產(chǎn)生的日志時(shí),用戶采集指令可以為待采集容器日志對應(yīng)的應(yīng)用程序的名稱,例如應(yīng)用A;當(dāng)針對一應(yīng)用,采集該應(yīng)用產(chǎn)生的某一個(gè)日志時(shí),用戶采集指令可以包括待采集容器日志對應(yīng)的應(yīng)用程序的名稱和日志文件的名稱,例如應(yīng)用A、日志B;當(dāng)需要采集某一類容器產(chǎn)生的日志時(shí),例如容器名稱以ah開頭的所有容器的日志,用戶采集指令可以包括ah。當(dāng)然,以上所舉示例僅為具體實(shí)例,不具有限定作用。
需要說明的是,在S101之前,可以在容器剛創(chuàng)建時(shí),預(yù)先將應(yīng)用程序?qū)?yīng)的容器的日志文件對應(yīng)的存儲路徑存儲在預(yù)設(shè)容器日志目錄中,并在容器中應(yīng)用程序運(yùn)行的過程中,不斷地將生成的日志輸出到對應(yīng)存儲路徑下的日志文件中。
可以理解的是,目前的主流容器技術(shù),如Docker,支持將彈性計(jì)算節(jié)點(diǎn)上的目錄掛載到容器中,這樣,運(yùn)行在容器內(nèi)的應(yīng)用便可以訪問本地目錄,因此,具體地,可以按照預(yù)設(shè)命名規(guī)則或預(yù)設(shè)目錄格式將容器日志輸出到預(yù)設(shè)容器日志目錄下,若容器日志對應(yīng)的是新創(chuàng)建的容器,便將對應(yīng)的容器日志文件對應(yīng)的存儲路徑存儲在預(yù)設(shè)容器日志目錄中。
其中,關(guān)于預(yù)設(shè)目錄格式,舉例而言,日志根目錄可以為ROOTDIR,二級目錄可以與應(yīng)用名對應(yīng),例如application_應(yīng)用名,具體地,針對應(yīng)用A和B,可以為application_A和application_B,三級目錄可以與應(yīng)用名和容器名對應(yīng),例如application_應(yīng)用名.容器名,具體地,可以為application_A.Container_1、application_A.Container_2、application_B.Container_1,四級目錄可以為log,五級目錄可以為具體的日志文件名,例如test.log,具體地,可以參見圖2,當(dāng)然,這僅為預(yù)設(shè)目錄格式的一具體示例,不具有限定作用。
實(shí)際應(yīng)用中,為了及時(shí)地進(jìn)行日志的采集,可以每隔預(yù)設(shè)時(shí)間段或每達(dá)到預(yù)設(shè)時(shí)間點(diǎn),根據(jù)預(yù)設(shè)容器日志目錄以及用戶采集指令,查找與用戶采集指令匹配的日志文件。具體地,可以直接根據(jù)用戶采集指令和預(yù)設(shè)容器日志目錄中存儲的應(yīng)用程序?qū)?yīng)的容器的日志文件對應(yīng)的存儲路徑進(jìn)行查找;也可以根據(jù)預(yù)設(shè)容器日志目錄、用戶采集指令和容器日志輸出時(shí)的預(yù)設(shè)目錄格式或命名規(guī)則進(jìn)行查找。
其中,根據(jù)預(yù)設(shè)容器日志目錄、用戶采集指令和容器日志輸出時(shí)的預(yù)設(shè)目錄格式進(jìn)行查找,更具體地,可以根據(jù)預(yù)設(shè)容器日志目錄查找到需要采集的根目錄,再根據(jù)預(yù)設(shè)目錄格式和用戶采集指令,查找出滿足預(yù)設(shè)目錄格式且為所要采集的子目錄,進(jìn)而查找出與用戶采集指令匹配的日志文件。
舉例而言,針對圖2中所舉預(yù)設(shè)目錄格式的示例,預(yù)設(shè)容器日志目錄為ROOTDIR,用戶采集指令包括應(yīng)用A,那么,可以首先查找到日志根目錄ROOTDIR,然后查找出名稱格式為application_應(yīng)用名且為application_A的二級目錄;然后在二級目錄application_A內(nèi)查找出所有名稱格式為application_A.容器名的三級子目錄,分別為application_A.Container_1和application_A.Container_2;再分別在三級子目錄application_A.Container_1和application_A.Container_2中查找出四級子目錄log,則,查找出的四級子目錄下的日志文件便為應(yīng)用A的日志文件。如果application_A內(nèi)還查找到名稱格式為application_C.容器名或者application_A.日志文件名的三級子目錄,那么,則表明文件系統(tǒng)可能有異常,針對不符合預(yù)設(shè)目錄格式的目錄不進(jìn)行后續(xù)步驟。
S102,采集日志文件中記錄的日志。
可以理解的是,在查找到與用戶采集指令匹配的日志文件后,便可以對查找出的日志文件中記錄的日志進(jìn)行采集。其中,關(guān)于如何從日志文件中進(jìn)行日志的采集,屬于現(xiàn)有技術(shù),此處不再贅述。
需要說明的是,由于需要采集的日志可能分布在多個(gè)彈性計(jì)算節(jié)點(diǎn)上,為方便后續(xù)對日志的集中分析處理,在圖1所示實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例所提供的容器日志采集方法中,在S102之后,即采集日志文件中記錄的日志后,還可以包括:
將采集到的日志發(fā)送給預(yù)先指定設(shè)備。
現(xiàn)有技術(shù)中,在每次采集前,都需要根據(jù)用戶采集指令,經(jīng)過人工查詢,確定對應(yīng)容器的日志路徑,并在收集端修改要采集的日志路徑后,再進(jìn)行日志采集;與之相比,在每一彈性計(jì)算節(jié)點(diǎn)上,應(yīng)用圖1所示實(shí)施例提供的容器日志采集方法,由于應(yīng)用程序?qū)?yīng)的容器的日志文件對應(yīng)的存儲路徑已預(yù)先存儲在預(yù)設(shè)容器日志目錄中,因此,可以直接根據(jù)預(yù)設(shè)容器日志目錄以及用戶采集指令,查找出與用戶采集指令匹配的日志文件,進(jìn)行日志采集,在保證日志采集完整性的同時(shí),簡化了查詢-確定-修改的步驟,提高了日志采集效率。此外,可以理解的是,應(yīng)用圖1所示實(shí)施例提供的容器日志采集方法對彈性計(jì)算系統(tǒng)侵入性較低,可以適用于多種彈性計(jì)算系統(tǒng)。
相對于圖1所示的實(shí)施例,圖3為本發(fā)明實(shí)施例提供的容器日志采集方法的另一種流程示意圖,在圖1所示實(shí)施例基礎(chǔ)上,在S102之前,增加S103,確定日志文件是否滿足日志采集條件;如果滿足,執(zhí)行S102。
需要說明的是,為了進(jìn)一步地提高日志采集效率,還可以每隔預(yù)設(shè)時(shí)間段或每達(dá)到預(yù)設(shè)時(shí)間點(diǎn),只對滿足日志采集條件的日志文件進(jìn)行采集,具體地,可以只對可能有新日志生成的日志文件進(jìn)行采集。
在一種實(shí)現(xiàn)方式中,所述確定日志文件是否滿足日志采集條件,可以判斷日志文件的最后修改時(shí)間是否位于上一次采集該日志文件中記錄的日志的時(shí)間之后,如果是,表示滿足日志采集條件,如果否,表示不滿足日志采集條件。
其中,若日志文件的最后修改時(shí)間位于上一次采集該日志文件中記錄的日志的時(shí)間之后,表明該日志文件距離上一次采集的時(shí)間段內(nèi)有新日志生成,那么可以判定該日志文件滿足日志采集條件。
需要說明的是,日志文件的最后修改時(shí)間可以直接從文件系統(tǒng)中獲得。此外,可以理解的是,在每隔預(yù)設(shè)時(shí)間段進(jìn)行日志采集的情況下,上一次采集該日志文件中記錄的日志的時(shí)間可以是預(yù)先記錄的,也可以是根據(jù)最后修改時(shí)間和預(yù)設(shè)時(shí)間段獲得的;而在每達(dá)到預(yù)設(shè)時(shí)間點(diǎn)進(jìn)行日志采集的情況下,上一次采集日志文件中記錄的日志的時(shí)間為預(yù)設(shè)時(shí)間點(diǎn)中當(dāng)前采集時(shí)間點(diǎn)的上一個(gè)時(shí)間點(diǎn),舉例而言,假設(shè),預(yù)設(shè)時(shí)間點(diǎn)為8:00、16:00和24:00,若當(dāng)前時(shí)間為16:00,那么上一次采集該日志文件中記錄的日志的時(shí)間為8:00,若當(dāng)前時(shí)間為8:00,那么上一次采集所述日志文件中記錄的日志的時(shí)間為24:00。
在另一種實(shí)現(xiàn)方式中,所述確定日志文件是否滿足日志采集條件,可以判斷日志文件的最后修改時(shí)間與當(dāng)前時(shí)間的時(shí)間差是否不大于預(yù)設(shè)第一時(shí)長,如果是,表示滿足日志采集條件,如果否,表示不滿足日志采集條件。
需要說明的是,當(dāng)日志文件的最后修改時(shí)間與當(dāng)前時(shí)間的時(shí)間差大于預(yù)設(shè)第一時(shí)長時(shí),可以表明該日志文件中的日志未進(jìn)行更新,判定該日志文件不滿足日志采集條件,不進(jìn)行采集。其中,預(yù)設(shè)第一時(shí)長一般可以為預(yù)設(shè)時(shí)間段或預(yù)設(shè)時(shí)間點(diǎn)間的最大時(shí)間間隔。
此外,為及時(shí)感知彈性計(jì)算系統(tǒng)中容器的運(yùn)行情況,在上述兩種實(shí)現(xiàn)方式的基礎(chǔ)上,本發(fā)明實(shí)施例提供的容器日志采集方法中,還可以包括:
當(dāng)確定該日志文件不滿足日志采集條件時(shí),判斷該日志文件的最后修改時(shí)間與當(dāng)前時(shí)間的時(shí)間差是否不小于預(yù)設(shè)第二時(shí)長;
如果是,判定該日志文件對應(yīng)的容器已被銷毀。
其中,判斷該日志文件的最后修改時(shí)間與當(dāng)前時(shí)間的時(shí)間差是否不小于預(yù)設(shè)第二時(shí)長的步驟,可以避免該日志文件對應(yīng)的容器,在因暫停運(yùn)行應(yīng)用程序或其他原因而暫時(shí)沒有日志生成的情況下,被誤判為容器已被銷毀。
需要說明的是,若該日志文件不滿足日志采集條件,且該日志文件的最后修改時(shí)間與當(dāng)前時(shí)間的時(shí)間差不小于預(yù)設(shè)第二時(shí)長,則可以表明該容器對應(yīng)的日志文件已長期沒有更新,進(jìn)而,可以判定該日志文件對應(yīng)的容器已被銷毀。根據(jù)上述描述,當(dāng)日志文件的最后修改時(shí)間與當(dāng)前時(shí)間的時(shí)間差大于預(yù)設(shè)第一時(shí)長時(shí),預(yù)設(shè)第二時(shí)長必不小于預(yù)設(shè)第一時(shí)長。
需要說明的是,在本發(fā)明實(shí)施例提供的容器日志采集方法還包括上述判定容器是否被銷毀的步驟的基礎(chǔ)上,本發(fā)明實(shí)施例提供的容器日志采集方法中,還可以包括:
每隔預(yù)設(shè)時(shí)間段或每到達(dá)預(yù)設(shè)時(shí)間點(diǎn),對比當(dāng)前容器日志目錄和上一次對比時(shí)的容器日志目錄存儲的日志文件對應(yīng)的存儲路徑;
根據(jù)對比結(jié)果,確定是否有容器被創(chuàng)建。
可以理解的是,對比當(dāng)前容器日志目錄和上一次對比時(shí)的容器日志目錄存儲的日志文件對應(yīng)的存儲路徑,可以確定出是否有容器被創(chuàng)建,以及哪些容器被創(chuàng)建,及時(shí)地感知彈性計(jì)算系統(tǒng)中容器的創(chuàng)建,保證日志收集的完整性。舉例而言,對比彈性計(jì)算節(jié)點(diǎn)1上當(dāng)前容器日志目錄和上一次對比時(shí)的容器日志目錄存儲的日志文件對應(yīng)的存儲路徑,發(fā)現(xiàn)多出了容器7的日志文件對應(yīng)的存儲路徑,那么,可以表明彈性計(jì)算節(jié)點(diǎn)1上新創(chuàng)建了容器7。
在圖1所示實(shí)施例的基礎(chǔ)上,圖3所示實(shí)施例提供的容器日志采集方法中,還可以在采集查找出的日志文件中記錄的日志之前,確定日志文件是否滿足日志采集條件,在確定日志文件滿足日志采集條件的情況下,采集日志文件中記錄的日志的步驟。應(yīng)用圖3所示實(shí)施例提供的技術(shù)方案,針對查找出的日志文件,還可以每隔預(yù)設(shè)時(shí)間段或每達(dá)到預(yù)設(shè)時(shí)間點(diǎn),只對其中滿足日志采集條件的日志文件進(jìn)行采集,具體地,可以只對可能有新日志生成的日志文件進(jìn)行采集,進(jìn)一步提高了日志采集效率。
此外,需要說明的是,由于需要采集的日志可能分布在多個(gè)彈性計(jì)算節(jié)點(diǎn)上,為方便后續(xù)集中處理,在圖3所示實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例所提供的容器日志采集方法中,在S102之后,即采集日志文件中記錄的日志后,還可以包括:
將采集到的日志發(fā)送給預(yù)先指定設(shè)備。
與上述的方法實(shí)施例相對應(yīng),本發(fā)明實(shí)施例還提供一種容器日志采集裝置。
參見圖4,圖4為本發(fā)明實(shí)施例提供的容器日志采集裝置的一種結(jié)構(gòu)示意圖,與圖1所示的流程相對應(yīng),包括:
查找模塊401,用于每隔預(yù)設(shè)時(shí)間段或每達(dá)到預(yù)設(shè)時(shí)間點(diǎn),根據(jù)所述預(yù)設(shè)容器日志目錄以及用戶采集指令,查找與所述用戶采集指令匹配的日志文件,其中,所述用戶采集指令中包括:待采集容器日志對應(yīng)的應(yīng)用程序的標(biāo)識信息、待采集容器日志對應(yīng)的容器的標(biāo)識信息、待采集容器日志對應(yīng)的日志文件的標(biāo)識信息中的一種或幾種組合;
采集模塊402,用于采集所述日志文件中記錄的日志。
具體地,所述裝置還可以包括:
發(fā)送模塊,用于將采集到的日志發(fā)送給預(yù)先指定設(shè)備。
現(xiàn)有技術(shù)中,在每次采集前,都需要根據(jù)用戶采集指令,經(jīng)過人工查詢,確定對應(yīng)容器的日志路徑,并在收集端修改要采集的日志路徑后,再進(jìn)行日志采集;與之相比,在每一彈性計(jì)算節(jié)點(diǎn)上,應(yīng)用圖4所示實(shí)施例提供的容器日志采集方法,由于應(yīng)用程序?qū)?yīng)的容器的日志文件對應(yīng)的存儲路徑已預(yù)先存儲在預(yù)設(shè)容器日志目錄中,因此,可以直接根據(jù)預(yù)設(shè)容器日志目錄以及用戶采集指令,查找出與用戶采集指令匹配的日志文件,進(jìn)行日志采集,在保證日志采集完整性的同時(shí),簡化了查詢-確定-修改的步驟,提高了日志采集效率。此外,可以理解的是,應(yīng)用圖4所示實(shí)施例提供的容器日志采集方法對彈性計(jì)算系統(tǒng)侵入性較低,可以適用于多種彈性計(jì)算系統(tǒng)。
相對于圖4所示的實(shí)施例,圖5為本發(fā)明實(shí)施例提供的容器日志采集裝置的另一種結(jié)構(gòu)示意圖,與圖3所示的流程相對應(yīng),本發(fā)明圖5所示實(shí)施例在圖4所示實(shí)施例基礎(chǔ)上,增加第一確定模塊403,用于在所述采集模塊402采集所述日志文件中記錄的日志之前,確定所述日志文件是否滿足日志采集條件,如果滿足,觸發(fā)所述采集模塊402。
具體地,所述裝置還可以包括:
發(fā)送模塊,用于將采集到的日志發(fā)送給預(yù)先指定設(shè)備。
具體地,所述第一確定模塊403,具體可以用于:
在所述采集模塊402采集所述日志文件中記錄的日志之前,判斷所述日志文件的最后修改時(shí)間是否位于上一次采集所述日志文件中記錄的日志的時(shí)間之后,如果是,觸發(fā)所述采集模塊402。
具體地,所述第一確定模塊403,具體可以用于:
在所述采集模塊402采集所述日志文件中記錄的日志之前,判斷所述日志文件的最后修改時(shí)間與當(dāng)前時(shí)間的時(shí)間差是否不大于預(yù)設(shè)第一時(shí)長,如果是,觸發(fā)所述采集模塊402。
具體地,所述裝置還可以包括:
判斷模塊,用于當(dāng)所述第一確定模塊403確定所述日志文件不滿足所述日志采集條件時(shí),判斷所述日志文件的最后修改時(shí)間與當(dāng)前時(shí)間的時(shí)間差是否不小于預(yù)設(shè)第二時(shí)長;
判定模塊,用于在所述判斷模塊的判斷結(jié)果為是的情況下,判定所述日志文件對應(yīng)的容器已被銷毀。
具體地,所述裝置還可以包括:
對比模塊,用于每隔預(yù)設(shè)時(shí)間段或每到達(dá)預(yù)設(shè)時(shí)間點(diǎn),對比當(dāng)前容器日志目錄和上一次對比時(shí)的容器日志目錄存儲的日志文件對應(yīng)的存儲路徑;
第二確定模塊,用于根據(jù)對比結(jié)果,確定是否有容器被創(chuàng)建。
在圖4所示實(shí)施例的基礎(chǔ)上,圖5所示實(shí)施例提供的容器日志采集方法中,還可以在采集查找出的日志文件中記錄的日志之前,確定日志文件是否滿足日志采集條件,在確定日志文件滿足日志采集條件的情況下,采集日志文件中記錄的日志。應(yīng)用圖5所示實(shí)施例提供的技術(shù)方案,針對查找出的日志文件,還可以每隔預(yù)設(shè)時(shí)間段或每達(dá)到預(yù)設(shè)時(shí)間點(diǎn),只對其中滿足日志采集條件的日志文件進(jìn)行采集,具體地,可以只對可能有新日志生成的日志文件進(jìn)行采集,進(jìn)一步提高了日志采集效率。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說明書中的各個(gè)實(shí)施例均采用相關(guān)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對于裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施方式中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計(jì)算機(jī)可讀取存儲介質(zhì)中,這里所稱得的存儲介質(zhì),如:ROM/RAM、磁碟、光盤等。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。