diff --git a/smtpd/listener.go b/smtpd/listener.go index 5619a86..b0e40b7 100644 --- a/smtpd/listener.go +++ b/smtpd/listener.go @@ -141,6 +141,7 @@ func metricsTicker(t *time.Ticker) { expErrorsHist.Set(pushMetric(errorsHist, expErrorsTotal)) expWarnsHist.Set(pushMetric(warnsHist, expWarnsTotal)) expRetentionDeletesHist.Set(pushMetric(retentionDeletesHist, expRetentionDeletesTotal)) + expRetainedHist.Set(pushMetric(retainedHist, expRetainedCurrent)) } } diff --git a/smtpd/retention.go b/smtpd/retention.go index 44c3783..5deba32 100644 --- a/smtpd/retention.go +++ b/smtpd/retention.go @@ -14,12 +14,15 @@ var retentionScanCompletedMu sync.RWMutex var expRetentionDeletesTotal = new(expvar.Int) var expRetentionPeriod = new(expvar.Int) +var expRetainedCurrent = new(expvar.Int) // History of certain stats var retentionDeletesHist = list.New() +var retainedHist = list.New() // History rendered as comma delim string var expRetentionDeletesHist = new(expvar.String) +var expRetainedHist = new(expvar.String) func StartRetentionScanner(ds DataStore) { cfg := config.GetDataStoreConfig() @@ -62,6 +65,7 @@ func doRetentionScan(ds DataStore, maxAge time.Duration, sleep time.Duration) er return err } + retained := 0 for _, mb := range mboxes { messages, err := mb.GetMessages() if err != nil { @@ -77,6 +81,8 @@ func doRetentionScan(ds DataStore, maxAge time.Duration, sleep time.Duration) er } else { expRetentionDeletesTotal.Add(1) } + } else { + retained++ } } // Sleep after completing a mailbox @@ -84,6 +90,7 @@ func doRetentionScan(ds DataStore, maxAge time.Duration, sleep time.Duration) er } setRetentionScanCompleted(time.Now()) + expRetainedCurrent.Set(int64(retained)) return nil } @@ -112,4 +119,6 @@ func init() { rm.Set("DeletesHist", expRetentionDeletesHist) rm.Set("DeletesTotal", expRetentionDeletesTotal) rm.Set("Period", expRetentionPeriod) + rm.Set("RetainedHist", expRetainedHist) + rm.Set("RetainedCurrent", expRetainedCurrent) } diff --git a/themes/integral/templates/root/status.html b/themes/integral/templates/root/status.html index fc1cb12..d55c2f6 100644 --- a/themes/integral/templates/root/status.html +++ b/themes/integral/templates/root/status.html @@ -53,7 +53,8 @@ } } - function setHistory(name, value) { + // Show spikes for numbers that only increase + function setHistoryOfActivity(name, value) { var h = value.split(",") var prev = parseInt(h[0]) for (i=0; i Retention Period: - {{if .retentionMinutes}} - . - {{else}} - Disabled - {{end}} + {{if .retentionMinutes}} + . + {{else}} + Disabled + {{end}} Retention Scan: - {{if .retentionMinutes}} - Completed . ago - {{else}} - Disabled - {{end}} + {{if .retentionMinutes}} + Completed . ago + {{else}} + Disabled + {{end}} @@ -256,6 +268,12 @@ (60min) + + Currently Retained: + . + + (60min) +