Each model comprises:
- Definitions of variables representing model values
- Definitions of functions that instruct the model to perform some processing or calculation
- Definitions of events the model can produce
- Definitions of bindings that tie model's properties, operations and events together allowing it to react to other objects' events or states
- Sets of business rules for decision making according to a machine-readable knowledge base
Simple monitoring systems allow direct visualization of values that were collected from devices. However, devices from different manufacturers use differing approaches for providing values with the same physical meaning.
For example, network management products are used to track the CPU load of network nodes. This simple metric is available in many different forms:
- Windows-based computers expose "spot" values of the CPU load via SNMP.
- Same Windows machines can provide WMI-based CPU load readings if SNMP is not available.
- Cisco routers provide pre-calculated CPU utilization data as 5-minute and 1-hour averages.
- HP-UX servers have counter-type values showing how many seconds the CPU has been busy since the server startup. These counters require complex processing to calculate the current load.
However, a Network Device Dashboard should have a "CPU Load" chart equally looking for all device types. A "High CPU Load" alert is also expected to behave similarly. Moreover, we'd like to build a "CPU Load Overview" report showing the current utilization of all devices in the network.
The right way to ensure the above requirements is having a numeric "CPU Load" metric in every device that provides CPU data. This metric should have the common format, but its calculation and update policy will differ depending on device types.
Using a relative model attached to all network device accounts solves the case. The model has the CPU Load variable definition, a rule set enabling automatic choice of the "right" CPU load information source, and a periodic binding connecting the rule set to the variable.