Change-Id: I15c7ec3f3d60417ccfea2f1ab3d7308ba83db148
4.2 KiB
Vitrage Notifier plugins - AODH
Overview
The Evaluator performs root cause analysis on the Vitrage Graph and may determine that an alarm should be created, deleted or otherwise updated. Other components are notified of such changes by the Vitrage Notifier service. Among others, Vitrage Notifier is responsible for handling Aodh Alarms.
This document describes the implementation of Vitrage Notifier infrastructure and specifically notifying Aodh on Vitrage alarms.
Design
+----------+ +-----------+ +------+ +--------+
| Vitrage | | DataSource| |Graph | | Message| +------------------+
| Evaluator|->| Queue |-->| |-------->| Bus |------>| Vitrage Notifier |
+----------+ +-----------+ +------+ | | +------------------+
| | | | |
| | +----------+ | |
| | | Aodh |---+ |
| | | notifier | |----+
| | +--| plugin | | |
| | | +----------+ | |
+--------+ | +-----------+ |
| +------------+
+------------------+ |
| Aodh |<----------------------+
+------------------+
...
DeducedAlarmNotifier class will be subscribed to entity graph notifications. Whenever a vitrage deduced alarm is added to the graph it will post a message to the message bus. The processor will hold an instance of the DeducedAlarmNotifier class and will subscribe this instance to entity graph notifications.
The VitrageNotifier is a new service that listens to the bus for internal vitrage notifications, then can call all the relevant notifier plugins.
- Deduced Alarm created by the Evaluator
- Graph vertex added/updated
- DeducedAlarmNotifier write to message bus
- VitrageNotifierService receives the event and calls all plugins
- Aodh plugin - using the ceilometer client, creates an event in aodh (with some metadata params in the query)
Deduced Alarms bus notifications
Vitrage Evaluator will create a deduced alarm, sending it to the data source queue Vitrage Evaluator will use the vitrage.graph message bus topic, and will post messages as follows:
- message of type vitrage.deduce_alarm.activate :
- name - is the alarm name in vitrage
- severity - is the alarm severity
- affected_resource_id - is the openstack id of the resource on which the alarm was raised
- vitrage.deduce_alarm.deactivate
- id - is the alarm id
Notifier
- Is a new running service
- Receives notifications from the message bus
- Holds instances of all the plugins
- Upon a received notification, calls 'notify(msg)' for all the plugins
- Each plugin is responsible of how and whether to process the notification
Aodh Plugin
Vitrage alarms should be reflected as possible in Aodh. the aodh plugin has ceilometer client by which it can send rest calls to aodh
Handle vitrage.deduce_alarm.activate:
Create an event alarm with the specified severity, where the alarm name is vitrage_alarm_name+resource_id so to be unique
- Message does not contain aodh alarm id:
- plugin will create a new aodh alarm
- alarm type - event
- alarm status - alarm
- query contain resource_id, vitrage_id fields
- Message contains aodh alarm id
- plugin will update the aodh alarm status to alarm
Handle vitrage.deduce_alarm.deactivate:
delete an event alarm with the specified id
- message will contain the aodh alarm id - plugin will update the alarm status to ok
- name - is the alarm name in vitrage
- severity - is the alarm severity
- affected_resource_id - is the openstack id of the resource on which the alarm was raised