Make the history limit a configurable flag (#308)
authorsgmitchell <steve@sgmitchell.net>
Fri, 13 Apr 2018 18:57:07 +0000 (14:57 -0400)
committerBrian Brazil <brian.brazil@robustperception.io>
Fri, 13 Apr 2018 18:57:07 +0000 (19:57 +0100)
history.go
main.go

index 8bcec657054b0f99a3857e40fa38842ba1bf932d..d567a4e1b061a73f5b71578e235c8a4203160210 100644 (file)
@@ -26,9 +26,10 @@ type result struct {
 }
 
 type resultHistory struct {
-       mu      sync.Mutex
-       nextId  int64
-       results []*result
+       mu         sync.Mutex
+       nextId     int64
+       results    []*result
+       maxResults uint
 }
 
 // Add a result to the history.
@@ -46,7 +47,7 @@ func (rh *resultHistory) Add(moduleName, target, debugOutput string, success boo
        rh.nextId++
 
        rh.results = append(rh.results, r)
-       if len(rh.results) > 100 {
+       if uint(len(rh.results)) > rh.maxResults {
                results := make([]*result, len(rh.results)-1)
                copy(results, rh.results[1:])
                rh.results = results
diff --git a/main.go b/main.go
index 3520301b3b94179c40b578868582f84dc672d8e7..238ecd45d7fe5cf0fc07cfedac6eaa0f6b7cc071 100644 (file)
--- a/main.go
+++ b/main.go
@@ -50,6 +50,7 @@ var (
        listenAddress = kingpin.Flag("web.listen-address", "The address to listen on for HTTP requests.").Default(":9115").String()
        timeoutOffset = kingpin.Flag("timeout-offset", "Offset to subtract from timeout in seconds.").Default("0.5").Float64()
        configCheck   = kingpin.Flag("config.check", "If true validate the config file and then exit.").Default().Bool()
+       historyLimit  = kingpin.Flag("history.limit", "The maximum amount of items to keep in the history.").Default("100").Uint()
 
        Probers = map[string]prober.ProbeFn{
                "http": prober.ProbeHTTP,
@@ -209,7 +210,7 @@ func main() {
        kingpin.HelpFlag.Short('h')
        kingpin.Parse()
        logger := promlog.New(allowedLevel)
-       rh := &resultHistory{}
+       rh := &resultHistory{maxResults: *historyLimit}
 
        level.Info(logger).Log("msg", "Starting blackbox_exporter", "version", version.Info())
        level.Info(logger).Log("msg", "Build context", version.BuildContext())