Compare commits

..

No commits in common. "main" and "0.1.0" have entirely different histories.
main ... 0.1.0

5 changed files with 10 additions and 64 deletions

View file

@ -1,14 +0,0 @@
package main
type MetricsBuffer struct {
RepoName string
ArchiveCount float64
LastArchiveTime float64
LastModified float64
TotalChunks float64
TotalCsize float64
TotalSize float64
TotalUniqueChunks float64
UniqueCsize float64
UniqueSize float64
}

View file

@ -34,7 +34,6 @@ func (info *Info) LastmodUnix() float64 {
func GetInfo(path string) (*Info, error) { func GetInfo(path string) (*Info, error) {
cmd := exec.Command("borg", "info", "--json", path) cmd := exec.Command("borg", "info", "--json", path)
cmd.Env = append(cmd.Env, "BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes") cmd.Env = append(cmd.Env, "BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes")
cmd.Env = append(cmd.Env, "BORG_RELOCATED_REPO_ACCESS_IS_OK=yes")
stdout, err := cmd.Output() stdout, err := cmd.Output()
if err != nil { if err != nil {

View file

@ -28,7 +28,6 @@ func (list *List) LastArchiveUnix() float64 {
func GetList(path string) (*List, error) { func GetList(path string) (*List, error) {
cmd := exec.Command("borg", "list", "--json", path) cmd := exec.Command("borg", "list", "--json", path)
cmd.Env = append(cmd.Env, "BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes") cmd.Env = append(cmd.Env, "BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes")
cmd.Env = append(cmd.Env, "BORG_RELOCATED_REPO_ACCESS_IS_OK=yes")
stdout, err := cmd.Output() stdout, err := cmd.Output()
if err != nil { if err != nil {

25
main.go
View file

@ -14,7 +14,7 @@ import (
"github.com/prometheus/client_golang/prometheus/promhttp" "github.com/prometheus/client_golang/prometheus/promhttp"
) )
const VERSION = "1.0.0" const VERSION = "0.1.0"
const LISTEN_ADDR = ":9403" const LISTEN_ADDR = ":9403"
const INTERVAL = 30 * time.Minute const INTERVAL = 30 * time.Minute
@ -62,7 +62,6 @@ func RecordMetrics(m Metrics) {
log.Fatalln(err) log.Fatalln(err)
} }
buffer := []MetricsBuffer{}
for _, entry := range entries { for _, entry := range entries {
if !entry.IsDir() || strings.HasPrefix(entry.Name(), ".") { if !entry.IsDir() || strings.HasPrefix(entry.Name(), ".") {
log.Printf(">> Ignoring %v\n", entry.Name()) log.Printf(">> Ignoring %v\n", entry.Name())
@ -85,21 +84,17 @@ func RecordMetrics(m Metrics) {
stats := info.Cache.Stats stats := info.Cache.Stats
log.Printf("> Got info for: %v\n", path) log.Printf("> Got info for: %v\n", path)
buffer = append(buffer, MetricsBuffer{ m.ArchiveCount.With(prometheus.Labels{"repo_name": entry.Name()}).Set(float64(len(list.Archives)))
RepoName: entry.Name(), m.LastArchiveTime.With(prometheus.Labels{"repo_name": entry.Name()}).Set(list.LastArchiveUnix())
ArchiveCount: float64(len(list.Archives)), m.LastModified.With(prometheus.Labels{"repo_name": entry.Name()}).Set(info.LastmodUnix())
LastArchiveTime: list.LastArchiveUnix(), m.TotalChunks.With(prometheus.Labels{"repo_name": entry.Name()}).Set(stats.Total_chunks)
LastModified: info.LastmodUnix(), m.TotalCsize.With(prometheus.Labels{"repo_name": entry.Name()}).Set(stats.Total_csize)
TotalChunks: stats.Total_chunks, m.TotalSize.With(prometheus.Labels{"repo_name": entry.Name()}).Set(stats.Total_size)
TotalCsize: stats.Total_csize, m.TotalUniqueChunks.With(prometheus.Labels{"repo_name": entry.Name()}).Set(stats.Total_unique_chunks)
TotalSize: stats.Total_size, m.UniqueCsize.With(prometheus.Labels{"repo_name": entry.Name()}).Set(stats.Unique_csize)
TotalUniqueChunks: stats.Total_unique_chunks, m.UniqueSize.With(prometheus.Labels{"repo_name": entry.Name()}).Set(stats.Unique_size)
UniqueCsize: stats.Unique_csize,
UniqueSize: stats.Unique_size,
})
} }
m.Update(buffer)
log.Printf("> Waiting %v\n", INTERVAL) log.Printf("> Waiting %v\n", INTERVAL)
time.Sleep(INTERVAL) time.Sleep(INTERVAL)
} }

View file

@ -41,36 +41,3 @@ func NewMetrics(reg prometheus.Registerer) *Metrics {
return metrics return metrics
} }
// Reset all metrics
//
// This should be called on every loop iteration.
func (m *Metrics) Reset() {
m.ArchiveCount.Reset()
m.LastArchiveTime.Reset()
m.LastModified.Reset()
m.TotalChunks.Reset()
m.TotalCsize.Reset()
m.TotalSize.Reset()
m.TotalUniqueChunks.Reset()
m.UniqueCsize.Reset()
m.UniqueSize.Reset()
}
// Update these metrics with the given buffer.
//
// Resets the metrics beforehand. Expected to be called on every loop iteration.
func (m *Metrics) Update(buffer []MetricsBuffer) {
m.Reset()
for _, buf := range buffer {
m.ArchiveCount.With(prometheus.Labels{"repo_name": buf.RepoName}).Set(buf.ArchiveCount)
m.LastArchiveTime.With(prometheus.Labels{"repo_name": buf.RepoName}).Set(buf.LastArchiveTime)
m.LastModified.With(prometheus.Labels{"repo_name": buf.RepoName}).Set(buf.LastModified)
m.TotalChunks.With(prometheus.Labels{"repo_name": buf.RepoName}).Set(buf.TotalChunks)
m.TotalCsize.With(prometheus.Labels{"repo_name": buf.RepoName}).Set(buf.TotalCsize)
m.TotalSize.With(prometheus.Labels{"repo_name": buf.RepoName}).Set(buf.TotalSize)
m.TotalUniqueChunks.With(prometheus.Labels{"repo_name": buf.RepoName}).Set(buf.TotalUniqueChunks)
m.UniqueCsize.With(prometheus.Labels{"repo_name": buf.RepoName}).Set(buf.UniqueCsize)
m.UniqueSize.With(prometheus.Labels{"repo_name": buf.RepoName}).Set(buf.UniqueSize)
}
}