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

提交评论