1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2025-12-18 18:17:03 +00:00

Track retained messages over time

This commit is contained in:
James Hillyerd
2013-10-25 15:24:30 -07:00
parent 47cba08c33
commit 483ddc1c5e
3 changed files with 44 additions and 16 deletions

View File

@@ -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))
}
}

View File

@@ -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)
}

View File

@@ -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<h.length; i++) {
@@ -71,6 +72,15 @@
}
}
// Show up/down for numbers that can decrease
function setHistoryOfCount(name, value) {
var h = value.split(",")
el = $('#s-' + name)
if (el) {
el.sparkline(h)
}
}
function metric(name, value, filter, chartable) {
if (chartable) {
appendHistory(name, value)
@@ -101,15 +111,17 @@
// Server-side history
metric('smtpReceivedTotal', data.smtp.ReceivedTotal, numberFilter, false)
setHistory('smtpReceivedTotal', data.smtp.ReceivedHist)
setHistoryOfActivity('smtpReceivedTotal', data.smtp.ReceivedHist)
metric('smtpConnectsTotal', data.smtp.ConnectsTotal, numberFilter, false)
setHistory('smtpConnectsTotal', data.smtp.ConnectsHist)
setHistoryOfActivity('smtpConnectsTotal', data.smtp.ConnectsHist)
metric('smtpWarnsTotal', data.smtp.WarnsTotal, numberFilter, false)
setHistory('smtpWarnsTotal', data.smtp.WarnsHist)
setHistoryOfActivity('smtpWarnsTotal', data.smtp.WarnsHist)
metric('smtpErrorsTotal', data.smtp.ErrorsTotal, numberFilter, false)
setHistory('smtpErrorsTotal', data.smtp.ErrorsHist)
setHistoryOfActivity('smtpErrorsTotal', data.smtp.ErrorsHist)
metric('retentionDeletesTotal', data.retention.DeletesTotal, numberFilter, false)
setHistory('retentionDeletesTotal', data.retention.DeletesHist)
setHistoryOfActivity('retentionDeletesTotal', data.retention.DeletesHist)
metric('retainedCurrent', data.retention.RetainedCurrent, numberFilter, false)
setHistoryOfCount('retainedCurrent', data.retention.RetainedHist)
}
function loadMetrics() {
@@ -233,21 +245,21 @@
<tr>
<th>Retention Period:</th>
<td colspan="3">
{{if .retentionMinutes}}
<span id="m-retentionPeriod">.</span>
{{else}}
Disabled
{{end}}
{{if .retentionMinutes}}
<span id="m-retentionPeriod">.</span>
{{else}}
Disabled
{{end}}
</td>
</tr>
<tr>
<th>Retention Scan:</th>
<td colspan="3">
{{if .retentionMinutes}}
Completed <span id="m-retentionScanCompleted">.</span> ago
{{else}}
Disabled
{{end}}
{{if .retentionMinutes}}
Completed <span id="m-retentionScanCompleted">.</span> ago
{{else}}
Disabled
{{end}}
</td>
</tr>
<tr>
@@ -256,6 +268,12 @@
<td class="sparkline"><span id="s-retentionDeletesTotal"></span></td>
<td>(60min)</td>
</tr>
<tr>
<th>Currently Retained:</th>
<td><span id="m-retainedCurrent">.</span></td>
<td class="sparkline"><span id="s-retainedCurrent"></span></td>
<td>(60min)</td>
</tr>
</table>
<p class="last">&nbsp;</p>
</div>