Hawkular had for a while a UI with the possibility to set up Alert Triggers. As the name suggests are those triggers used to define conditions when an Alert is to be fired.
Since a while there is now the ManageIQ UI that allows to set up such triggers. And also Hawkular APM is now able to forward data into Alerting.
The other day I was doing some testing and a colleague asked me if I had already defined some triggers. I thought that I neither want to log into ManageIQ right now nor pass JSON structures via curl commands.
As I did some DSL work for metrics recently, I thought, why not set up a DSL for trigger definitions. This is work in progress right now and here are two examples
Set up a threshold trigger to fire when the value of _myvalue_ is > 3:
define trigger "MyTrigger" enabled ( threshold "myvalue" > 3 ) auto-disable
Set up a trigger on availability when it is reported as DOWN. The trigger is not enabled.
define trigger "MyTrigger" ( availability "mymetric" is DOWN )
As with my metric DSL I am implementing this in Ruby with the help of Treetop. And likewise I am integrating this in HawkFX.
At the moment it is a very crude integration via entry points in the main menu. And the DSL itself is also far from ready. I consider this an experimentation space. If it turns our successful, it may be possible to take the grammar and directly integrate it into Hawkular-Alerts, so that one can directly POST a document with a DSL fragment, which then gets turned into the internal representation.
If you are looking for code, this is available in the alert_insert branch of HawkFX.