35 lines
812 B
Go
35 lines
812 B
Go
package kapacitor
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/influxdata/chronograf"
|
|
)
|
|
|
|
// InfluxOut creates a kapacitor influxDBOut node to write alert data to Database, RP, Measurement.
|
|
func InfluxOut(rule chronograf.AlertRule) (string, error) {
|
|
// For some of the alert, the data needs to be renamed (normalized)
|
|
// before being sent to influxdb.
|
|
|
|
rename := ""
|
|
if rule.Trigger == "deadman" {
|
|
rename = `|eval(lambda: "emitted")
|
|
.as('value')
|
|
.keep('value', messageField, durationField)`
|
|
}
|
|
return fmt.Sprintf(`
|
|
trigger
|
|
%s
|
|
|eval(lambda: float("value"))
|
|
.as('value')
|
|
.keep()
|
|
|influxDBOut()
|
|
.create()
|
|
.database(outputDB)
|
|
.retentionPolicy(outputRP)
|
|
.measurement(outputMeasurement)
|
|
.tag('alertName', name)
|
|
.tag('triggerType', triggerType)
|
|
`, rename), nil
|
|
}
|