[Hawkular-dev] [Alerts] Thoughts on the notification system

Lucas Ponce lponce at redhat.com
Mon Feb 9 03:24:34 EST 2015



> 
> 1. Contextual data
> 
> A notification has contextual data. Contextual data is comprised of:
> - alert definition data
> - data involved in the trigger (for example metrics and availability values)
>

+1
 
> 2. Notifier data
> 
> 2.1 Who is the recipient?
> 
> Email: address
> SMS: phone number
> 
> Sometimes the recipient is fixed (for example when sending email to a
> mailing-list).
> Sometimes it should be picked from user information (for example when
> sending emails to a group of users)
> 
> This information depends on the alert definition, but a default should
> be configurable for convenience.
> 
> 2.2 How should the message be sent?
> 
> Email: SMTP address/port and credentials
> SMS: Web service HTTP URL and credentials
> 
> The information depends on the tenant (in rare cases, on the alert
> definition, but let's ignore the problem for now)
> 
> 3. How should the message be formatted?
> 
> When a human is the recipient, information can be turned into text with
> a template engine (like freemarker).
> 
> Information depends on the alert definition, but a default should be
> configurable for convenience.
> 
> 4. Configuration
> 
> Notifiers may expose REST endpoints (with standardized URIs)
> 
> - default config: /emailnotifier/configuration
> 
> - alert definition level config: /emailnotifier/configuration/1
>

I am not sue if notifiers should expose directly these end-points for the configuration tasks.

I was thinking in a way where when a plugin is deployed, the plugin configuration is sent to the alert-engine component.
Then UI or consumers of alerts can access to notifiers info through the DefinitionService.

In practice, flow would be similar, but instead to use specific /emailnotifier/ just using a centralized by alerts /hawkular/alerts/notifier/email/....
 

> Example:
> 
> {
>      "to": ["paul at foobar.com", "alfred at foobar.com"],
>      "cc": ["backoffice-mw-ops at foobar.com"],
>      "subject": "Pool soon exhausted",
>      "mode": "plaintext+html"
>      "templates":
>          [{
>              name: "plaintext",
>              uri: "/emailnotifier/configuration/1/templates/plaintext"
>          },{
>              name: "html",
>              uri: "/emailnotifier/configuration/1/templates/html"
>          }]
> }
> 
> - template configs:
> 
> Example:
> 
> /emailnotifier/configuration/1/templates/plaintext
> /emailnotifier/configuration/1/templates/html
> 
> 
> I'm still not sure which component should be responsible of loading user
> information when a user (or a group of users) is selected as the recipient.
>

Good question, my main doubt if it is notifier plugin should be responsible to know this info by itself or it has to call a third-party component for that. 


> 5. Process
> 
> - Alerts sends contextual data on the bus
> - Notifier picks it up
> - Notifier loads configuration for this alert definition or the default one
> - Notifier applies the template (optional)
> - Notifier sends email or invoke sender API
> 

+1

> 6. Storage
> 
> There needs to be some shared storage where to bind configuration and
> templates to alert definitions.
> 
>

+1

We raised this concern before and if I am not wrong idea is to use H2 at this stage and change in the future.
 
> Comments?
> 
> Regards,
> Thomas
> _______________________________________________
> hawkular-dev mailing list
> hawkular-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hawkular-dev
> 


More information about the hawkular-dev mailing list