• Filter Conditions 过滤条件


    <pre name="code" class="html">Filter Conditions 过滤条件:
    
    Rsyslog 提供4种不同类型的"filter 条件"
    
    "传统的" severity and facility 基于selectors:
    
    基于属性的过滤器
    
    基于表达式的过滤
    
    Selectors 选择器
    
    选择器是过滤消息传统的方式, 它们被保存在 rsyslog 使用原来的语法,
    
    
    因为它是众所周知的,高效和用于兼容 stock syslogd 配置文件。
    
    如果你只要过滤基于priority and facility, 你应该使用selector lines.
    
    
    selector 字段 本身有两部分组成,一个设备和一个优先级 通过点号分隔。
    
    
    这两部分是不区分大小的,也可以通过十进制数指定, 但是不要这么做,
    
    你会被警告。 facilities and priorities 都在syslog(3)都有描述,
    
    
    facility 是下面其中一个关键字:auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (same as auth), 
    
    syslog, user, uucp and local0 through local7. 
    
    关键字
    security 不应该被使用 标记为只能内部使用,因此不能被用于应用。
    
    
    priority 是下面的关键字, debug, info, notice, warning, warn (same as warning), err, error (same as err), crit, alert, 
    
    emerg, panic (same as emerg). 
    
    关键字error,warn 和panic 是过时的,不能在被使用,优先级定义消息的严重性
    
    
    
    
    原来的BSD syslogd 行为是所有的指定的优先级或者更多的是被记录根据给定的action.
    
    
    rsyslogd 表现类似,但是有一些扩展
    
    
    
    除了以上提到的名字rsyslogd(8) 了解下面的扩展:一个*代表所有的facilities 或者所有的priorities
    
    依赖它被使用在哪里(点号的之前或者之后)
    
    
    关键字none 代表没有给定facility的优先级,你可以指定多个facilities 使用相同的优先级模式 
    
    在一行使用逗号(,)隔开。
    
    
    你可以指定你想要的facilities 
    
    
    记住 只有facility部分从这样的语句是接收,一个优先级部分是被跳过
    
    
    
    多个选择器可以通过一个单独的action 使用分号隔开。
    
    
    记住每个选择器 在selector 字段是可以覆盖之前那个的,使用这个行为你可以执行相同的优先级从模式里
    
    
    Rsyslogd 有一个语法扩展到原来的BSD 源, 让它的使用更加的直观。
    
    
    你可以在每个优先级之前 使用一个等号来指定只有这个单个的邮件及和不是上面的任何一个。
    
    
    你也可以是两者都是在优先级之前使用一个!来忽略使用所有的优先级
    
    
    基于属性的过滤器:
    
    
    基于属性的过滤是唯一的对于rsyslogd, 它们允许过滤任何属性, 像HOSTNAME,syslogtag 和msg
    
    
    一个所有当前支持的属性的列表可以找到在属性替换文档( 但是记住只有属性)
    
    使用这个过滤,每个属性可以被检查通过一个指定的值,使用一个指定的比较操作
    
    
    基于属性的过滤器必须开始以一个冒号在列0, 这个高速rsyslogd 它是新的filter 类型。
    
    
    冒号必须跟着一个属性名字,一个逗号,比较操作名字来进行,另外逗号和值进行比较。
    
    
    这个值必须被引号引起来。
    
    
    有空格和tabs键在逗号之间,属性名字和区分大小写的,因此
    
    "msg" 工作, 当"MSG" 是一个争取的属性名称,简单的说,语法如下:
    
    :property, [!]compare-operation, "value"
    
    
    
    比较操作符:
    
    当前支持以下操作符:
    
    contains:
    
    
    
    检查值如果字符串提供值是包含在属性内,这里必须有一个精确的匹配,通配符是不支持的
    
    isequal
    
    提供的值和属性内容比较,那两个值 必须完全等价匹配。
    
    不同于contains 是contans 搜索值在整个属性值的任何地方,
    
    
    反之 所有的字符串必须是相等的对于 isequal. 
    
    
    因此,isequal 是很有用的对于字段像syslogtag 或者FROMHOST ,在这些情况你知道确切的内容
    
    startswith
    
    
    
    检查值是准确找到在属性值的开头,举个例子, 如果你搜索"var"
    
    
    :msg, startswith, "val"
    
    
    这个会匹配如果msg 包含"values" 是在这个消息里,但是它不会匹配如果msg 包含 “There are values in this message”
    (这种情况“contain”会匹配)
    
    值部分
    
    值是一个引用的字符串,它支持一些转义字符
    
    
    转义字符总是以一个/开始, 二外的转义字符可能被增加在未来。
    
    反斜杠字符必须是转义的,任何其他序列 然后那些概述是无效的 会导致一个不可预知的结果
    
    
    可能,"msg" 是最突出的基于属性过滤器的使用例子,它是 实际消息的文本
    
    如果你想要过滤一些消息内容(例如,指定代码的存在)的基础上,这可以很容易的实现:
    
    :msg, contains, "ID-4711"
    
    
    次过滤器会匹配当消息包含 字符串 “ID-4711”. 
    
    请注意 比较是区分大小写的,如果是“id-4711”将不会匹配
    
    :msg, regex, "fatal .* error"
    
    
    这个过滤器使用POSIX 正则表达式,如果匹配当字符串包含字符"words" fatal和“error” 
    
    
    
    获得基于 属性过滤可以有一些挑战,为了帮助你,rsyslogd 吐出所有的debug 信息对于
    
    所有基于属性的过滤器在它们评估期间。为了启动这个,运行rsyslog在后台指定-d选项
    
    
    表达式基于过滤器:
    
    基于表达式的过滤器允许过滤任意的复杂表达式, 可以包含博而至,运算和字符串操作。
    
    基于表达式是通过关键字if表明 在第一列,格式如下:
    
    if expr then action-part-of-selector-line
    
    
    if和then 是固定的关键字 必须是存在的
    
    BSD 风格的blocks:
    
    注意 rsyslog v7+不在支持BSD-style blocks 由于技术原因,因此强列不推荐使用它们
    


    
       
    
    
  • 相关阅读:
    GPS 经纬度
    TP5 分页数据加锚点
    修改layui的表单手机、邮箱验证可以为空怎么实现?
    转录调控实战 | 一文解决转录调控问题 | chIP-seq | ATAC-seq
    管家基因 | Human housekeeping genes
    各国脑计划概览
    原创
    RLE Plots: relative log expression
    Polygenic score
    皮尔逊残差 | Pearson residual
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6199146.html
Copyright © 2020-2023  润新知