2016-11-03 00:59:25 +00:00
|
|
|
package kapacitor
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/influxdata/chronograf"
|
|
|
|
)
|
|
|
|
|
|
|
|
var _ chronograf.Ticker = &Alert{}
|
|
|
|
|
|
|
|
// Alert defines alerting strings in template rendering
|
2016-11-03 01:50:16 +00:00
|
|
|
type Alert struct{}
|
2016-11-03 00:59:25 +00:00
|
|
|
|
|
|
|
// Generate creates a Tickscript from the alertrule
|
|
|
|
func (a *Alert) Generate(rule chronograf.AlertRule) (chronograf.TICKScript, error) {
|
|
|
|
vars, err := Vars(rule)
|
|
|
|
if err != nil {
|
|
|
|
return "", nil
|
|
|
|
}
|
2016-11-03 18:41:34 +00:00
|
|
|
data, err := Data(rule)
|
2016-11-03 00:59:25 +00:00
|
|
|
if err != nil {
|
|
|
|
return "", nil
|
|
|
|
}
|
|
|
|
trigger, err := Trigger(rule)
|
|
|
|
if err != nil {
|
|
|
|
return "", err
|
|
|
|
}
|
|
|
|
services, err := AlertServices(rule)
|
|
|
|
if err != nil {
|
|
|
|
return "", err
|
|
|
|
}
|
2016-11-04 21:28:28 +00:00
|
|
|
output, err := InfluxOut(rule)
|
|
|
|
if err != nil {
|
|
|
|
return "", err
|
|
|
|
}
|
2016-11-03 00:59:25 +00:00
|
|
|
raw := fmt.Sprintf("%s\n%s\n%s%s\n%s", vars, data, trigger, services, output)
|
2016-11-03 01:50:16 +00:00
|
|
|
tick, err := formatTick(raw)
|
|
|
|
if err != nil {
|
|
|
|
return "", err
|
|
|
|
}
|
|
|
|
if err := validateTick(tick); err != nil {
|
2016-11-03 19:21:17 +00:00
|
|
|
return tick, err
|
2016-11-03 01:50:16 +00:00
|
|
|
}
|
|
|
|
return tick, nil
|
2016-11-03 00:59:25 +00:00
|
|
|
}
|