zfs: prometheus metrics

refs #67
This commit is contained in:
Christian Schwarz
2018-04-05 22:12:25 +02:00
parent 30057d4e59
commit 0764f8824e
3 changed files with 71 additions and 0 deletions

View File

@ -5,6 +5,7 @@ import (
"context"
"errors"
"fmt"
"github.com/prometheus/client_golang/prometheus"
"strconv"
"strings"
"time"
@ -28,6 +29,10 @@ func (t VersionType) DelimiterChar() string {
}
}
func (t VersionType) String() string {
return string(t)
}
type FilesystemVersion struct {
Type VersionType
@ -64,6 +69,9 @@ type FilesystemVersionFilter interface {
func ZFSListFilesystemVersions(fs *DatasetPath, filter FilesystemVersionFilter) (res []FilesystemVersion, err error) {
listResults := make(chan ZFSListResult)
promTimer := prometheus.NewTimer(prom.ZFSListFilesystemVersionDuration.WithLabelValues(fs.ToString()))
defer promTimer.ObserveDuration()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
go ZFSListChan(ctx, listResults,
@ -137,6 +145,9 @@ func ZFSListFilesystemVersions(fs *DatasetPath, filter FilesystemVersionFilter)
func ZFSDestroyFilesystemVersion(filesystem *DatasetPath, version FilesystemVersion) (err error) {
promTimer := prometheus.NewTimer(prom.ZFSDestroyFilesystemVersionDuration.WithLabelValues(filesystem.ToString(), version.Type.String()))
defer promTimer.ObserveDuration()
datasetPath := version.ToAbsPath(filesystem)
// Sanity check...