您可以使用本地 liagent.ini 文件中 [server|<dest_id>] 部分的筛选器选项,指定代理发送到目标的信息。

此选项的格式如下:

filter = {collector_type; collector_filter; event_filter}
筛选器类型 描述
collector_type 逗号分隔的列表,用于定义收集器类型。支持的值为 filelogwinlog。如果未提供任何值,则将使用所有收集器类型。
collector_filter 以正则表达式的格式指定收集器部分的名称。例如,vcops_.* 是指以“vcops_”开头的所有收集器部分。
event_filter 事件字段筛选器使用的语法与收集器部分中允许列表或拒绝列表使用的语法相同。代理只发送将表达式计算结果为 True 或非零值的事件。空 event_filter 的计算结果始终为 True。要对事件使用 event_filter,必须在相应的收集器部分中定义一个用于字段提取的分析程序。如果由于所收集的事件中缺少字段而无法对表达式进行计算,则会丢弃该事件。

通过使用逗号将筛选器表达式分隔开,可以指定多个筛选器表达式,如下例所示:

filter= 
{winlog;Micr.*;},{filelog;apache-access;level=="error"}

如果消息满足目标的多组筛选标准,只发送一次。

表 1. 语法示例
筛选 含义

filter= {winlog;Microsoft.*;}

仅当事件名称以“Microsoft”开头时,才发送来自 winlog 收集器的事件。

filter= {winlog;Microsoft.*; eventid == 1023}

仅当事件名称以“Microsoft”开头,并且事件 ID 等于 1023 时,才发送来自 winlog 收集器的事件。

filter= {;.*;}

默认筛选器值。发送来自所有来源的全部事件。
filter= {winlog;.*;} 发送来自 winlog 部分的所有事件。
filter= {filelog;syslog;facility<5} 如果 facility 小于 5,将发送来自 [filelog|syslog] 部分的事件。[filelog|syslog] 部分必须包含一个能够提取 facility 字段的分析程序。否则,会跳过所有事件。
filter= {;;} 不匹配任何事件。可以使用此语法禁用事件转发。

以下示例向上一示例中第二个目标的配置添加一个筛选器。

 

; The second destination receives just syslog events through the plain syslog protocol.
[server|syslog-audit]
hostname=third_party_audit_management.eng.vmware.com
proto=syslog
ssl=no
filter= {filelog; syslog; }

下一个示例使用更复杂的筛选器表达式。

; This destination receives vRealize Operations Manager events if they have the level field equal
;to "error" or "warning" and they are collected by sections whose name begins with "vrops-"

[server|licf-prod1]
hostname=vrops-errors.licf.vmware.com
filter= {; vrops-.*; level == "error" || level == "warning"}

通过使用逗号将筛选器表达式分隔开,可以指定多个筛选器表达式,如下例所示。

filter= e.
{winlog;Micr.*;},{filelog;apache-access;level=="error"}