vRealize Operations Manager 包括可以在超级指标公式中使用的函数和运算符。这些函数可能是循环函数,也可能是单一函数。

循环函数

循环函数可对多个值进行计算。
表 1. 循环函数
功能 描述
avg 所收集值的平均值。
combine 将所含对象的所有衡量指标值组合到单一衡量指标时间轴中。
count 所收集值的数目。
max 所收集值的最大值。
min 所收集值的最小值。
sum 所收集值的总和。
注: vRealize Operations Manager 5.x 包括两个求和函数: sum (expr)sumN (expr, depth)vRealize Operations Manager 6.x 包括一个求和函数: sum (expr)。默认情况下,depth 设置为 depth=1。有关设置 depth 的更多信息,请参阅 创建超级指标

循环函数参数

循环函数返回对象或对象类型的属性或衡量指标值。属性是元数据,描述要从对象中收集的适配器的衡量指标。衡量指标是属性的实例。参数语法定义所需的结果。

例如,CPU 利用率是虚拟机对象的一个属性。如果虚拟机具有多个 CPU,每个 CPU 的 CPU 利用率都是一个衡量指标实例。如果虚拟机具有一个 CPU,则属性或衡量指标的函数返回相同的结果。

表 2. 循环函数格式
参数语法示例 描述
funct(${this, metric =a|b:optional_instance|c}) 返回已将超级指标分配到的对象的特定衡量指标的单一数据点。此超级指标不获取该对象的子项或父项中的值。
funct(${this, attribute=a|b:optional_instance|c}) 返回已将超级指标分配到的对象的属性的一组数据点。此超级指标不获取该对象的子项或父项中的值。
funct(${adaptertype=adaptkind, objecttype=reskind, resourcename=resname, identifiers={id1=val1id2=val2,…}, metric=a|b:instance|c}) 返回参数中指定的 resname 的特定衡量指标的单一数据点。此超级指标不获取该对象的子项或父项中的值。
funct(${adaptertype=adaptkind, objecttype=reskind, resourcename=resname, identifiers={id1=val1, id2=val2,…}, attribute=a|b:optional_instance|c}) 返回一组数据点。此函数迭代参数中指定的 resname 的属性。此超级指标不获取该对象的子项或父项中的值。
funct(${adaptertype=adaptkind, objecttype=reskind, depth=dep}, metric=a|b:optional_instance|c}) 返回一组数据点。此函数迭代参数中指定的 reskind 的衡量指标。此超级指标获取子项(深度 > 0)或父项(深度 < 0)中的值,其中的深度描述关系链中的对象位置。

例如,典型的关系链包括数据中心、集群、主机和虚拟机。数据中心位于顶部,而虚拟机位于底部。如果已为集群分配此超级指标,并且函数定义包括深度 = 2,则超级指标会获取虚拟机中的值。如果函数定义包括深度 = -1,则超级指标会从数据中心获取值。

funct(${adaptertype=adaptkind, objecttype=reskind, depth=dep}, attribute=a|b:optional_instance|c}) 返回一组数据点。此函数迭代参数中指定的 reskind 的属性。此超级指标获取子项(深度 > 0)或父项(深度 < 0)对象中的值。

例如,avg(${adaptertype=VMWARE, objecttype=VirtualMachine, attribute=cpu|usage_average, depth=1}) 会通过 vCenter 适配器找到的类型为 VirtualMachine 的所有对象的 cpu|usage_average 属性计算所有衡量指标实例的平均值。vRealize Operations Manager 可搜索您分配了超级指标的对象类型下一级的对象。

单一函数

单一函数仅对一个值或一对值进行计算。

表 3. 单一函数
功能 格式 描述
abs abs(x) x 的绝对值。x 可以是任意浮点数。
acos acos(x) x 的反余弦。
asin asin(x) x 的反正弦。
atan atan(x) x 的反正切。
ceil ceil(x) 大于或等于 x 的最小整数。
cos cos(x) x 的余弦。
cosh cosh(x) x 的双曲余弦。
exp exp(x) e 的 x 次幂。
floor floor(x) 小于或等于 x 的最大整数。
log log(x) x 的自然对数(底为 x)。
log10 log10(x) x 的常用对数(底为 10)。
pow pow(x,y) x 的 y 次幂。
rand rand() 生成大于或等于 0.0 且小于 1.0 的伪随机浮点数。
sin sin(x) x 的正弦。
sinh sinh(x) x 的双曲正弦。
sqrt sqrt(x) x 的平方根。
tan tan(x) x 的正切。
tanh tanh(x) x 的双曲正切。

运算符

运算符是要在函数之间包含或插入的数学符号和文本。

表 4. 数字运算符
运算符 描述
+
-
*
/
% 取模
== 等于
! = 不等于
< 小于
<= 小于或等于
> 大于
>= 大于或等于
||
&&
!
? : 三元运算符。if/then/else

例如:conditional_expression ? expression_if_condition_is_true : expression_if_condition_is_false

有关三元运算符的更多信息,请参见 增强您的超级指标

( ) 括号
[ ] 在表达式数组中使用
[x, y, z] 一个包含 x、y、z 的数组。例如,min([x, y, z])
表 5. 字符串运算符
字符串运算符 描述
equals 如果衡量指标/属性字符串值等于指定的字符串,则返回 true。
contains 如果衡量指标/属性字符串值包含指定的字符串,则返回 true。
startsWith 如果衡量指标/属性字符串值以指定的前缀开头,则返回 true。
endsWith 如果衡量指标/属性字符串值以指定的后缀结尾,则返回 true。
!equals 如果衡量指标/属性字符串值不等于指定的字符串,则返回 true。
!contains 如果衡量指标/属性字符串值不包含指定的字符串,则返回 true。
!startsWith 如果衡量指标/属性字符串值不是以指定的前缀开头,则返回 true。
!endsWith 如果衡量指标/属性字符串值不是以指定的后缀结尾,则返回 true。
注: 字符串运算符仅在“where”条件中有效。例如: ${this, metric=summary|runtime|isIdle, where = "System Properties|resource_kind_type !contains GENERAL"}