一種利用攔截器進行日志數據收集的方法及系統的制作方法
【專利摘要】本發明涉及一種利用攔截器進行日志數據收集的方法及系統,其中方法包括以下步驟:步驟1:自定義構建一個攔截器,將攔截器放到Flume的根目錄下;步驟2:所述攔截器接收數據并過濾掉不需要的數據,得到需要收集的日志數據。一個大的應用系統中往往產生的日志數據會有幾十甚至上百個字段,在使用Flume自帶的攔截器進行日志收集時,收集到的日志還是會有對應這么多的字段,但是基本上有很多字段是我們不需要去關注的,沒有實際利用價值,這樣帶來數據的傳輸性能緩慢和存儲的開銷。本發明通過自定義Flume攔截器,可以抽取出我們需要的字段,并對某個字段進行加密處理。減少了數據的傳輸量,降低了存儲的開銷。
【專利說明】
一種利用攔截器進行日志數據收集的方法及系統
技術領域
[0001 ]本發明涉及一種利用攔截器進行日志數據收集的方法及系統,屬于計算機軟件領域。
【背景技術】
[0002]Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸的系統,Flume支持在日志系統中定制各類數據發送方,用于收集數據;同時,Flume提供對數據進行簡單處理,并寫到各種數據接受方(可定制)的能力。Flume有各種自帶的攔截器,比如:Times tamplnterceptor、Host Interceptor、RegexExtractor Interceptor等,通過使用不同的攔截器,實現不同的功能。但是以上的這些攔截器,并不能改變原有日志數據的內容,當一條日志信息有幾十個甚至上百個字段的時候,在傳統的Flume處理下,收集到的日志還是會有對應這么多的字段。
【發明內容】
[0003]本發明所要解決的技術問題是,根據實際業務的需求,為了更好的滿足數據在應用層的處理,提供一種通過自定義Flume攔截器,過濾掉不需要的字段,并對字段加密處理,將源數據進行預處理。減少了數據的傳輸量,降低了存儲的開銷的利用攔截器進行日志數據收集的方法及系統。
[0004]本發明解決上述技術問題的技術方案如下:一種利用攔截器進行日志數據收集的方法,具體包括以下步驟:
[0005]步驟1:自定義構建一個攔截器,將攔截器放到Flume的根目錄下;
[0006]步驟2:所述攔截器接收數據并過濾掉不需要的數據,得到需要收集的日志數據。
[0007]本發明的有益效果是:一個大的應用系統中往往產生的日志數據會有幾十甚至上百個字段,在使用Flume自帶的攔截器進行日志收集時,收集到的日志還是會有對應這么多的字段,但是基本上有很多字段是我們不需要去關注的,沒有實際利用價值,這樣帶來數據的傳輸性能緩慢和存儲的開銷。通過自定義Flume攔截器,可以抽取出我們需要的字段,并對某個字段進行加密處理。減少了數據的傳輸量,降低了存儲的開銷。
[0008]在上述技術方案的基礎上,本發明還可以做如下改進。
[0009]進一步,所述步驟I具體包括以下步驟:
[0010]步驟1.1:定義一個自定義攔截器類;
[0011]步驟1.2:在自定義攔截器類中定義變量,并配置相關信息,根據配置的相關信息設置攔截器接口 ;
[0012]步驟1.3:在攔截器接口中定義內部接口產生器,并進行參數配置,完成攔截器的設置;
[0013]步驟I.4:將攔截器放到Flume的根目錄下。
[0014]進一步,所述相關信息包括正則表達式、每一行字段間的分隔符、所需要列字段的下標和多個下標使用的分隔符。
[0015]進一步,所述步驟1.2具體包括以下步驟:
[0016]步驟1.2.1:在自定義攔截器類中定義變量,并配置相關信息;
[0017]步驟1.2.2:在自定義攔截器類中添加有參構造法,并對相關信息進行處理;
[0018]步驟1.2.3:設置處理邏輯,根據根據處理邏輯和處理后的相關信息設置攔截器接
□O
[0019]進一步,所述步驟1.2.2中對相關信息的處理為將相關信息中的Unicode編碼轉換為字符串。
[0020]進一步,所述處理邏輯包括單個處理和批量處理。
[0021]進一步,所述步驟2中過濾掉不需要的字段,并對字段進行加密處理。
[0022]采用上述進一步方案的有益效果是,減少了數據的傳輸量,并降低了存儲的開銷。
[0023]本發明解決上述技術問題的技術方案如下:一種利用攔截器進行日志數據收集的系統,包括攔截器模塊和數據過濾模塊;
[0024]所述攔截器模塊用于自定義構建一個攔截器,將攔截器放到Flume的根目錄下;
[0025]所述數據過濾模塊用于控制所述攔截器接收數據并過濾掉不需要的數據,得到需要收集的日志數據。
[0026]在上述技術方案的基礎上,本發明還可以做如下改進。
[0027]進一步,所述攔截器模塊包括類定義模塊、配置模塊、參數設置模塊和目錄模塊;
[0028]所述類定義模塊用于定義一個自定義攔截器類;
[0029]所述配置模塊用于在自定義攔截器類中定義變量,并配置相關信息,根據配置的相關信息設置攔截器接口 ;
[0030]所述參數設置模塊用于在攔截器接口中定義內部接口產生器,并進行參數配置,完成攔截器的設置;
[0031 ]所述目錄模塊用于將攔截器放到Flume的根目錄下。
[0032]進一步,所述相關信息包括正則表達式、每一行字段間的分隔符、所需要列字段的下標和多個下標使用的分隔符。
【附圖說明】
[0033]圖1為本發明實施例1所述的一種利用攔截器進行日志數據收集的方法流程圖;
[0034]圖2為本發明實施例1所述的一種利用攔截器進行日志數據收集的系統結構框圖。
[0035]附圖中,各標號所代表的部件列表如下:
[0036]1、攔截器模塊,2、數據過濾模塊。
【具體實施方式】
[0037]以下結合附圖對本發明的原理和特征進行描述,所舉實例只用于解釋本發明,并非用于限定本發明的范圍。
[0038]如圖1所示,為本發明實施例1所述的一種利用攔截器進行日志數據收集的方法,具體包括以下步驟:
[0039]步驟1:自定義構建一個攔截器,將攔截器放到Flume的根目錄下;
[0040]步驟2:所述攔截器接收數據并過濾掉不需要的數據,得到需要收集的日志數據。
[0041]本發明實施例2所述的一種利用攔截器進行日志數據收集的方法,在實施例1的基礎上,所述步驟I具體包括以下步驟:
[0042]步驟1.1:定義一個自定義攔截器類;
[0043]步驟1.2:在自定義攔截器類中定義變量,并配置相關信息,根據配置的相關信息設置攔截器接口 ;
[0044]步驟1.3:在攔截器接口中定義內部接口產生器,并進行參數配置,完成攔截器的設置;
[0045]步驟I.4:將攔截器放到Flume的根目錄下。
[0046]本發明實施例3所述的一種利用攔截器進行日志數據收集的方法,在實施例2的基礎上,所述相關信息包括正則表達式、每一行字段間的分隔符、所需要列字段的下標和多個下標使用的分隔符等。
[0047]本發明實施例4所述的一種利用攔截器進行日志數據收集的方法,在實施例3的基礎上,所述步驟1.2具體包括以下步驟:
[0048]步驟1.2.1:在自定義攔截器類中定義變量,并配置相關信息;
[0049]步驟1.2.2:在自定義攔截器類中添加有參構造法,并對相關信息進行處理;
[0050]步驟1.2.3:設置處理邏輯,根據根據處理邏輯和處理后的相關信息設置攔截器接
□O
[0051]本發明實施例5所述的一種利用攔截器進行日志數據收集的方法,在實施例4的基礎上,所述步驟1.2.2中對相關信息的處理為將相關信息中的Unicode編碼進行轉換為字符串O
[0052]本發明實施例6所述的一種利用攔截器進行日志數據收集的方法,在實施例4或5的基礎上,所述處理邏輯包括單個處理和批量處理。
[0053]本發明實施例7所述的一種利用攔截器進行日志數據收集的方法,在實施例1-6任一項的基礎上,所述步驟2中過濾掉不需要的字段,并對字段進行加密處理。
[0054]如圖2所示,為本發明實施例1所述的一種利用攔截器進行日志數據收集的系統,包括攔截器模塊I和數據過濾模塊2;
[0055]所述攔截器模塊I用于自定義構建一個攔截器,將攔截器放到Flume的根目錄下;
[0056]所述數據過濾模塊2用于控制所述攔截器接收數據并過濾掉不需要的數據,得到需要收集的日志數據。
[0057]本發明實施例2所述的一種利用攔截器進行日志數據收集的系統,在實施例1的基礎上,所述攔截器模塊I包括類定義模塊、配置模塊、參數設置模塊和目錄模塊;
[0058]所述類定義模塊用于定義一個自定義攔截器類;
[0059]所述配置模塊用于在自定義攔截器類中定義變量,并配置相關信息,根據配置的相關信息設置攔截器接口 ;
[0060]所述參數設置模塊用于在攔截器接口中定義內部接口產生器,并進行參數配置,完成攔截器的設置;
[0061 ]所述目錄模塊用于將攔截器放到Flume的根目錄下。
[0062]本發明實施例3所述的一種利用攔截器進行日志數據收集的系統,在實施例2的基礎上,所述相關信息包括正則表達式、每一行字段間的分隔符、所需要列字段的下標和多個下標使用的分隔符等。
[0063]本技術方案核心包括二部分:
[0064]I)編寫java代碼,自定義攔截器:具體包括以下步驟:
[0065]a)定義一個類CustomInterceptor實現Interceptor接口。
[0066]b)在CustomInterceptor類中定義變量,這些變量是需要到Flume的配置文件中進行配置使用的。配置正則表達式(regex)、每一行字段間的分隔符(fields_separator)、通過分隔符分隔后,所需要列字段的下標(indexs)、多個下標使用的分隔符(indexS_separator)、多個下標使用的分隔符(indexs_separator)。
[0067]c)添加CustomInterceptor的有參構造方法。并對相應的變量進行處理。將配置文件中傳過來的Unicode編碼進行轉換為字符串。
[0068]d)寫具體的要處理的邏輯interceptO方法,一個是單個處理的,一個是批量處理。
[0069]e)接口中定義了一個內部接口Builder,在configure方法中,進行一些參數配置。并給出,在flume的conf中沒配置一些參數時,給出其默認值。通過其bui Ider方法,返回一個 interceptor 對象。
[0070]f)通過以上步驟,自定義攔截器的代碼開發已完成,然后打包成jar,放到Flume的根目錄下的Iib中
[0071]2)修改Flume的配置信息:
[0072]進入到Flume的安裝目錄下的conf,配置source、channel、sink,并在source中對自定義的攔截器進行引用,對之前在代碼中定義的變量進行配置。
[0073]將開發完成的自定義攔截器打包成jar,放到flume的根目錄下的Iib中,進入到Flume的安裝目錄下的conf,配置source、channel、sink,并在source中對自定義的攔截器進行引用,對之前在代碼中定義的變量進行配置。這樣實現了整個Flume自定義攔截器的開發。
[0074]以上所述僅為本發明的較佳實施例,并不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
【主權項】
1.一種利用攔截器進行日志數據收集的方法,其特征在于,具體包括以下步驟: 步驟1:自定義構建一個攔截器,將攔截器放到Flume的根目錄下; 步驟2:所述攔截器接收數據并過濾掉不需要的數據,得到需要收集的日志數據。2.根據權利要求1所述的一種利用攔截器進行日志數據收集的方法,其特征在于,所述步驟I具體包括以下步驟: 步驟I.I:定義一個自定義攔截器類; 步驟1.2:在自定義攔截器類中定義變量,并配置相關信息,根據配置的相關信息設置攔截器接口; 步驟1.3:在攔截器接口中定義內部接口產生器,并進行參數配置,完成攔截器的設置; 步驟1.4:將攔截器放到Flume的根目錄下。3.根據權利要求2所述的一種利用攔截器進行日志數據收集的方法,其特征在于,所述相關信息包括正則表達式、每一行字段間的分隔符、所需要列字段的下標和多個下標使用的分隔符。4.根據權利要求3所述的一種利用攔截器進行日志數據收集的方法,其特征在于,所述步驟1.2具體包括以下步驟: 步驟1.2.1:在自定義攔截器類中定義變量,并配置相關信息; 步驟1.2.2:在自定義攔截器類中添加有參構造法,并對相關信息進行處理; 步驟1.2.3:設置處理邏輯,根據根據處理邏輯和處理后的相關信息設置攔截器接口。5.根據權利要求4所述的一種利用攔截器進行日志數據收集的方法,其特征在于,所述步驟1.2.2中對相關信息的處理為將相關信息中的Unicode編碼轉換為字符串。6.根據權利要求4或5所述的一種利用攔截器進行日志數據收集的方法,其特征在于,所述處理邏輯包括單個處理和批量處理。7.根據權利要求1所述的一種利用攔截器進行日志數據收集的方法,其特征在于,所述步驟2中過濾掉不需要的字段,并對字段進行加密處理。8.—種利用攔截器進行日志數據收集的系統,其特征在于,包括攔截器模塊和數據過濾豐吳塊; 所述攔截器模塊用于自定義構建一個攔截器,將攔截器放到Flume的根目錄下; 所述數據過濾模塊用于控制所述攔截器接收數據并過濾掉不需要的數據,得到需要收集的日志數據。9.根據權利要求8所述的一種利用攔截器進行日志數據收集的系統,其特征在于,所述攔截器模塊包括類定義模塊、配置模塊、參數設置模塊和目錄模塊; 所述類定義模塊用于定義一個自定義攔截器類; 所述配置模塊用于在自定義攔截器類中定義變量,并配置相關信息,根據配置的相關信息設置攔截器接口 ; 所述參數設置模塊用于在攔截器接口中定義內部接口產生器,并進行參數配置,完成攔截器的設置; 所述目錄模塊用于將攔截器放到Flume的根目錄下。10.根據權利要求9所述的一種利用攔截器進行日志數據收集的系統,其特征在于,所述相關信息包括正則表達式、每一行字段間的分隔符、所需要列字段的下標和多個下標使用的分隔符。
【文檔編號】G06F17/30GK105930379SQ201610230525
【公開日】2016年9月7日
【申請日】2016年4月14日
【發明人】金曉飛
【申請人】北京思特奇信息技術股份有限公司