44 lines
2.7 KiB
Go
44 lines
2.7 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"github.com/prometheus/client_golang/prometheus"
|
||
|
)
|
||
|
|
||
|
type Metrics struct {
|
||
|
ArchiveCount prometheus.GaugeVec
|
||
|
LastArchiveTime prometheus.GaugeVec
|
||
|
LastModified prometheus.GaugeVec
|
||
|
TotalChunks prometheus.GaugeVec
|
||
|
TotalCsize prometheus.GaugeVec
|
||
|
TotalSize prometheus.GaugeVec
|
||
|
TotalUniqueChunks prometheus.GaugeVec
|
||
|
UniqueCsize prometheus.GaugeVec
|
||
|
UniqueSize prometheus.GaugeVec
|
||
|
}
|
||
|
|
||
|
func NewMetrics(reg prometheus.Registerer) *Metrics {
|
||
|
metrics := &Metrics{
|
||
|
ArchiveCount: *prometheus.NewGaugeVec(prometheus.GaugeOpts{Namespace: "borg", Subsystem: "repository", Name: "archive_count", Help: "Number of archive for this repository"}, []string{"repo_name"}),
|
||
|
LastArchiveTime: *prometheus.NewGaugeVec(prometheus.GaugeOpts{Namespace: "borg", Subsystem: "repository", Name: "last_archive", Help: "UNIX timestamp of the last archive"}, []string{"repo_name"}),
|
||
|
LastModified: *prometheus.NewGaugeVec(prometheus.GaugeOpts{Namespace: "borg", Subsystem: "repository", Name: "last_modified", Help: "Last modified UNIX timestamp"}, []string{"repo_name"}),
|
||
|
TotalChunks: *prometheus.NewGaugeVec(prometheus.GaugeOpts{Namespace: "borg", Subsystem: "repository", Name: "total_chunks", Help: "Number of chunks"}, []string{"repo_name"}),
|
||
|
TotalCsize: *prometheus.NewGaugeVec(prometheus.GaugeOpts{Namespace: "borg", Subsystem: "repository", Name: "total_csize", Help: "Total compressed and encrypted size of all chunks"}, []string{"repo_name"}),
|
||
|
TotalSize: *prometheus.NewGaugeVec(prometheus.GaugeOpts{Namespace: "borg", Subsystem: "repository", Name: "total_size", Help: "Total uncompressed size of all chunks"}, []string{"repo_name"}),
|
||
|
TotalUniqueChunks: *prometheus.NewGaugeVec(prometheus.GaugeOpts{Namespace: "borg", Subsystem: "repository", Name: "total_unique_chunks", Help: "Number of unique chunks"}, []string{"repo_name"}),
|
||
|
UniqueCsize: *prometheus.NewGaugeVec(prometheus.GaugeOpts{Namespace: "borg", Subsystem: "repository", Name: "unique_csize", Help: "Compressed and encrypted size of all chunks"}, []string{"repo_name"}),
|
||
|
UniqueSize: *prometheus.NewGaugeVec(prometheus.GaugeOpts{Namespace: "borg", Subsystem: "repository", Name: "unique_size", Help: "Uncompressed size of all chunks"}, []string{"repo_name"}),
|
||
|
}
|
||
|
|
||
|
reg.MustRegister(metrics.ArchiveCount)
|
||
|
reg.MustRegister(metrics.LastArchiveTime)
|
||
|
reg.MustRegister(metrics.LastModified)
|
||
|
reg.MustRegister(metrics.TotalChunks)
|
||
|
reg.MustRegister(metrics.TotalCsize)
|
||
|
reg.MustRegister(metrics.TotalSize)
|
||
|
reg.MustRegister(metrics.TotalUniqueChunks)
|
||
|
reg.MustRegister(metrics.UniqueCsize)
|
||
|
reg.MustRegister(metrics.UniqueSize)
|
||
|
|
||
|
return metrics
|
||
|
}
|