Rsyslog的模板template詳解_第1頁
Rsyslog的模板template詳解_第2頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、?、 Template功能Rsyslog 的模板 template 詳解根據?戶需求指定任意格式動態?成?件名每個輸出都使 ?了?些模板,包括針對 ?件的,針對 ?戶消息等備注:舊版本: $template新版本: template() V6 之前是舊格式V7 版本,傳統語法與最新配置可在配置?件中混合使?,我們下 ?學習的是新格式。?、 Template()聲明1. 作?來定義模板,是 ?種靜態聲明,表 ?所有的模板都會在rsyslog 讀取配置 ?件的時候被定義。template 不會受到 if語句或嵌 ?配置的影響。2. 基本聲明結構template(parameters)list te

2、mplates 則是 ?種擴展的? 持 template(parameters) list-descriptions3. template 的類型類型參數指定不同的 template 類型,不同類型就可以使 ?不同的?法來定義template 的內容,類型不會影響插件 ?作,合適的 template 類型會很好的匹配需求。List Subtree String Plugin下?具體講?下每種類型三、四種類型的學習1. list 類型List template 是由 ?系列反復出現的內容和變量語句?成的,內容“通過包 含”起來,這種類型?般 ?于已知輸出結構的情況,? 如, ommongodb

3、。建議在有復雜屬性替換的情況下使 ?這種類型, ?較清晰List template 包含template 頭部( type = "list" )和緊接著的? ” 括 起”來的 constant 和property 部分。constant :不變的,對反復出現的?本進 ?描述property :描述屬性。對于 property 有多種可 ?的選項, ?多數選項被?來提取部分的屬性內容或者?來修改 ?本( ?如將 ?寫字母轉換為?寫字母)舉例:template(name="tpl1" type= "list" ) constant(val

4、ue="Syslog MSG is: '")property(name= "msg" ) constant(value="', " )property(name= "timereported"dataFormat= "rfc3339" caseConversion="lower" ) constant(value="n" )備注:這個 ?例可能會被 ?于定位常見的 ?件輸出(1) 常量的聲明( constant statement )?種指

5、定常量 ?本的?法。常量主要 ?于基于?本的輸出。舉例:property(name=constant(value+"$!user!msgnum""n" )template(name="outfmt" type= "list" )下?是常量?本中可被識別的 ?系列轉義字符的含義: 單個反斜線n換 ?( line feed )000 三位 ?進制數-數字值對應的字符( 101 代表字母 A),三個數是必須的,但是建議使? 六進制xhh ?六進制數 -表 ?數字值對應的字符(x41 代表A),注意兩個數都是必須給定的如果

6、反斜線后 ?跟了?個不?持的字符,那么將會被當做 ?個威脅報錯,這種情況會導致不可知的動作為結構化輸出創建 name/value 樹的時候,沒有 outname 參數的常量( constant text )會被忽略掉。template(name="outfmt" type= "list" ) property(name= "$!usr!msgnum")constant(value="n" outname= "IWantThisInMyDB")常量聲明時可使 ?以下參數value常量的值outna

7、me 結構化輸出中的字段名(2) property 的聲明property 聲明 ?于包含屬性?本,可以 ?于所有的屬性。選項options ?來指定提取或修改屬性的某些部分,對于property ?持以下參數:name要訪問的屬性名outname結構化輸出中的字段名dateformat?于指定 ?期相關屬性的?期格式caseconversion將 ?本字母轉換成?寫或 ?寫, ?持的value 有“ lowe和r“”upper ”controlcharacters指定如何處理控制字符,value :轉義字符( escape ),空格(? 個空格替換),從字符串中移除( drop ) secu

8、repath在dynafile templates 中 ?來創建 pathnames指定字段格式。 csv(csv ),json (沒有字段頭 field header 的json 格式), jsonf (完整的 json 段), jsonr (沒有雙反format斜線,但是可將其作為安全的 json 字段), jsonfr (jsonf 和jsonr 的結合格式)position.from從這個位置開始包含?字符串1(是第 ?個位置) position.to?直到這個位置開始包含?字符串position.relativetoendFrom 和to的位置與字符串的結尾有關field.numbe

9、r包含此字段的匹配field.delimiter字段提取的分隔符的?進制值regex.expression使 ?的正則表達式regex.type要么ERE ,要么BRE regex.nomatchmode如果沒有匹配該怎么做regex.match所使 ?的匹配regex.submatch所使 ?的 ?匹配droplastLf如果有 ?串換 ?符(LF )則丟棄表?字段的強制性,如果設置為”on,”那么就算為空,這個字段也會在結構化輸出的時候?直存在。如果設置mandatory為”of(f ”默認值),那么當為空得時候,這個字段就不會傳給結構化輸出。這個選項在?持動態結構的輸出中很有?(? 如

10、ommongodb )spifno1stsp?于處理 RFC3164 template 的專 ?選項2. ?樹( subtree )(1) 概念從 rsyslog 7.1.4 開始啟?的內容。 subtree 主要?來?成基于完整(CEE )subtree 的template 。這種模板主要 ?于知道如何處理層級結構的輸出, ?如 ommongodb ,對于這種類型,參數 subtree 必須被指定以告知要使 ?哪個subtree 。例如template(name="tpl1" type="subtree" subtree=" 1")

11、 表 ?包含所有 CEE 數據,? template(name="tpl2" type="subtree" subtree="!usr!tpl2") 則只包含以 "$!usr!tpl2" 開頭的subtree 。使?這種模板的核 ?理念是,真實地數據是通過set和unset 腳本語句預 ?成的,同時結果的結構會再模板內部被使?。如果?個完整的subtree需要被直接放到對象的根部( object s roo)t ,則必須使 ?這種類型。相對于其他所有的模板類型,只有subcontainers 能夠被?成。注意sub

12、tree 類型同樣可以?于基本 ?本的輸出,如omfile 。不過,這種情況下,你是?法指定常量的,因此就?法包含換 ?符。由此,對于輸出使? subtree 同樣被?于做調試或者 ?些特殊的場合( ?如?本將會被JSON 解釋器所解析)(2) ?例subtree 的典型 ?例:先創建?個 ?定義的subtree 然后再 template 中使 ?, ?如:set $!usr!tpl2!msg = $msg;set $!usr!tpl2!dataflow = fied($msg,58 , 2 );template(name="tpl2" type= "subtre

13、e" subtree= "$!usr!tpl2" )這?,我們假設 $msg 包含不同的字段,來 ?某字段的數據將會被提取出來并存儲 ?以與message ?起作為字段的內容3.字符串( string )包含?個強制的參數 string ,?來包含要使 ?的模板字符串,模板字符串是常量和replacement 變量的混合字符串。這種變量來? 于 message或者當最后的字符串到達插件時候 ?成的動態內容。基于字符串的模板是制定?本內容的 ?種很好的 ?法,特別是當對于屬性沒有復雜操作的情況下,特別適 ?。template(name="tpl3"

14、; type= "string"string ="%TIMESTAMP:date-rfc3339% %HOSTNAME% %syslogtag%msg:sp-if-no-1st-sp%msg:drop-last-lf%n")上例中,百分號之間的 ?本將會被 rsyslog 的property replacer 所解釋。在 nutshell 中,它包含了將要使 ?的屬性以及格式化所需的選項和其他處理,這與 list 模板中的 property 對象的功能類似(實際上僅僅是使 ?不同的語 ?來描述同樣地事情)所有百分號外的內容都是常量,這上例中,在屬性值中間

15、主要含有?些空格,在字符串的最后,使 ?了?個轉義字符。轉義字符允許指定那些 ?法打印的字符,這與C以及其他語 ?中得轉義字符相似,他們是以 ?個反斜線引出并在其后跟上 ?個或多個字符來表?特定的字符, ?如“7在”US-ASCII 中代表BEL (響鈴), “n代”表新?。總之與 C和perl 語?持的相似,但會有 ?些限制4. 插件( plugin )使? plugin 類型的時候,模板是由 ?個插件(或者被稱為”strgen或”者”string generator )來”?成。它的格式是固定的,就像他被編碼時候? 樣。然?這種類型并不靈活,由于它提供了很 ?的性能(并不是說其他類型的模板

16、很緩慢,?是指在那些對實時性要求很 ?的環境中),所以會被使 ?。在這種類型中,plugin 參數必須被指定,并且要包含插件名 ?來識別它。注意在模板中,插件必須要被實現加載好,例如:template(name="tpl4" type= "plugin" plugin= "mystrgen" )五、選項( options)選項是可選的,注意不要混淆模板的選項和屬性的選項-屬性選項會被屬性替換器(property replacer )處理并 ?于單個屬性 ?整個模板。模板選項是 ?寫敏感的, ?前模板屬性有:option.sql - ?

17、于為 MySQL 將字符串格式化為 SQL語句,其中的單引號( )和反斜線 () 會被對應的轉義字符替換(即 “ 和 “”) ”。注意在MySQL 配置中,必須禁? NO_BACKSLASH_ESCAPES模式(默認就是禁?的)option.stdsql -將字符串格式化為 SQL 語句以發送給表在哪混的 sql 服務器。這種?式會將字段中的單引號( ?兩)個單引號來替換 ( ,如)果MySQL 配置?件中 NO_BACKSLASH_ESCAPES設置為 on那么就必須使 ?這個stdsql 選項option.json - 將字符串格式化為 JSON 形式,這種?式會講字段中的單引號( ?兩)

18、個單引號 ( 來替)換。不管什么時候,絕對不要同時使?多個模板選項,因為會引起未知的故障和邏輯錯誤當模板是 ?以寫?數據庫的時候,則必須指定要么為sql選項要么為 stdsql 選項,否則有可能出現 SQL 注?的問題。需要注意的是,由于在現實情況,有的 ?商并不遵守標準的sql規則?引?的轉義?法,所以 ?種選項并不能滿 ?所有的?作,因此你必須確保你使 ?的是正確地格式。如果格式錯誤,仍然有可能遭遇sql 注?的威脅。數據庫寫 ?程序會檢查模板中存在的SQL 選項,如果不存在,那么數據庫寫 ?操作就會被禁 ?,這也主要是為了防 ?由于你忘記配置sql選項?導致的SQL 注?問題。 SQL

19、選項對于 ?件也很有 ?,特別是在出于性能考慮,你想要將 ?件導出到另外 ?臺機器的數據庫中得情況。對于其他的情況,如果沒有特別需要,建議不要使?,因為這會帶來 ?些處理時間上的開銷,雖然不多,但是對于某些在這?敏感的系統來說,這就顯得尤為重要了。對于寫?數據庫動作來說,默認情況下使?的是sql 選項,由于當前我們只M?持ySQL 并且sql 選項也兼容了 MySQL 默認的配置,所以這就是個最佳選擇了。當然如果你將NO_BACKSLASH_ESCAPES設置為 on 的話,則就需要使? stdsql 選項以避免 SQL 注意的威脅。六、備注(附加)1. 為omfile 創建動態 ?件名tem

20、plate(name="DynFile" type= "string" string ="/var/log/system-%HOSTNAME%.log")2. 傳統格式傳統語法格式如下:$template name,param,optionsname: 模板名param :指定模板內容的參數options :設置模板選項3. 預留的模板名以”RSYSLOG”_ 開頭的模板名是位 rsyslog 預留使?的,?定義的模板不要使 ?這些名字,否則有可能產 ?沖突導致未知故障。下 ?就是?直預留共使 ?的系統模板RSYSLOG_TraditionalFileFormat -傳統風格的使?不怎么精確的時間戳的默認?志 ?件格式RSYSLOG_FileFormat -現代“風格 ”的 ?志 ?件格式,與 TraditionalFileFormat類似,但是使?的是更 ?精度的時間戳和時區信息RSYSLOG_TraditionalForwardFormat -傳統風格的轉發格式,時間戳精度低,通常?于將 ?

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論