Merge pull request #252 from simonpasquier/add-cuttoff-metrics

Count the total & failed numbers of block cutoffs
This commit is contained in:
Fabian Reinartz 2018-02-09 12:28:22 +01:00 committed by GitHub
commit 5b26bd5f6f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 2 deletions

24
db.go
View file

@ -122,6 +122,8 @@ type dbMetrics struct {
reloads prometheus.Counter
reloadsFailed prometheus.Counter
compactionsTriggered prometheus.Counter
cutoffs prometheus.Counter
cutoffsFailed prometheus.Counter
tombCleanTimer prometheus.Histogram
}
@ -148,6 +150,14 @@ func newDBMetrics(db *DB, r prometheus.Registerer) *dbMetrics {
Name: "prometheus_tsdb_compactions_triggered_total",
Help: "Total number of triggered compactions for the partition.",
})
m.cutoffs = prometheus.NewCounter(prometheus.CounterOpts{
Name: "prometheus_tsdb_retention_cutoffs_total",
Help: "Number of times the database cut off block data from disk.",
})
m.cutoffsFailed = prometheus.NewCounter(prometheus.CounterOpts{
Name: "prometheus_tsdb_retention_cutoffs_failures_total",
Help: "Number of times the database failed to cut off block data from disk.",
})
m.tombCleanTimer = prometheus.NewHistogram(prometheus.HistogramOpts{
Name: "prometheus_tsdb_tombstone_cleanup_seconds",
Help: "The time taken to recompact blocks to remove tombstones.",
@ -158,6 +168,8 @@ func newDBMetrics(db *DB, r prometheus.Registerer) *dbMetrics {
m.loadedBlocks,
m.reloads,
m.reloadsFailed,
m.cutoffs,
m.cutoffsFailed,
m.compactionsTriggered,
m.tombCleanTimer,
)
@ -277,7 +289,17 @@ func (db *DB) run() {
}
}
func (db *DB) retentionCutoff() (bool, error) {
func (db *DB) retentionCutoff() (b bool, err error) {
defer func() {
if !b && err == nil {
// no data had to be cut off.
return
}
db.metrics.cutoffs.Inc()
if err != nil {
db.metrics.cutoffsFailed.Inc()
}
}()
if db.opts.RetentionDuration == 0 {
return false, nil
}

View file

@ -800,7 +800,7 @@ func TestDB_Retention(t *testing.T) {
testutil.Equals(t, 2, len(db.blocks))
// Now call rentention.
// Now call retention.
changes, err := db.retentionCutoff()
testutil.Ok(t, err)
testutil.Assert(t, changes, "there should be changes")