2019-07-19 09:42:01 +00:00
|
|
|
package check
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
|
|
|
|
"github.com/influxdata/influxdb"
|
|
|
|
"github.com/influxdata/influxdb/notification"
|
|
|
|
)
|
|
|
|
|
|
|
|
var _ influxdb.Check = &Deadman{}
|
|
|
|
|
|
|
|
// Deadman is the deadman check.
|
|
|
|
type Deadman struct {
|
|
|
|
Base
|
|
|
|
// seconds before deadman triggers
|
|
|
|
TimeSince uint `json:"timeSince"`
|
|
|
|
// If only zero values reported since time, trigger alert.
|
|
|
|
ReportZero bool `json:"reportZero"`
|
|
|
|
Level notification.CheckLevel `json:"level"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Type returns the type of the check.
|
|
|
|
func (c Deadman) Type() string {
|
|
|
|
return "deadman"
|
|
|
|
}
|
|
|
|
|
2019-08-07 22:34:07 +00:00
|
|
|
// GenerateFlux returns a flux script for the Deadman provided.
|
|
|
|
func (c Deadman) GenerateFlux() (string, error) {
|
|
|
|
// TODO(desa): needs implementation
|
|
|
|
return `package main
|
|
|
|
data = from(bucket: "telegraf")
|
|
|
|
|> range(start: -1m)
|
|
|
|
|
|
|
|
option task = {name: "name1", every: 1m}`, nil
|
|
|
|
}
|
|
|
|
|
2019-07-19 09:42:01 +00:00
|
|
|
type deadmanAlias Deadman
|
|
|
|
|
|
|
|
// MarshalJSON implement json.Marshaler interface.
|
|
|
|
func (c Deadman) MarshalJSON() ([]byte, error) {
|
|
|
|
return json.Marshal(
|
|
|
|
struct {
|
|
|
|
deadmanAlias
|
|
|
|
Type string `json:"type"`
|
|
|
|
}{
|
|
|
|
deadmanAlias: deadmanAlias(c),
|
|
|
|
Type: c.Type(),
|
|
|
|
})
|
|
|
|
}
|