Thomas Segismont <mailto:tsegismo@redhat.com>
February 6, 2015 at 7:17 AM
Hi,
I've been thinking about the alert notification system lately.
What's the information needed to send a notification?
How to convert the information into text when a human is the recipient?
How to configure the system?
How to make it fit into the Hawkular suite?
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)
Many times there are symptoms of a problem that are seen through
alerts. If there are many alerts happening around the same trigger
time, should we be adding pointers to other potentially related alerts
to help users diagnose the root cause faster?
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.
Are we considering alert escalation? Setting up a
list that the alerts
go to by default, and then if they are not resolved by some configurable
SLA, they are then sent to another group of people to raise the
awareness of the problem?
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.
Can we do full HTML format (maybe txt vs. HTML
configurable). It would
be nice to add links directly into the web console for that resource
that alerted so users can very quickly click through to investigate the
problem.
4. Configuration
Notifiers may expose REST endpoints (with standardized URIs)
- default config: /emailnotifier/configuration
- alert definition level config: /emailnotifier/configuration/1
Example:
{
"to": ["paul(a)foobar.com", "alfred(a)foobar.com"],
"cc": ["backoffice-mw-ops(a)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.
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
6. Storage
There needs to be some shared storage where to bind configuration and
templates to alert definitions.
Comments?
Regards,
Thomas
_______________________________________________
hawkular-dev mailing list
hawkular-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hawkular-dev
--
Catherine Robson
User Experience Design
Red Hat JBoss Middleware
c: 978-944-3825