Vitrage/Blueprints/templates
Introduction
In Vitrage we plan on analyzing patterns of alarms and other system events, and perform actions when a pattern is detected. In order to support complex algorithms like RCA, deduced alarms, alarm aggregations etc., we need a way to express the conditions/triggers for the calculation and the resulted actions. We should define a language with a logical representation of, for example:
- If
- Ceilometer agent is down on host1 and
- host1 contains vm1 and
- we failed to get metrics on vm1
- Then
- Determine that the root cause of {failure to get metrics on vm1} is {Ceilometer agent down on host1}
Another example:
- If
- There is high CPU on host2 and
- host2 contains several vms
- Then
- Deduce that the hosted vms have sub-optimal performance
- Raise alarms on these vms
- Set their states to sub-optimal
The defined language should let us describe conditions on different kinds of resources, their properties and the relations between them; We should then be able to define which actions should be taken if the conditions are met, e.g. determine RCA, raise/disable alarms, set resources states, etc. The model should be generic and flexible, so defining a new rule would not require change of code.