Make resolve timeout configurable
This commit is contained in:
parent
9fbc76a52f
commit
00b8a2ad03
16
api.go
16
api.go
|
@ -33,10 +33,11 @@ import (
|
|||
|
||||
// API provides registration of handlers for API routes.
|
||||
type API struct {
|
||||
alerts provider.Alerts
|
||||
silences provider.Silences
|
||||
config string
|
||||
uptime time.Time
|
||||
alerts provider.Alerts
|
||||
silences provider.Silences
|
||||
config string
|
||||
resolveTimeout time.Duration
|
||||
uptime time.Time
|
||||
|
||||
groups func() AlertOverview
|
||||
|
||||
|
@ -79,11 +80,12 @@ func (api *API) Register(r *route.Router) {
|
|||
}
|
||||
|
||||
// Update sets the configuration string to a new value.
|
||||
func (api *API) Update(config string) {
|
||||
func (api *API) Update(config string, resolveTimeout time.Duration) {
|
||||
api.mtx.Lock()
|
||||
defer api.mtx.Unlock()
|
||||
|
||||
api.config = config
|
||||
api.resolveTimeout = resolveTimeout
|
||||
}
|
||||
|
||||
type errorType string
|
||||
|
@ -193,7 +195,7 @@ func (api *API) legacyAddAlerts(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
if alert.EndsAt.IsZero() {
|
||||
alert.Timeout = true
|
||||
alert.EndsAt = alert.StartsAt.Add(ResolveTimeout)
|
||||
alert.EndsAt = alert.StartsAt.Add(api.resolveTimeout)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -226,7 +228,7 @@ func (api *API) addAlerts(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
if alert.EndsAt.IsZero() {
|
||||
alert.Timeout = true
|
||||
alert.EndsAt = alert.StartsAt.Add(ResolveTimeout)
|
||||
alert.EndsAt = alert.StartsAt.Add(api.resolveTimeout)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ import (
|
|||
"path/filepath"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/prometheus/common/model"
|
||||
"gopkg.in/yaml.v2"
|
||||
|
@ -181,6 +182,8 @@ func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error {
|
|||
|
||||
// DefaultGlobalConfig provides global default values.
|
||||
var DefaultGlobalConfig = GlobalConfig{
|
||||
ResolveTimeout: model.Duration(5 * time.Minute),
|
||||
|
||||
PagerdutyURL: "https://events.pagerduty.com/generic/2010-04-15/create_event.json",
|
||||
OpsGenieAPIHost: "https://api.opsgenie.com/",
|
||||
}
|
||||
|
@ -188,6 +191,10 @@ var DefaultGlobalConfig = GlobalConfig{
|
|||
// GlobalConfig defines configuration parameters that are valid globally
|
||||
// unless overwritten.
|
||||
type GlobalConfig struct {
|
||||
// ResolveTimeout is the time after which an alert is declared resolved
|
||||
// if it has not been updated.
|
||||
ResolveTimeout model.Duration `yaml:"resolve_timeout"`
|
||||
|
||||
SMTPFrom string `yaml:"smtp_from"`
|
||||
SMTPSmarthost string `yaml:"smtp_smarthost"`
|
||||
SlackURL string `yaml:"slack_url"`
|
||||
|
|
|
@ -15,11 +15,6 @@ import (
|
|||
"github.com/prometheus/alertmanager/types"
|
||||
)
|
||||
|
||||
// ResolveTimeout is the time after which an alert is declared resolved
|
||||
// if it has not been updated.
|
||||
// TODO(fabxc): Make it configurable.
|
||||
const ResolveTimeout = 5 * time.Minute
|
||||
|
||||
// Dispatcher sorts incoming alerts into aggregation groups and
|
||||
// assigns the correct notifiers to each.
|
||||
type Dispatcher struct {
|
||||
|
|
3
main.go
3
main.go
|
@ -27,6 +27,7 @@ import (
|
|||
"strings"
|
||||
"syscall"
|
||||
tmpltext "text/template"
|
||||
"time"
|
||||
|
||||
"github.com/prometheus/common/log"
|
||||
"github.com/prometheus/common/route"
|
||||
|
@ -133,7 +134,7 @@ func main() {
|
|||
return err
|
||||
}
|
||||
|
||||
api.Update(conf.String())
|
||||
api.Update(conf.String(), time.Duration(conf.Global.ResolveTimeout))
|
||||
|
||||
tmpl, err = template.FromGlobs(conf.Templates...)
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue