上一主题: 使用自定义属性示例

下一主题: 转换脚本示例

案例研究 9:动态多目标

考虑示例方案:针对客户环境中的所有硬件基础架构都设置了一系列单个单个的目标,以满足其可用性要求, 使用标准建模方法时,这将是一项很难实现的任务,并且会需要对设备进行大量逻辑分组以及使用资源模型进行管理。 这些设备的目标随着时间的推移可以发生变化,这又更加增加了复杂性。 这些目标值在 CA Business Service Insight 中由转换脚本按照外部 CMDB 中存储的详细信息进行更新(关于转换脚本示例,请参阅转换脚本最佳实践示例

在本示例中,度量标准可如下所示:

每个硬件设备的可用性百分比。

有效建模的方法之一是结合使用“自定义属性”功能和其他关键功能之一“动态目标”。 这两个功能都可与组群的度量标准配合使用,以获得期望的结果。 将服务水平目标直接添加到资源中后,业务逻辑就可以将每个资源(硬件设备)的实际服务水平与相应的目标进行对比。 组群的度量标准为使用单个度量标准的每个硬件提供单独的服务遵从性数据。

因此,需要先通过将自定义属性添加到这些设备(其中所有设备都是“基础架构设备”类型的资源)的资源类型中的方式来创建自定义属性。 创建的自定义属性被称为“DeviceTarget”,并且可以从位于服务目录 > 自定义属性的菜单中添加。 注意,在创建自定义属性时,您必须将它链接到需要它的资源类型。

现在,在系统中查看资源时,可以看到新的自定义属性可用于链接到的资源类型。

各个资源都有可以更新的新字段。

在本示例中,该字段通常是由转换脚本插入/更新的。

现在,为每个资源均指定了目标,您就可以开发逻辑以执行必要的计算(确认资源更改之后)。 以下示例代码显示了如何从资源(以粗体显示)提取自定义属性值。

Option Explicit

Dim TotalTime
Dim OutageTime
Dim PeriodStart

Sub OnRegistration(dispatcher)
   dispatcher.RegisterByResource "OnDeviceOutageEvent", "DeviceOutageEvent", _
      Context.ClusterItem
End Sub

Sub OnLoad(TIME)
   TotalTime = 0
   OutageTime = 0
End Sub

Sub OnPeriodStart(TIME)
   TotalTime = 0
   OutageTime = 0
   PeriodStart = TIME
End Sub

Sub OnPeriodEnd(TIME, isComplete)
   TotalTime = Tools.NetTime(PeriodStart, TIME)
End Sub

Sub OnDeviceOutageEvent(eventDetails)
   OutageTime = OutageTime + Tools.NetTime (eventDetails ("OutageStartTime"), _
      eventDetails ("OutageEndTime"))
End Sub

Function Target
   Target = eventDetails.CustomAttribute ("DeviceTarget")
End Function

Function Result
   If TotalTime > 0 Then
      Result = (TotalTime - OutageTime) / TotalTime
   Else
      Result = Null
   End If
End Function