一種分布式系統及其日志查詢方法
【專利摘要】本發明提供了一種分布式系統及其日志查詢方法,該方法包括:控制單元將預設的關鍵字和時間信息作為參數值輸入到預設的日志查詢腳本模板,生成日志查詢腳本并發送到機器集群;機器集群中機器的日志查詢單元依據所述日志查詢腳本在存儲單元中查詢日志,將找到的日志返回給控制單元。根據本發明提供的技術方案,能夠實現機器中日志的實時查詢。
【專利說明】一種分布式系統及其日志查詢方法
【【技術領域】】
[0001]本發明涉及互聯網應用領域的搜索技術,尤其涉及一種分布式系統及其日志查詢方法。
【【背景技術】】
[0002]目前,在大型的分布式集群中,常常部署有上百臺機器,每臺機器上部署的程序的日志文件的大小高達幾百G甚至更多,在進行系統調試和程序問題分析時,運維人員需要輸入關鍵字,查看機器上程序的日志文件。現有技術中,機器上程序的日志文件的查詢方法為:將機器集群中每臺機器上的日志文件都拷貝到搭建的存儲系統上,存儲系統中再建立查詢索引供運維人員進行查詢。
[0003]目前日志文件的查詢方式存在以下問題:
[0004]1、需要搭建一個存儲系統,并對海量的日志文件建立索引,因此查詢成本較高。
[0005]2、將機器集 群中每臺機器上的日志文件都拷貝到搭建的存儲系統上將占用大量的傳輸時間,浪費了大量的時間資源和存儲資源。
[0006]3、在存儲系統中查詢日志時,需要運行索引算法來查詢日志,索引算法查詢的日志文件多,而且運算時間較長,往往需要幾個小時的時間才能得到查詢結果,因此查詢效率較低。
【
【發明內容】
】
[0007]本發明提供了一種分布式系統及其日志查詢方法,能夠實現機器中日志的實時查詢。
[0008]本發明的具體技術方案如下:
[0009]根據本發明一優選實施例,一種分布式系統,包括:控制單元和機器集群;所述機器集群包括一個以上機器,所述機器包括日志查詢單元和存儲單元;其中,
[0010]控制單元,用于將預設的關鍵字和時間信息作為參數值輸入到預設的日志查詢腳本模板,生成日志查詢腳本并發送到機器集群;
[0011]日志查詢單元,用于依據所述日志查詢腳本在存儲單元中查詢日志,將找到的日志返回給控制單元。
[0012]上述系統中,該系統還包括:
[0013]交互單元,用于接收用戶輸入的關鍵字以及日志的時間信息,并將所述關鍵字和所述時間信息攜帶在查詢請求中發送給控制單元。
[0014]上述系統中,所述日志查詢腳本模板包括以下內容:機器集群中機器執行的操作、保存查詢結果的文件的文件名前綴、機器中保存日志文件的目錄和所述時間信息。
[0015]上述系統中,日志查詢單元在查詢日志時具體包括:
[0016]對所述日志查詢腳本進行解析,依據解析得到的參數在機器的存儲單元中找到保存日志文件的目錄;[0017]依據日志文件的名稱后綴,對所述保存日志文件的目錄下的日志文件進行分類;
[0018]依據時間信息在每個類型的日志文件中提取對應時間信息的日志文件;
[0019]依據需要執行的日志查詢操作,在提取的日志文件中依據關鍵字查詢對應的日
O
[0020]上述系統中,日志查詢單元在將找到的日志返回給控制單元時具體包括:
[0021]依據預設的保存查詢結果的文件的文件名前綴創建保存查詢結果的文件,將查詢到的日志作為查詢結果保存到所述保存查詢結果的文件中,將所述保存查詢結果的文件上報給控制單元。
[0022]上述系統中,
[0023]所述控制單元,還用于接收機器的日志查詢單元上報的日志;當預設的等待超時時間到時后,將查詢結果通過交互單元顯示給用戶;所述查詢結果包括:機器的標識、日志時間、日志分類和日志的具體內容。
[0024]—種分布式系統的日志查詢方法,包括:
[0025]控制單元將預設的關鍵字和時間信息作為參數值輸入到預設的日志查詢腳本模板,生成日志查詢腳本并發送到機器集群;
[0026]機器集群中機器的日志查詢單元依據所述日志查詢腳本在存儲單元中查詢日志,將找到的日志返回給控制單元。
[0027]上述方法中,該方法還包括:
[0028]交互單元接收用戶輸入的關鍵字以及日志的時間信息,并將所述關鍵字和所述時間信息攜帶在查詢請求中發送給控制單元。
[0029]上述方法中,所述日志查詢腳本模板包括以下內容:機器集群中機器執行的操作、保存查詢結果的文件的文件名前綴、機器中保存日志文件的目錄和所述時間信息。
[0030]上述方法中,日志查詢單元查詢日志的方法為:
[0031]對所述日志查詢腳本進行解析,依據解析得到的參數在機器的存儲單元中找到保存日志文件的目錄;
[0032]依據日志文件的名稱后綴,對所述保存日志文件的目錄下的日志文件進行分類;
[0033]依據時間信息在每個類型的日志文件中提取對應時間信息的日志文件;
[0034]依據需要執行的日志查詢操作,在提取的日志文件中依據關鍵字查詢對應的日
O
[0035]上述方法中,日志查詢單元將找到的日志返回給控制單元的方法為:
[0036]日志查詢單元依據預設的保存查詢結果的文件的文件名前綴創建保存查詢結果的文件,將查詢到的日志作為查詢結果保存到所述保存查詢結果的文件中,將所述保存查詢結果的文件上報給控制單元。
[0037]上述方法中,該方法還包括:
[0038]控制單元接收機器的日志查詢單元上報的日志;
[0039]預設的等待超時時間到時后,控制單元將查詢結果通過交互單元顯示給用戶;所述查詢結果包括:機器的標識、日志時間、日志分類和日志的具體內容。
[0040]由以上技術方案可以看出,本發明提供的技術方案具有以下有益效果:
[0041]控制單元對分布式的機器集群采用多進程的并發控制和管理,對每個機器都啟動一個單獨的進程完成交互控制,能夠實現實時的日志查詢,使得機器集群的日志實時查詢的完成時間與機器集群的規模無關,無論機器集群的規模大小,查詢時間都是取決于查詢時間最久的機器,從而具有良好的擴展性。
【【專利附圖】
【附圖說明】】
[0042]圖1是本發明實現分布式系統的優選實施例的結構示意圖;
[0043]圖2是本發明實現分布式系統的日志查詢方法的優選實施例的流程示意圖。
【【具體實施方式】】
[0044]本發明的基本思想是:控制單元將預設的關鍵字和時間信息作為參數值輸入到預設的日志查詢腳本模板,生成日志查詢腳本并發送到機器集群;機器集群中機器的日志查詢單元依據所述日志查詢腳本在存儲單元中查詢日志,將找到的日志返回給控制單元。
[0045]為了使本發明的目的、技術方案和優點更加清楚,下面結合附圖和具體實施例對本發明進行詳細描述。
[0046]本發明提供一種分布式系統,圖1是本發明實現分布式系統的優選實施例的結構示意圖,如圖1所示,該分布式系統包括:交互單元10、控制單元11和機器集群;機器集群包括一個以上機器,機器進一步包括日志查詢單元12和存儲單元13。
[0047]基于上述系統,本發明提供一種分布式系統的日志查詢方法,圖2是本發明實現分布式系統的日志查詢方法的優選實施例的流程示意圖,如圖2所示,該優選實施例包括以下步驟:
[0048]步驟201,交互單元接收用戶輸入的關鍵字和時間信息,并轉發給控制單元。
[0049]具體的,交互單元向用戶提供輸`入框和時間選項,用以接收用戶依據查詢需求輸入的關鍵字以及需要查詢的日志的時間信息,該時間信息可以包括日期和具體時段。
[0050]交互單元將關鍵字和時間信息攜帶在查詢請求中發送給控制單元;實際應用中,所述交互單元可以為web頁面,通過該web頁面用戶可以輸入關鍵字并選擇時間,還可以查看關鍵字對應的查詢結果;所述web頁面可以利用超文本預處理語言(ΡΗΡ,ΡΗΡ:HypertextPreprocessor)實現。
[0051]這里,在交互單元中選擇需要查詢的日志的日期和時間段,能夠縮小查詢范圍,減少查詢時間,提高網頁響應速度。
[0052]步驟202,控制單元將關鍵字和時間信息作為參數值輸入到預設的日志查詢腳本模板,生成日志查詢腳本并發送到機器集群。
[0053]具體的,控制單元能夠采用多進程并發的控制和管理機制,對機器集群中的一個以上機器進行日志查詢控制和管理;當從交互單元收到查詢請求后,從查詢請求中獲取關鍵字和時間信息。
[0054]控制單元中預設一個以上腳本模板,如,日志查詢腳本模板、流量統計腳本模板和磁盤清理腳本模板等;本優選實施例中是以日志查詢為例,日志查詢腳本模板可以為mcontrol (list, cmd, outfile, errfile, directory, time);其中 list 參數的參數值為機器集群中機器的標識,如機器名、域名或IP地址,控制單元可以從用戶預設的hlist文件中讀取機器集群中每個機器的標識;cmd參數的參數值為機器集群中機器具體執行的操作,本優選實施例中,cmd參數的參數值表示查詢日志操作,cmd參數作為具體的日志查詢命令,directory參數和time參數可以在日志查詢單元進行日志查詢時作為該日志查詢命令的輸入;0Utfile參數的參數值為保存查詢結果的文件的文件名前綴,errfile參數的參數值為保存錯誤結果的文件的文件名的前綴,directory參數的參數值為機器中保存日志文件的目錄,time參數的參數值為用戶輸入的時間信息。
[0055]用戶輸入的關鍵字為字段,控制單元對該字段進行預處理;例如,判斷關鍵字是非法輸入還是合法輸入;如果關鍵字為URL,則判斷該URL是非法網址還是合法網址,或當URL的長度較長時,對URL進行縮減處理,刪除其中的“http等字段。
[0056]控制單元將預處理后的關鍵字、收到的時間信息和機器的標識作為參數值輸入到日志查詢腳本模板,生成日志查詢腳本,日志查詢腳本模板中的其他參數值都是固定的,可以進行統一設置,只有該三個參數值是可變的;控制單元將生成的日志查詢腳本發送給機器集群中與日志查詢腳本中機器的標識對應的機器,實現將日志查詢腳本自動分發部署到分布式集群中的各個機器上,如此,就可以與機器集群中的機器之間建立多個進程和鏈接,以控制機器啟動日志查詢任務,實現機器集群中機器上日志的并發查詢操作;所述機器集群中包括一個以上機器。
[0057]步驟203,機器的日志查詢單元依據日志查詢腳本在存儲單元中查詢日志,將找到的日志返回給控制單元。
[0058]具體的,機器集群中部署有依據控制單元下發的腳本執行操作的實體,本優選實施例是以日志查詢為例,該實體為日志查詢單元;機器集群中的機器上還部署有存儲單元。
[0059]日志查詢單元收到控制單元發送的日志查詢腳本后,對該日志查詢腳本進行解析,將解析得到的參數作為自身的輸入參數,首先依據cmd參數確定需要執行的操作是日志查詢操作,然后依據directory參數的參數值在機器的存儲單元中找到保存日志文件的目錄,這里,存儲單元中存儲有海量的日志文件,這里僅依據配置的保存日志文件的目錄,可以快速找到需要查詢的日志;日志查詢單元依據日志文件的名稱后綴,對找到的保存日志文件的目錄中的日志文件進行分類,例如分成構建類型、集成類型等;日志查詢單元依據解析得到的time參數,在每個類型的日志文件中提取對應time參數中日期和時間段的日志文件,在提取的日志文件中依據解析得到的關鍵字查詢對應的日志;日志查詢單元依據outfile參數的參數值創建保存查詢結果的文件,然后將查詢到的日志作為查詢結果保存到該文件中,將保存查詢結果的文件上報給控制單元;其中,日志查詢單元還會依據errfile參數的參數值創建保存錯誤結果的文件,正常情況下,該文件是空的,只有異常情況下日志查詢單元才會記錄日志查詢的出錯信息,如讀日志文件失敗等,日志查詢單元可以通過保存錯誤結果的文件將異常情況上報給控制單元。
[0060]本優選實施例中,在日志查詢單元查詢日志的過程中,控制單元通過監控與每個機器建立的進程的執行狀態,來獲得并顯示每個機器上日志查詢單元的查詢進度,例如查詢是否完成、查詢是否出現異常等。
[0061 ] 步驟204,控制單元將找到的日志通過交互單元顯示給用戶。
[0062]具體的,控制單元接收各個機器的日志查詢單元上報的保存查詢結果的文件,將查詢結果匯總后通過交互單元顯示給用戶;所述匯總后的查詢結果包含機器的標識、日志時間、日志分類及日志的具體內容。[0063]其中,控制單元還可以同時將收到的查詢結果保存到本地,每個機器的查詢結果可以單獨存儲在一個文件中。
[0064]這里,可以預先在控制單元中依據查詢需求配置等待超時時間,即使存在機器的日志查詢單元在等待超時時間內沒有上報保存查詢結果的文件,控制單元也在等待超時時間到時后向用戶顯示其他機器的日志查詢單元上報的查詢結果。
[0065]為實現上述方法,如圖1所示,分布式系統中:
[0066]交互單元10,用于接收用戶輸入的關鍵字以及日志的時間信息,并將所述關鍵字和所述時間信息攜帶在查詢請求中發送給控制單元11。
[0067]控制單元11,用于將預設的關鍵字和時間信息作為參數值輸入到預設的日志查詢腳本模板,生成日志查詢腳本并發送到機器集群。
[0068]日志查詢單元12,用于依據所述日志查詢腳本在存儲單元13中查詢日志,將找到的日志返回給控制單元11。
[0069]其中,所述日志查詢腳本模板包括以下內容:機器集群中機器執行的操作、保存查詢結果的文件的文件名前綴、機器中保存日志文件的目錄和所述時間信息。
[0070]其中,日志查詢單元12在查詢日志時具體包括:
[0071]對所述日志查詢腳本進行解析,依據解析得到的參數在機器的存儲單元中找到保存日志文件的目錄;
[0072]依據日志文件的名稱后綴,對所述保存日志文件的目錄下的日志文件進行分類;
[0073]依據時間信息在每個類型的日志文件中提取對應時間信息的日志文件;
[0074]依據需要執行的日志查詢操作,在提取的日志文件中依據關鍵字查詢對應的日
O
[0075]其中,日志查詢單元12在將找到的日志返回給控制單元時具體包括:
[0076]依據預設的保存查詢結果的文件的文件名前綴創建保存查詢結果的文件,將查詢到的日志作為查詢結果保存到所述保存查詢結果的文件中,將所述保存查詢結果的文件上報給控制單元。
[0077]所述控制單元11,還用于接收機器的日志查詢單元12上報的日志;當預設的等待超時時間到時后,將查詢結果通過交互單元10顯示給用戶;所述查詢結果包括:機器的標識、日志時間、日志分類和日志的具體內容。
[0078]本發明的上述技術方案具有以下有益技術效果:
[0079]1、控制單元對分布式的機器集群采用多進程的并發控制和管理,對每個機器都啟動一個單獨的進程完成交互控制,能夠實現實時的日志查詢,使得機器集群的日志實時查詢的完成時間與機器集群的規模無關,無論機器集群的規模大小,查詢時間都是取決于查詢時間最久的機器,從而具有良好的擴展性。例如,對于具有30個機器的機器集群,應用本發明的技術方案實現URL的查詢后,單條URL的查詢時間是4s左右,以前將日志文件保存到存儲系統并建立索引的過程就需要至少一個小時,因此,無法滿足實時查詢的需求。
[0080]2、分布式系統可以應用于任何分布式集群,如其他文件的查詢、流量統計和磁盤清理等,針對不同的分布式系統,只需要對操作執行實體(如日志查詢單元)進行升級即可。
[0081]3、不需要創建專門的存儲系統并建立索弓丨,因此可以節省帶寬資源和存儲空間,減少查詢成本,提高查詢效率。[0082]4、控制單元可以對日志查詢單元進行靈活配置,以滿足不同的查詢需求。
[0083]5、分布式系統的結構簡單清晰,由控制單元進行統一控制,具有較高的可行性。
[0084]以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明保護的范圍之內。
【權利要求】
1.一種分布式系統,其特征在于,該系統包括:控制單元和機器集群;所述機器集群包括一個以上機器,所述機器包括日志查詢單元和存儲單元;其中, 控制單元,用于將預設的關鍵字和時間信息作為參數值輸入到預設的日志查詢腳本模板,生成日志查詢腳本并發送到機器集群; 日志查詢單元,用于依據所述日志查詢腳本在存儲單元中查詢日志,將找到的日志返回給控制單元。
2.根據權利要求1所述的系統,其特征在于,該系統還包括: 交互單元,用于接收用戶輸入的關鍵字以及日志的時間信息,并將所述關鍵字和所述時間信息攜帶在查詢請求中發送給控制單元。
3.根據權利要求1所述的系統,其特征在于,所述日志查詢腳本模板包括以下內容:機器集群中機器執行的操作、保存查詢結果的文件的文件名前綴、機器中保存日志文件的目錄和所述時間信息。
4.根據權利要求1所述的系統,其特征在于,日志查詢單元在查詢日志時具體包括: 對所述日志查詢腳本進行解析,依據解析得到的參數在機器的存儲單元中找到保存日志文件的目錄; 依據日志文件的名稱后綴,對所述保存日志文件的目錄下的日志文件進行分類; 依據時間信息在每個類型的日志文件中提取對應時間信息的日志文件; 依據需要執行的日志查詢·操作,在提取的日志文件中依據關鍵字查詢對應的日志。
5.根據權利要求1所述的系統,其特征在于,日志查詢單元在將找到的日志返回給控制單元時具體包括: 依據預設的保存查詢結果的文件的文件名前綴創建保存查詢結果的文件,將查詢到的日志作為查詢結果保存到所述保存查詢結果的文件中,將所述保存查詢結果的文件上報給控制單元。
6.根據權利要求1所述的系統,其特征在于, 所述控制單元,還用于接收機器的日志查詢單元上報的日志;當預設的等待超時時間到時后,將查詢結果通過交互單元顯示給用戶;所述查詢結果包括:機器的標識、日志時間、日志分類和日志的具體內容。
7.—種分布式系統的日志查詢方法,其特征在于,該方法包括: 控制單元將預設的關鍵字和時間信息作為參數值輸入到預設的日志查詢腳本模板,生成日志查詢腳本并發送到機器集群; 機器集群中機器的日志查詢單元依據所述日志查詢腳本在存儲單元中查詢日志,將找到的日志返回給控制單元。
8.根據權利要求7所述的方法,其特征在于,該方法還包括: 交互單元接收用戶輸入的關鍵字以及日志的時間信息,并將所述關鍵字和所述時間信息攜帶在查詢請求中發送給控制單元。
9.根據權利要求7所述的方法,其特征在于,所述日志查詢腳本模板包括以下內容:機器集群中機器執行的操作、保存查詢結果的文件的文件名前綴、機器中保存日志文件的目錄和所述時間信息。
10.根據權利要求7所述的方法,其特征在于,日志查詢單元查詢日志的方法為:對所述日志查詢腳本進行解析,依據解析得到的參數在機器的存儲單元中找到保存日志文件的目錄; 依據日志文件的名稱后綴,對所述保存日志文件的目錄下的日志文件進行分類; 依據時間信息在每個類型的日志文件中提取對應時間信息的日志文件; 依據需要執行的日志查詢操作,在提取的日志文件中依據關鍵字查詢對應的日志。
11.根據權利要求7所述的方法,其特征在于,日志查詢單元將找到的日志返回給控制單元的方法為: 日志查詢單元依據預設的保存查詢結果的文件的文件名前綴創建保存查詢結果的文件,將查詢到的日志作為查詢結果保存到所述保存查詢結果的文件中,將所述保存查詢結果的文件上報給控制單元。
12.根據權利要求7所述的方法,其特征在于,該方法還包括: 控制單元接收機器的日志查詢單元上報的日志; 預設的等待超時時間到時后,控制單元將查詢結果通過交互單元顯示給用戶;所述查詢結果包括:機器的標識、日志時間、 日志分類和日志的具體內容。
【文檔編號】G06F17/30GK103853743SQ201210501969
【公開日】2014年6月11日 申請日期:2012年11月29日 優先權日:2012年11月29日
【發明者】王昭 申請人:百度在線網絡技術(北京)有限公司