表达式

 

适用对象:System Center 2012 R2 Operations Manager, System Center 2012 - Operations Manager, System Center 2012 SP1 - Operations Manager

用于创建监视器和规则的向导通常要求你输入一个表达式,该表达式指定所收集的数据的条件。 只有当表达式为 True 时才将应用监视器或规则。

例如,你可能有一个为特定事件创建警报的规则。 你不想针对写入到事件日志的每个事件都发出警报,因此你在表达式中指定了事件编号和事件来源。 此规则将分析写入到事件日志的所有事件,但是它将仅为具有指定来源和编号的那些事件生成警报。

表达式可以是只具有一个条件的简单表达式,或者可以是具有多个条件和复杂逻辑的复合表达式。 你创建的大多数表达式将只具有一两个条件,并且很少使用复杂逻辑。

对于不同类型的数据源,用于表达式的语法也将不同。 对于某些数据源,你将能够选择对话框条件,利用这些对话框,你不必了解基本语法。 对于其他数据源,必须了解相应的语法并按该语法进行输入。 以下部分为你提供了每种数据源的条件的详细信息。

条件语法

一个条件由“参数名称”、“运算符”和“值”组成。 以下部分详细说明了其中每一项。

参数名称

“参数名称”指定规则或监视器的数据源的参数。 根据所收集的数据类型的不同,参数名称的语法将有所不同。 根据所收集的数据类型的不同,参数名称的语法将有所不同。

以下部分提供了不同类型的数据源的参数名称语法。

Windows 事件

Windows 事件在表达式对话框中提示你选择单独的属性,因此你通常不必了解实际语法。Windows 事件中有属性及其说明的列表。

属性名称的下拉列表中未包括事件说明。 通过键入 EventDescription 可以来使用它。 但是在使用“事件描述”之前,应该验证要在描述中使用的信息在参数中是否可用。 事件描述通常由标准文本以及通过参数包括的唯一信息所组成。 参数比完整的描述更加有效,因为参数包含特定的一段信息。

文本日志

文本日志未提供参数名称提示,因此,你需要使用合适的语法键入参数名称。 有以下两种类型的文本日志:通用文本日志(其中每一行均被处理为单一条目)和通用 CSV 文本日志(使用分隔符分隔每个条目的字段)。

对于通用文本日志,将使用以下语法和单个参数来引用整个条目:

Params/Param[1]

对于通用 CSV 文本日志,将使用条目的每个字段的单独参数以及以下语法来引用条目的每个字段,其中 # 表示从 1 开始的字段编号:

Params/Param[#]

事件表达式中提供了关于文本日志表达式的更多详细信息。

WMI 事件

WMI 事件未提供参数名称提示,因此,你需要使用合适的语法键入参数名称。

根据正在监视的事件类型的不同,可用于 WMI 事件的属性将有所不同。 数据将采用属性包的形式,属性包具有一个或多个 WMI 类实例的属性集合。 使用查询(使用 __InstanceCreationEvent 或 __InstanceDeletionEvent)创建的 WMI 事件将具有一个名为 TargetInstance 的单一集合,该集合包含所创建或删除的实例。 使用 __InstanceModificationEvent 创建的 WMI 事件将具有一个名为 PreviousInstance 的附加集合。

WMI 事件的属性的语法如下所示:

Collection[@Name='TargetInstance']/Property[@Name='Caption']

WMI 事件中提供了关于 WMI 事件的更多详细信息。

系统日志事件

系统日志事件未提供参数名称提示,因此,你需要使用合适的语法键入参数名称。 系统日志事件的属性的语法只不过是属性的名称。系统日志事件中列出了这些属性。

SNMP 事件

SNMP 探测和陷阱未提供参数名称提示,因此,你需要使用合适的语法键入参数名称。 SNMP 探测或陷阱的标头中属性的语法只不过是属性的名称。

使用单个 OID 时:

SnmpVarBinds/SnmpVarBind/ElementName

当你具有多个 OID 并且想要按其数字顺序引用每个 OID 时, 第一个 OID 为 1,第二个为 2,依此类推:

SnmpVarBinds/SnmpVarBind[#]/ElementName

当你具有多个 OID 并且想要按特定 OID 引用每个 OID 时:

SnmpVarBinds/SnmpVarBind[OID="OID"]/ElementName

SNMP 事件中列出了关于 SNMP 事件的更多详细信息。

脚本

脚本未提供参数名称提示,因此,你需要使用合适的语法键入参数名称。 监视脚本以包括一个或多个值的属性包的形式输出信息。 参数使用以下语法指定属性包内其中一个值的名称:

Property[@Name="PropertyName"]

脚本监视器和规则中提供了关于监视脚本的更多详细信息。

运算符

“运算符”指定将在“参数名称”中所指定数据属性的值和“值”中所指定的值之间执行的比较。 下表中显示了可能的值。

运算符

描述

等于

数据中指定的字符串或数字与“值”中指定的字符串或数字完全相等。 如果这是字符串值,则比较不区分大小写。

不等于

数据中指定的字符串或数字与“值”中指定的字符串或数字不完全相等。 如果这是字符串值,则比较不区分大小写。

大于

数据中的值大于“值”中所指定的数字。

大于或等于

数据中的值大于或等于“值”中指定的数字。

小于

数据中的值小于“值”中所指定的数字。

小于或等于

数据中的值小于或等于“值”中所指定的数字。

包含

“值”中所指定的字符串出现在数据中的某处。

不包含

“值”中所指定的字符串未出现在数据中的某处。

匹配通配符

“值”中所指定的字符串与包括通配符的字符串匹配。 通配符为 *,表示任意数量的字符。

不匹配通配符

“值”中所指定的字符串与包括通配符的字符串不匹配。 通配符为 *,表示任意数量的字符。

匹配正则表达式

数据中的字符串与“值”中所指定的正则表达式匹配。

不匹配正则表达式

数据中的字符串与“值”中所指定的正则表达式不匹配。

值可能是在“值”字段中键入的特定文本或数字。 例如,特定事件可能由其来源和编号定义。 这些都是可在“值”字段中键入的常数值。

值也可能来自于目标对象上的属性。 可以使用目标对象或对象的任何父项上的任何属性。 你可以通过在“发现清单”视图中查看对象来查看任何对象的属性及其值的列表。

目标属性对于不同对象具有不同的值。 例如,你可能使用“逻辑磁盘(服务器)”作为目标,并在条件中需要磁盘的总大小。 逻辑磁盘具有一个名为“大小(MB)”的属性,该属性存储磁盘的总大小。 此属性的值对于管理组中的不同磁盘不同。 当你使用目标变量作为值时,将针对每个对象单独对其进行求值。

你可以通过单击条件行右侧的省略号按钮来选择目标属性。 这将显示你为目标选择的对象以及该对象的父项的所有可用属性的列表。 如果你选择其中一个属性,则会将相应的目标变量添加到条件中。

示例

Windows 事件

以下表达式标识了一个来源为 Contoso 且事件编号为 100 的 Windows 事件。

参数名称

运算符

AND 组(所有这些都为 True)

事件 ID

等于

100

事件来源

等于

Contoso

以下表达式标识了一个来源为 Contoso、事件编号为 100 且参数 1 中有单词“Error”的 Windows 事件。

参数名称

运算符

AND 组(所有这些都为 True)

事件 ID

等于

100

事件来源

等于

Contoso

参数 1

等于

错误

以下表达式标识了一个来源为 Contoso、事件编号为 100 且描述中的任何地方有单词“Error”的 Windows 事件。

参数名称

运算符

AND 组(所有这些都为 True)

事件 ID

等于

100

事件来源

等于

Contoso

EventDescription

包含

错误

文本日志

以下表达式标识了通用文本日志中包含单词“Error”的条目。

参数名称

运算符

Params/Param[1]

包含

错误

以下表达式标识了通用 csv 文本日志中第三个字段包含单词“Error”的条目。

参数名称

运算符

Params/Param[3]

等于

错误

脚本

以下表达式标识了名为“PerfValue”的脚本中介于 10 和 20 之间的数字值。

参数名称

运算符

AND 组(所有这些都为 True)

Property[@Name="PerfValue"]

大于

10

Property[@Name="PerfValue"]

小于

20