欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于Linux的日志文件夾遠(yuǎn)程傳輸系統(tǒng)的制作方法

文檔序號(hào):11138791閱讀:576來(lái)源:國(guó)知局
一種基于Linux的日志文件夾遠(yuǎn)程傳輸系統(tǒng)的制造方法與工藝

本發(fā)明屬于計(jì)算機(jī)日志信息處理領(lǐng)域,涉及一種使用rsyslog傳輸日志文件夾下的日志到遠(yuǎn)端日志服務(wù)器的系統(tǒng),尤其是涉及一種基于Linux的日志文件夾遠(yuǎn)程傳輸系統(tǒng)。



背景技術(shù):

企業(yè)信息系統(tǒng)中會(huì)包含多種設(shè)備和應(yīng)用,各種復(fù)雜的網(wǎng)絡(luò)設(shè)備和應(yīng)用系統(tǒng)每天都會(huì)產(chǎn)生大量的日志。企業(yè)內(nèi)部一般會(huì)建立統(tǒng)一的日志收集、管理和分析系統(tǒng)。統(tǒng)一的日志管理和分析首先需要匯聚日志,一般匯聚日志是各個(gè)網(wǎng)絡(luò)設(shè)備和應(yīng)用系統(tǒng)將自身產(chǎn)生的日志發(fā)送到指定的日志服務(wù)器上。如何收集不同的網(wǎng)絡(luò)設(shè)備和應(yīng)用系統(tǒng)產(chǎn)生的各種日志成為企業(yè)目前不得不面對(duì)的一個(gè)重要問(wèn)題。

目前大多數(shù)網(wǎng)絡(luò)設(shè)備和應(yīng)用系統(tǒng)的運(yùn)行環(huán)境都是類UNIX操作系統(tǒng)的,而系統(tǒng)日志Syslog協(xié)議是一個(gè)工業(yè)標(biāo)準(zhǔn)協(xié)議(RFC3164),是在一個(gè)IP網(wǎng)絡(luò)中轉(zhuǎn)發(fā)系統(tǒng)日志信息的標(biāo)準(zhǔn)。Syslog協(xié)議允許一個(gè)設(shè)備通過(guò)網(wǎng)絡(luò)把日志信息傳遞給日志信息接受者,通常為日志服務(wù)器。但是Syslog協(xié)議在網(wǎng)絡(luò)安全的數(shù)據(jù)加密、正確性、傳輸認(rèn)證、系統(tǒng)程序等方面存在不可忽視的漏洞,所以Rsyslog協(xié)議應(yīng)用而生。Rsyslog協(xié)議解決了Syslog協(xié)議的相關(guān)漏洞,目前主流的Linux系統(tǒng)默認(rèn)的日志協(xié)議為Rsyslog協(xié)議。所以企業(yè)內(nèi)部一般使用Rsyslog工具來(lái)收集各種網(wǎng)絡(luò)設(shè)備和應(yīng)用系統(tǒng)的日志。

由于網(wǎng)絡(luò)安全以及功能性限制,很多網(wǎng)絡(luò)設(shè)備和應(yīng)用系統(tǒng)產(chǎn)生的日志無(wú)法直接發(fā)送到遠(yuǎn)程服務(wù)器,需要將日志保存為本地文件。對(duì)于如何采集各個(gè)終端系統(tǒng)中的本地文件日志,目前解決方案有兩種:一種是在需要采集日志的主機(jī)上部署日志采集的第三方客戶端,第二種是使用主機(jī)系統(tǒng)默認(rèn)自帶的日志工具Rsyslog來(lái)收集日志。對(duì)于部署日志采集的第三方客戶端這種方式,由于部署的第三方客戶端可能會(huì)搶占系統(tǒng)資源、導(dǎo)致網(wǎng)絡(luò)安全不可控以及系統(tǒng)安全不好隔離等原因,對(duì)現(xiàn)有系統(tǒng)的侵入性較強(qiáng),所以此種方式在對(duì)侵入性敏感的運(yùn)行環(huán)境系統(tǒng)中使用有很大的局限性。由于Rsyslog協(xié)議工具是系統(tǒng)默認(rèn)自帶的,所以不存在對(duì)當(dāng)前系統(tǒng)的侵入性問(wèn)題。同時(shí),Rsyslog工具可以作為采集的客戶端,支持監(jiān)控本地日志文件并通過(guò)網(wǎng)絡(luò)發(fā)送到遠(yuǎn)程日志服務(wù)器上,所以使用Rsyslog工具采集本地文件日志成為日志管理員收集日志的重要選項(xiàng)。

但是使用Rsyslog采集本地文件的日志存在以下不足之處:

一、不支持批量采集本地日志文件或文件夾。管理員需要每次針對(duì)單個(gè)日志文件生成相應(yīng)的rsyslog配置文件。當(dāng)產(chǎn)生的日志位于多個(gè)文件夾中的多個(gè)日志文件時(shí),一方面很難管理需要上傳的日志文件,另一方面對(duì)于日志管理員來(lái)說(shuō)是很大的負(fù)擔(dān)。

二、一般系統(tǒng)生成的日志會(huì)根據(jù)一定的策略進(jìn)行切分或歸類,如每天的日志生成以日期名作為文件名的日志文件,或者同一個(gè)文件夾下可能包含多種類型的日志,如何對(duì)日志文件夾下的日志文件進(jìn)行過(guò)濾從而只上傳指定的某些日志文件是另外一個(gè)需要解決的問(wèn)題。

三、Rsyslog無(wú)法在指定的時(shí)間點(diǎn)文件夾上傳新增的日志。例如,按日期切分的日志,管理員希望在每周末的凌晨收集本周的日志。

四、Rsyslog上傳的日志沒(méi)有日志類型和日志標(biāo)簽,導(dǎo)致在日志服務(wù)器處很不好處理此類日志。

因此,有必要對(duì)現(xiàn)有的日志信息處理方法進(jìn)行改進(jìn)。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種基于Linux的日志文件夾遠(yuǎn)程傳輸系統(tǒng),可以指定需要傳輸?shù)娜罩疚募?、遠(yuǎn)程的日志采集服務(wù)器和端口,同時(shí)提供按頻率和定時(shí)觸發(fā)等配置策略,可以靈活方便快速地解決Linux系統(tǒng)上批量上傳本地日志文件到遠(yuǎn)程日志服務(wù)器的問(wèn)題,極大地減少日志采集以及維護(hù)的成本。

本發(fā)明的目的可以通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn):

一種基于Linux的日志文件夾遠(yuǎn)程傳輸系統(tǒng),該系統(tǒng)設(shè)置于一Linux主機(jī)中,包括:

日志文件夾監(jiān)控管理器,用于管理日志文件夾監(jiān)控任務(wù),包括對(duì)日志文件夾監(jiān)控任務(wù)的新建、刪除和查詢;

Crontab模塊,用于保存所述日志文件夾監(jiān)控任務(wù),按設(shè)定任務(wù)調(diào)度計(jì)劃觸發(fā)所述日志文件夾監(jiān)控任務(wù);

監(jiān)控任務(wù)處理器,在所述日志文件夾監(jiān)控任務(wù)觸發(fā)時(shí)響應(yīng),用于根據(jù)所述日志文件夾監(jiān)控任務(wù)監(jiān)控目標(biāo)文件夾的變化;

日志文件配置管理器,根據(jù)所述監(jiān)控任務(wù)處理器獲得的目標(biāo)文件夾的變化對(duì)與目標(biāo)文件夾對(duì)應(yīng)的rsyslog配置文件進(jìn)行管理,包括對(duì)rsyslog配置文件的添加和刪除;

Rsyslog模塊,用于根據(jù)所述日志文件夾監(jiān)控任務(wù)將經(jīng)日志文件配置管理器管理后的目標(biāo)文件夾下日志文件中的日志發(fā)送到遠(yuǎn)程日志服務(wù)器中。

所述日志文件夾監(jiān)控管理器包括:

監(jiān)控任務(wù)新建模塊,用于獲取任務(wù)參數(shù)并根據(jù)所述任務(wù)參數(shù)創(chuàng)建日志文件夾監(jiān)控任務(wù),所述任務(wù)參數(shù)包括目標(biāo)文件夾絕對(duì)路徑、任務(wù)調(diào)度計(jì)劃、日志類型和日志標(biāo)簽;

監(jiān)控任務(wù)查詢模塊,用于根據(jù)正在運(yùn)行任務(wù)查詢指令或任務(wù)id指令查詢Crontab模塊中相應(yīng)的日志文件夾監(jiān)控任務(wù)并顯示;

監(jiān)控任務(wù)刪除模塊,用于根據(jù)所有任務(wù)刪除指令或任務(wù)id指令刪除Crontab模塊中相應(yīng)的日志文件夾監(jiān)控任務(wù)。

所述目標(biāo)文件夾絕對(duì)路徑包括精確路徑、Linux通配符路徑或?qū)蛹?jí)通配符路徑。

所述任務(wù)調(diào)度計(jì)劃包括設(shè)定時(shí)間間隔調(diào)度或定時(shí)調(diào)度。

所述監(jiān)控任務(wù)新建模塊根據(jù)任務(wù)參數(shù)創(chuàng)建日志文件夾監(jiān)控任務(wù)時(shí),使用MD5生成任務(wù)id,將任務(wù)調(diào)度計(jì)劃轉(zhuǎn)化為符合crontab語(yǔ)法的時(shí)間策略,并將所創(chuàng)建的日志文件夾監(jiān)控任務(wù)加入至Crontab模塊中。

所述監(jiān)控任務(wù)處理器包括:

rsyslog配置文件字典獲取模塊,用于根據(jù)日志文件夾監(jiān)控任務(wù)調(diào)用日志文件配置管理器,獲取歸屬當(dāng)前日志文件夾監(jiān)控任務(wù)的所有日志文件的rsyslog配置文件字典,記為D1;

MD5值字典獲取模塊,用于根據(jù)日志文件夾監(jiān)控任務(wù)獲取出需要監(jiān)控的目標(biāo)文件夾下的所有日志文件的絕對(duì)路徑,并根據(jù)每個(gè)日志文件的絕對(duì)路徑生成MD5值字典,記為D2;

rsyslog配置文件添加控制模塊,用于對(duì)D2和D1做差集,得到字典D21,即D21=D2-D1,對(duì)字典D21中的每條日志文件信息調(diào)用日志文件配置管理器添加對(duì)應(yīng)的rsyslog配置文件;

rsyslog配置文件刪除控制模塊,用于對(duì)D1和D2做差集,得到字典D12,即D12=D1-D2,對(duì)字典D12中的每條日志文件信息調(diào)用日志文件配置管理器刪除對(duì)應(yīng)的rsyslog配置文件。

所述rsyslog配置文件字典中的鍵存儲(chǔ)的是rsyslog配置文件對(duì)應(yīng)的監(jiān)控文件的絕對(duì)路徑生成的MD5值,值是對(duì)應(yīng)的rsyslog配置文件的絕對(duì)路徑。

所述MD5值字典中的鍵為日志文件對(duì)應(yīng)的MD5值,值為對(duì)應(yīng)的日志文件的絕對(duì)路徑。

所述日志文件配置管理器包括:

rsyslog配置文件新建模塊,用于根據(jù)日志文件的絕對(duì)路徑新建與該日志文件對(duì)應(yīng)的rsyslog配置文件;

rsyslog配置文件刪除模塊,用于根據(jù)MD5值指令或任務(wù)id指令刪除相應(yīng)的rsyslog配置文件,所述任務(wù)id包括單個(gè)任務(wù)id或多個(gè)任務(wù)id;

rsyslog配置文件獲取模塊,用于根據(jù)日志文件的絕對(duì)路徑獲取對(duì)應(yīng)的rsyslog配置文件。

所述Rsyslog配置文件、日志文件以及日志文件監(jiān)控任務(wù)相互映射關(guān)聯(lián)。

與現(xiàn)有技術(shù)相比,本發(fā)明可以達(dá)到如下有益效果:

1、使用Crontab監(jiān)控文件夾下的日志文件,并通過(guò)Rsyslog發(fā)送到遠(yuǎn)端的日志服務(wù)器,無(wú)需針對(duì)管理員針對(duì)單個(gè)日志文件設(shè)置Rsyslog配置文件。

2、當(dāng)監(jiān)控的日志文件夾的日志內(nèi)容發(fā)生變化時(shí),可以增量發(fā)送變化的內(nèi)容到遠(yuǎn)端日志服務(wù)器,大大減少日志傳輸量。

3、可以按時(shí)間頻率、指定時(shí)間點(diǎn)、指定時(shí)間段設(shè)置監(jiān)控任務(wù),這樣可以按指定的頻率、指定時(shí)間點(diǎn)或指定時(shí)間段內(nèi)發(fā)送日志文件到遠(yuǎn)程的日志服務(wù)器,解決需要按頻率、按時(shí)間點(diǎn)、時(shí)間段來(lái)傳輸日志的問(wèn)題。

4、指定監(jiān)控和發(fā)送的日志文件的路徑支持通配符,可以靈活的過(guò)濾出文件夾下需要監(jiān)控和傳輸?shù)娜罩疚募鉀Q根據(jù)過(guò)濾只傳輸用戶希望的日志文件問(wèn)題。

5、用戶可以設(shè)置要發(fā)送的日志文件夾中日志的類型和標(biāo)簽,這樣文件夾下所有日志文件的日志發(fā)送到遠(yuǎn)程服務(wù)器時(shí)候都會(huì)附加用戶設(shè)定的日志類型和標(biāo)簽,便于日志服務(wù)器識(shí)別和處理日志。

附圖說(shuō)明

圖1為本發(fā)明的結(jié)構(gòu)示意圖;

圖2為本發(fā)明日志文件平監(jiān)控任務(wù)的新建流程示意圖;

圖3為本發(fā)明監(jiān)控任務(wù)處理流程示意圖;

圖4為本發(fā)明日志文件的rsyslog配置文件的新建流程示意圖。

具體實(shí)施方式

以下對(duì)本發(fā)明中的實(shí)施方式進(jìn)行清晰、完整的描述,顯然所描述的實(shí)施例僅僅是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域的技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明的保護(hù)范圍。

本發(fā)明實(shí)現(xiàn)了一種使用crontab來(lái)監(jiān)控日志文件夾,并使用Rsyslog將日志文件夾下日志文件中的日志發(fā)送到遠(yuǎn)程日志服務(wù)器的系統(tǒng)。由于本發(fā)明是基于Rsyslog讀取單個(gè)日志文件并上傳到遠(yuǎn)程日志服務(wù)器的基礎(chǔ)實(shí)現(xiàn)的,首先介紹下Rsyslog的整體架構(gòu)、配置文件的管理和實(shí)現(xiàn)單個(gè)日志文件并傳輸?shù)竭h(yuǎn)程日志服務(wù)器的方法,便于對(duì)后續(xù)本發(fā)明實(shí)現(xiàn)的Rsyslog傳輸日志文件夾有更好的理解。

1)Rsyslog整體架構(gòu)

Rsyslog整體架構(gòu)由日志的輸入、過(guò)濾和輸出三部分組成,對(duì)應(yīng)為input、filter和output三類插件。input插件負(fù)責(zé)輸入日志,filter插件用來(lái)過(guò)濾日志,output插件用來(lái)輸出日志。Input插件中的imfile插件支持讀取本地的某個(gè)日志文件,output插件中的omtcp或omudp支持使用tcp或udp協(xié)議將讀取的日志發(fā)送到遠(yuǎn)程的日志服務(wù)器。

2)Rsyslog配置文件管理

Rsyslog以配置文件的形式來(lái)管理所有插件,默認(rèn)配置文件為/etc/rsyslog.conf,其他配置文件可以存放在/etc/rsyslog.d目錄下。rsyslog啟動(dòng)時(shí)會(huì)首先加載/etc/rsyslog.conf,然后加載/etc/rsyslog.d目錄下的所有配置。/etc/rsyslog.d目錄下的配置文件會(huì)重載/etc/rsyslog.conf配置文件中的功能。Rsyslog支持以一定的語(yǔ)法來(lái)定制化需要使用的插件,通常按功能需要將需要配置的功能寫入到一個(gè)配置文件中并放在/etc/rsyslog.d目錄下,這樣便于維護(hù),同時(shí)對(duì)于其它的功能不產(chǎn)生影響。例如需要讀取兩個(gè)日志文件A和B并發(fā)送到遠(yuǎn)程服務(wù)器,可以在/etc/rsyslog.d目錄下創(chuàng)建日志文件A和B對(duì)應(yīng)的Rsyslog配置文件A.conf和B.conf。

3)單個(gè)日志文件的讀取和傳輸

對(duì)于單個(gè)日志文件的讀取使用Rsyslog的imfile插件模塊。Imfile插件需要指定讀取的日志文件的絕對(duì)路徑,輸出使用omtcp插件以TCP協(xié)議傳輸日志。在/etc/rsyslog.d下新建此文件對(duì)應(yīng)的配置文件,將插件功能寫入到對(duì)應(yīng)的配置文件中,重啟Rsyslog即可實(shí)現(xiàn)讀取某個(gè)日志文件并傳輸?shù)竭h(yuǎn)程服務(wù)器的功能。

如圖1所示,本發(fā)明提供的基于Linux的日志文件夾遠(yuǎn)程傳輸系統(tǒng)設(shè)置于一Linux主機(jī)中,包括日志文件夾監(jiān)控管理器1、Crontab模塊2、監(jiān)控任務(wù)處理器3、日志文件配置管理器4和Rsyslog模塊5,其中,日志文件夾監(jiān)控管理器1用于管理日志文件夾監(jiān)控任務(wù),包括對(duì)日志文件夾監(jiān)控任務(wù)的新建、刪除和查詢;Crontab模塊2用于保存日志文件夾監(jiān)控任務(wù),按設(shè)定任務(wù)調(diào)度計(jì)劃觸發(fā)日志文件夾監(jiān)控任務(wù);監(jiān)控任務(wù)處理器3在日志文件夾監(jiān)控任務(wù)觸發(fā)時(shí)響應(yīng),用于根據(jù)日志文件夾監(jiān)控任務(wù)監(jiān)控目標(biāo)文件夾的變化;日志文件配置管理器4根據(jù)監(jiān)控任務(wù)處理器3獲得的目標(biāo)文件夾的變化對(duì)與目標(biāo)文件夾對(duì)應(yīng)的rsyslog配置文件進(jìn)行管理,包括對(duì)rsyslog配置文件的添加和刪除;Rsyslog模塊5用于根據(jù)日志文件夾監(jiān)控任務(wù)將經(jīng)日志文件配置管理器4管理后的目標(biāo)文件夾下日志文件中的日志發(fā)送到遠(yuǎn)程日志服務(wù)器中。

1、日志文件夾監(jiān)控管理器

日志文件夾監(jiān)控管理器1包括監(jiān)控任務(wù)新建模塊、監(jiān)控任務(wù)查詢模塊和監(jiān)控任務(wù)刪除模塊,監(jiān)控任務(wù)新建模塊,用于獲取任務(wù)參數(shù)并根據(jù)任務(wù)參數(shù)創(chuàng)建日志文件夾監(jiān)控任務(wù),任務(wù)參數(shù)包括目標(biāo)文件夾絕對(duì)路徑、任務(wù)調(diào)度計(jì)劃、日志類型和日志標(biāo)簽;監(jiān)控任務(wù)查詢模塊,用于根據(jù)正在運(yùn)行任務(wù)查詢指令或任務(wù)id指令查詢Crontab模塊中相應(yīng)的日志文件夾監(jiān)控任務(wù)并顯示;監(jiān)控任務(wù)刪除模塊,用于根據(jù)所有任務(wù)刪除指令或任務(wù)id指令刪除Crontab模塊中相應(yīng)的日志文件夾監(jiān)控任務(wù)。

1.1新建監(jiān)控任務(wù)

用戶調(diào)用日志文件夾監(jiān)控任務(wù)管理裝置,輸入需要監(jiān)控的目標(biāo)文件夾的絕對(duì)路徑、任務(wù)調(diào)度計(jì)劃、日志類型和日志標(biāo)簽來(lái)創(chuàng)建一個(gè)監(jiān)控任務(wù)。監(jiān)控任務(wù)支持的功能包括:

1)目標(biāo)文件夾的絕對(duì)路徑

●支持遞歸監(jiān)控目標(biāo)文件夾下的所有子文件夾,如/usr/local/2016/下有以日志命令的文件夾08-30和08-31兩個(gè)子文件夾,這兩個(gè)子文件夾下各有兩個(gè)日志文件access.log和error.log,則設(shè)置目標(biāo)文件夾參數(shù)為/usr/local/2016會(huì)監(jiān)控/usr/local/2016下所有子文件的日志文件。

●支持Linux通配符,如需要監(jiān)控文件夾/usr/local/下所有的error開(kāi)頭的日志文件,可以設(shè)置為/usr/local/error*。

●支持文件路徑的層級(jí)通配符,如文件夾路徑為/usr/local/2016*/apache*,此文件夾路徑會(huì)監(jiān)控/usr/local路徑下所有以2016開(kāi)頭的子文件夾中以apache開(kāi)頭的日志文件。

2)任務(wù)調(diào)度計(jì)劃

任務(wù)調(diào)度計(jì)劃定義了一個(gè)日志文件夾監(jiān)控任務(wù)何時(shí)觸發(fā)監(jiān)控,支持的策略包括:

a.每隔一個(gè)時(shí)間間隔調(diào)用監(jiān)控任務(wù),時(shí)間間隔可以指定為秒、分、小時(shí)、天、星期、月和年。

b.定時(shí)調(diào)用監(jiān)控任務(wù),定時(shí)調(diào)用監(jiān)控任務(wù)會(huì)在用戶指定的某個(gè)時(shí)間點(diǎn)或時(shí)間段調(diào)用監(jiān)控任務(wù)。

c.支持crontab的時(shí)間語(yǔ)法,可以靈活設(shè)置各種調(diào)度時(shí)間計(jì)劃。

3)日志類型

日志類型用來(lái)表明當(dāng)前監(jiān)控的文件下的日志的類型,一個(gè)監(jiān)控任務(wù)對(duì)應(yīng)一個(gè)日志類型。發(fā)送日志文件的日志時(shí)候會(huì)自動(dòng)在日志生成模板上附加上日志類型,便于遠(yuǎn)程日志服務(wù)器根據(jù)不同的日志類型對(duì)日志進(jìn)行相應(yīng)的處理。

4)日志標(biāo)簽

可以設(shè)置日志標(biāo)簽來(lái)給要監(jiān)控的文件夾下的日志設(shè)置標(biāo)簽,當(dāng)傳輸監(jiān)控文件夾下的日志到遠(yuǎn)程日志服務(wù)器時(shí),會(huì)自動(dòng)給每條日志附加上日志標(biāo)簽,便于遠(yuǎn)程日志服務(wù)器進(jìn)行相應(yīng)的歸類、聚合等操作。日志標(biāo)簽參數(shù)以逗號(hào)分隔,可以設(shè)置多個(gè)日志標(biāo)簽,也可以不設(shè)置日志標(biāo)簽。

如圖2所示,新建監(jiān)控任務(wù)的流程如下:

1)用戶調(diào)用日志文件夾監(jiān)控任務(wù)管理器,并輸入?yún)?shù):監(jiān)控的目標(biāo)文件夾的絕對(duì)路徑dirPath、任務(wù)調(diào)度計(jì)劃schedule、日志類型logType和日志標(biāo)簽logTag。

2)在目標(biāo)文件夾存在且已有日志文件夾監(jiān)控任務(wù)中不存在相同的目標(biāo)文件夾時(shí),日志文件夾監(jiān)控任務(wù)管理器根據(jù)dirPath+schedule+logType+logTag使用MD5生成任務(wù)jobId。

3)日志文件夾監(jiān)控任務(wù)管理器解析任務(wù)調(diào)度計(jì)劃schedule參數(shù),將schedule參數(shù)轉(zhuǎn)換為對(duì)應(yīng)的crontab的語(yǔ)法的時(shí)間策略。

4)日志文件夾監(jiān)控任務(wù)管理器在Linux的crontab中添加一條新的任務(wù),crontab中的監(jiān)控任務(wù)格式如下:

schedule文件夾監(jiān)控處理命令dirPath參數(shù)logType參數(shù)logTag參數(shù)#jobId。

1.2查詢監(jiān)控任務(wù)

通過(guò)日志文件夾監(jiān)控任務(wù)管理器查詢當(dāng)前所有正在運(yùn)行的日志文件夾監(jiān)控任務(wù)或根據(jù)任務(wù)id查詢某個(gè)監(jiān)控任務(wù)。

查詢所有監(jiān)控任務(wù)的處理流程:

1)監(jiān)控任務(wù)管理器掃描crontab下的所有任務(wù)。

2)對(duì)步驟1中返回的每條任務(wù)內(nèi)容通過(guò)正則表達(dá)式過(guò)濾掉不符合本系統(tǒng)監(jiān)控任務(wù)格式的其他任務(wù),得到是由本發(fā)明的監(jiān)控任務(wù)管理器生成的日志文件夾監(jiān)控任務(wù)內(nèi)容。

3)對(duì)步驟2中過(guò)濾出的監(jiān)控任務(wù)解析其schedule、dirPath、logType、logTag和jobId,并返回。

根據(jù)任務(wù)id查詢某個(gè)監(jiān)控任務(wù)處理流程:

1)監(jiān)控任務(wù)管理器直根據(jù)任務(wù)id掃描crontab下的所有任務(wù),過(guò)濾出包含任務(wù)id的指定行的任務(wù)內(nèi)容

2)對(duì)步驟2中過(guò)濾出的監(jiān)控任務(wù)解析其schedule、dirPath、logType、logTag和jobId,并返回

1.3刪除監(jiān)控任務(wù)

日志文件夾監(jiān)控任務(wù)管理器支持刪除所有監(jiān)控任務(wù)和根據(jù)任務(wù)id刪除指定的某個(gè)任務(wù)。

刪除所有監(jiān)控任務(wù)的處理流程:

1)監(jiān)控任務(wù)管理器掃描crontab下的所有任務(wù)。

2)對(duì)步驟1中返回的每條任務(wù)內(nèi)容通過(guò)正則表達(dá)式過(guò)濾掉不是本發(fā)明的監(jiān)控系統(tǒng)產(chǎn)生的任務(wù)。

3)刪除步驟2中過(guò)濾出的監(jiān)控任務(wù)

4)刪除/etc/rsyslog.d下由日志文件配置管理裝置生成的所有配置文件。

根據(jù)任務(wù)id刪除監(jiān)控任務(wù)處理流程:

1)監(jiān)控任務(wù)管理器直根據(jù)任務(wù)id掃描crontab下的所有任務(wù),過(guò)濾出包含任務(wù)id的指定行的任務(wù)內(nèi)容。

2)刪除步驟1中過(guò)濾出的該任務(wù)id的監(jiān)控任務(wù)。

3)通知日志文件配置管理裝置刪除/etc/rsyslog.d目錄下任務(wù)id為該任務(wù)id的所有配置文件。

2、監(jiān)控任務(wù)處理器

監(jiān)控任務(wù)處理器3主要負(fù)責(zé)監(jiān)控日志文件夾的變化,并通知日志文件配置管理裝置對(duì)/etc/rsyslog.d目錄下的配置文件進(jìn)行相應(yīng)的新建、刪除操作,包括rsyslog配置文件字典獲取模塊、MD5值字典獲取模塊、rsyslog配置文件添加控制模塊和rsyslog配置文件刪除控制模塊。

每次監(jiān)控任務(wù)的觸發(fā),都會(huì)調(diào)用日志文件夾的監(jiān)控處理,如圖3所示,日志文件夾的監(jiān)控處理流程如下:

1)根據(jù)監(jiān)控任務(wù)id,調(diào)用日志文件配置管理裝置,獲取歸屬當(dāng)前監(jiān)控任務(wù)的所有日志文件的rsyslog配置文件字典,假設(shè)該集合為D1,該字典D1中的鍵存儲(chǔ)的是rsyslog配置文件對(duì)應(yīng)的監(jiān)控文件的絕對(duì)路徑生成的MD5值,值是對(duì)應(yīng)的rsyslog配置文件的絕對(duì)路徑。

2)根據(jù)監(jiān)控任務(wù)傳遞的目標(biāo)文件夾的絕對(duì)路徑,調(diào)用系統(tǒng)命令ls,獲取出需要監(jiān)控的文件夾下的所有日志子文件的絕對(duì)路徑,并根據(jù)每個(gè)日志文件的絕對(duì)路徑生成MD5值字典,假設(shè)該字典為D2。字典D2的鍵為日志文件對(duì)應(yīng)的MD5值,字典的值為對(duì)應(yīng)的日志文件的絕對(duì)路徑。

3)做操作D2和D1做差集,得到字典D21,即D21=D2-D1,則字典D21即為監(jiān)控的目標(biāo)文件夾中新增的日志文件。在D21非空集時(shí),對(duì)字典D21中的每條日志文件信息調(diào)用日志文件配置管理裝置來(lái)添加一條rsyslog配置文件。

4)做操作D1和D2做差集,得到字典D12,即D12=D1-D2,則字典D12即為監(jiān)控的目標(biāo)文件夾中已刪除的日志文件的信息。在D12非空集時(shí),對(duì)D12中每條信息,調(diào)用日志文件配置管理裝置來(lái)刪除對(duì)應(yīng)的rsyslog配置文件。

3、日志文件配置管理器

日志文件配置管理器4的功能包括新建、刪除、獲取日志文件對(duì)應(yīng)的配置文件、根據(jù)監(jiān)控任務(wù)id刪除對(duì)應(yīng)配置文件以及刪除所有的配置文件。日志文件配置管理器4包括rsyslog配置文件新建模塊、rsyslog配置文件刪除模塊和rsyslog配置文件獲取模塊。

3.1Rsyslog配置文件與日志文件和監(jiān)控的對(duì)應(yīng)策略

每個(gè)監(jiān)控任務(wù)監(jiān)控的文件夾下的日志文件都會(huì)在/etc/rsylog.d目錄下對(duì)應(yīng)的有一個(gè)配置文件,此配置文件用來(lái)監(jiān)控、讀取對(duì)應(yīng)的日志文件中的日志并發(fā)送到遠(yuǎn)端的日志服務(wù)器。當(dāng)監(jiān)控的日志文件中新增了日志,Rsyslog能夠發(fā)現(xiàn)日志文件的變化,并增量日志文件中新增的日志發(fā)送到遠(yuǎn)程日志服務(wù)器。當(dāng)監(jiān)控的日志文件被刪除時(shí),對(duì)應(yīng)的Rsyslog配置文件也需要被刪除。當(dāng)某個(gè)監(jiān)控任務(wù)被刪除時(shí),也需要?jiǎng)h除該監(jiān)控任務(wù)監(jiān)控的日志文件對(duì)應(yīng)的Rsyslog配置文件。

為了滿足以上的功能,需要日志文件的Rsyslog配置文件建立與日志文件以及監(jiān)控任務(wù)的映射關(guān)系。本發(fā)明通過(guò)配置文件名來(lái)實(shí)現(xiàn)此種關(guān)聯(lián)映射,定義Rsyslog配置文件的文件名格式為:jobId_fileMD5.conf,jobId為監(jiān)控任務(wù)id,fileMD5為對(duì)應(yīng)的日志文件的MD5值。

3.2新建Rsyslog配置文件

如圖4所示,新建日志文件對(duì)應(yīng)的Rsyslog配置文件的流程如下:

1)根據(jù)日志文件的絕對(duì)路徑生成MD5值。

2)/etc/rsyslog.d下的配置文件名中是否有包含該MD5值的文件,如果有,說(shuō)明已經(jīng)此日志文件已經(jīng)被監(jiān)控,則直接返回。

3)如果步驟2中,沒(méi)有文件名中包含MD5值的文件,則在/etc/rsyslog.d目錄下新建配置文件,配置文件名為jobId_fileMD5.conf。

4)向jobId_fileMD5.conf中寫入如下配置項(xiàng),以實(shí)現(xiàn)日志文件的增加上傳、發(fā)送的日志帶有日志類型和日志標(biāo)簽的內(nèi)容,如下:

$InputFileName${FILEPATH}

$InputFileTag${TAGNAME}

$InputFileStateFile stat-${CUR_TIMESTAMP}-${TAGNAME}

$InputFileSeverity info

$InputFilePersistStateInterval 20000

$RepeatedMsgReduction off

\$InputRunFileMonitor

\$InputFilePollInterval 3

\$template AnyrobotFormat_${APPNAME},\"<%pri%>%protocol-version%%ti mestamp:::date-rfc3339%%HOSTNAME%%app-name%%procid%%msgid%[${AUTH_TOKEN}@${Anyrobot_DISTRIBUTION_ID}tag=\\\"${TAG}\\\"]%ms g%\n\"

If$programname=='${APPNAME}'then@@${SYSLOG_SERVER_HOST}:${SYSLOG_SERVER_PORT};AnyrobotFormat_${APPNAME}

if$programname=='${APPNAME}'then~

3.3刪除Rsyslog配置文件

刪除Rsyslog配置文件分三種:

a)根據(jù)日志文件的MD5值刪除配置文件

直接查找/etc/rsyslog.d目錄中文件名中包含有該MD5的配置文件,然后直接刪除。

b)根據(jù)任務(wù)id刪除配置文件

直接查找/etc/rsyslog.d目錄中文件名包含該任務(wù)id的配置文件,然后直接刪除。

c)刪除監(jiān)控任務(wù)的所有的配置文件

獲取所有的監(jiān)控任務(wù)的id,然后依次刪除對(duì)應(yīng)的監(jiān)控任務(wù)下的配置文件。

3.4獲取日志對(duì)應(yīng)的配置文件

由于日志文件的Rsyslog配置文件名中包含了日志文件絕對(duì)路徑上的MD5值,所以要獲取一個(gè)日志文件的配置文件直接根據(jù)其絕對(duì)路徑的MD5值即可獲取到對(duì)應(yīng)的配置文件。

本發(fā)明的實(shí)施需要一臺(tái)Linux主機(jī),該主機(jī)上除了安裝Rsyslog和Crontab外,還需要安裝由三個(gè)Linux Shell腳本:task_manager.sh、task_process.sh和config_manage.sh,分別對(duì)應(yīng)日志文件夾監(jiān)控管理器、監(jiān)控任務(wù)處理器和日志文件配置管理器。task_manager.sh用來(lái)創(chuàng)建文件夾監(jiān)控任務(wù),實(shí)施時(shí)只需要調(diào)用task_manager.sh根據(jù)輸入?yún)?shù)來(lái)創(chuàng)建相應(yīng)的任務(wù)即可。創(chuàng)建監(jiān)控任務(wù)task_manager.s的調(diào)用方式如下:

./manage_monitor_task.sh-a--hour hour--minute minute--day_of_week day_of_week--day_of_month day_of_month--month month-h host-p port--filepath/path/to/your/logfile--logType type_of_your_log--tag"custom_attributes_of_your_log

各個(gè)參數(shù)功能如下:

-a:添加一個(gè)監(jiān)控任務(wù)

--hour:按小時(shí)頻率調(diào)用監(jiān)控任務(wù)

--minute:按分鐘頻率調(diào)用監(jiān)控任務(wù)

--day_of_week:指定調(diào)用為每個(gè)星期的某一天

--day_of_month:指定調(diào)用的每月的日期

--month month:指定調(diào)用的月份

-h:遠(yuǎn)程主機(jī)ip

-p:遠(yuǎn)程主機(jī)接受日志的端口

--filepath:監(jiān)控的文件夾的絕對(duì)路徑

--logType:日志類型??梢栽O(shè)置多個(gè)標(biāo)簽,以逗號(hào)分隔

--tag:日志標(biāo)簽

下面是具體實(shí)施案例:

實(shí)施案例一按時(shí)間間隔定期監(jiān)控日志文件夾,并將其下所有日志文件上傳到遠(yuǎn)程日志服務(wù)器

案例環(huán)境:存在apache日志文件夾A,需要將文件夾A下的所有日志文件上傳到IP為192.168.84.90、端口為5000的日志匯聚服務(wù)器上,并且設(shè)置日志類型為apache,標(biāo)簽設(shè)置為access和error,同時(shí)監(jiān)控任務(wù)觸發(fā)周期設(shè)置為每一小時(shí)。

實(shí)施方案:

1.如果僅要按每5分鐘觸發(fā)監(jiān)控任務(wù),則配置時(shí)間觸發(fā)策略為:--minute 5,完整調(diào)用命令如下:

./manage_monitor_task.sh-a--minute 5-h 192.168.84.90-p 5000--filepath/A/*--logType apache--tag access,error

2.如果要按每2小時(shí)的時(shí)間間隔定期監(jiān)控日志文件夾,則配置時(shí)間觸發(fā)策略為:--hour 2,完整調(diào)用命令如下:

./manage_monitor_task.sh-a--hour 2-h 192.168.84.90-p 5000--filepath/A/*--logType apache--tag access,error

實(shí)施案例二按指定日期點(diǎn)監(jiān)控日志文件夾,并將其下所有日志文件上傳到遠(yuǎn)程日志服務(wù)器

案例背景:用戶的日志存放在日志文件夾A下,用戶需要指定的時(shí)間點(diǎn)來(lái)觸發(fā)監(jiān)控文件夾的任務(wù),來(lái)收集新增的日志,其它背景條件和實(shí)施案例一中相同。

實(shí)施方案:

1.如果用戶需要在每周日晚上的20:00收集文件夾A下新增的日志,則設(shè)置文件夾監(jiān)控的時(shí)間觸發(fā)策略為:--hour 20:00-day_of_week 7,完整調(diào)用命令如下:

./manage_monitor_task.sh-a---hour 20:00-day_of_week 7-h 192.168.84.90-p5000--filepath/A/*--logType apache--tag access,error

2.如果用戶需要在每月5號(hào)的晚上21:00到23:00,每半小時(shí)觸發(fā)一下監(jiān)控任務(wù),則設(shè)置監(jiān)控的時(shí)間觸發(fā)策略為:--hour 21:00-23:00--day_of_month 5,完整調(diào)用命令如下:

./manage_monitor_task.sh-a--hour 21:00-23:00--day_of_month 5-h192.168.84.90-p 5000--filepath/A/*--logType apache--tag access,error

實(shí)施案例三根據(jù)日志文件名過(guò)濾監(jiān)控文件中日志文件并上傳遠(yuǎn)程日志服務(wù)器

案例背景:系統(tǒng)生成的日志根據(jù)時(shí)間生成相應(yīng)的日志文件,例如日志文件存放在文件夾A,文件夾A下有根據(jù)日期生成的日志文件:2016-07-01.log,2016-07-02.log,2016-08-02.log、2016-08-04.log、2016-08-03.log五個(gè)日志文件。其他相關(guān)背景和實(shí)施例一中相同。

實(shí)施方案:

1.如果僅需要監(jiān)控和上傳8月份產(chǎn)生的日志文件,則配置監(jiān)控的目的文件夾路徑為:/A/2016-08*.log,完整命令如下:

./manage_monitor_task.sh-a--hour 1-h 192.168.84.90-p 5000--filepath/A/2016-08*.log--logType apache--tag access,error

2.如果僅需監(jiān)控和上傳每個(gè)月2號(hào)產(chǎn)生的日志文件,則配置監(jiān)控的文件夾路徑為:/A/2016-*-02.log,完整命令如下:

./manage_monitor_task.sh-a--hour 1-h 192.168.84.90-p 5000--filepath/A/2016-*-02.log--logType apache--tag access,error。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
漾濞| 彩票| 博乐市| 武威市| 郸城县| 昌黎县| 上高县| 兰考县| 大邑县| 临猗县| 普安县| 广河县| 枣庄市| 大悟县| 莱西市| 威宁| 广水市| 德兴市| 方正县| 莎车县| 民权县| 屯留县| 屏东市| 三台县| 左云县| 曲阜市| 屏东市| 敖汉旗| 肃北| 大关县| 拉萨市| 神池县| 姚安县| 仁怀市| 长汀县| 新疆| 鹰潭市| 调兵山市| 汪清县| 石城县| 镇赉县|