Events are at the heart of Maira's workflow execution platform. Events indicate something happening anywhere in any app supported by Maira. Users can trigger any workflows when an event is received by Maira.
Maira shows these events in a bar chart right on its dashboard as seen in the picture below. From there, you can drill down on which other days/times this event has occured.
In the event table shown below the bar chart, you can see exact occurence of each event in the selected time period and sort on various fields.
Maira can receive events as a webhook from many different applications, such as Prometheus, Amazon CloudWatch, Google StackDriver, etc. Maira's event manager authenticates each message from any such webhook with available authentication methods, such as OAuth2.0, Basic Authentication etc before accepting any such requests. This protects users from any unauthorized requests triggering workflows in Maira.
Triggering workflows from events
You can set any workflow to be triggered when an event is received. The workflows attached to the event can be edited by clicking on the + icon. This should open up the workflow attachement dialog box where you can add or remove workflows that will be triggered next time this event is received.
If you want to execute a workflow manually for an event that has occured already, click on the icon and select any workflow to execute.
When an event is received by Maira, it is converted into a
Maira Event and stored in our DataBase. Standard fields such as event name, timestamp, severity etc are extracted from the received event. All other fields are stored as labels in the
Event object. When a workflow is executed for an event, this entire object is passed to the workflow as a JSON object. If you want to see the details of the event object that will be passed to the workflow, then click on the event occurrence to see the event few different formats (Human readable, JSON or YAML)
With the above event example, the fields can be accessed using mpl JSON syntax. E.g.
input.severity will be
input.labels.consumer will be