Merge backend_observer.go into observe.go. NFC

This commit is contained in:
Catherine
2025-09-30 04:40:30 +00:00
parent 50e32fedb0
commit 277b329e2d
2 changed files with 114 additions and 120 deletions

View File

@@ -1,118 +0,0 @@
package main
import (
"context"
"io"
"time"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)
var (
blobsRetrievedCount = promauto.NewCounter(prometheus.CounterOpts{
Name: "git_pages_blobs_retrieved",
Help: "Count of blobs retrieved",
})
blobsRetrievedBytes = promauto.NewCounter(prometheus.CounterOpts{
Name: "git_pages_blobs_retrieved_bytes",
Help: "Total size in bytes of blobs retrieved",
})
blobsStoredCount = promauto.NewCounter(prometheus.CounterOpts{
Name: "git_pages_blobs_stored",
Help: "Count of blobs stored",
})
blobsStoredBytes = promauto.NewCounter(prometheus.CounterOpts{
Name: "git_pages_blobs_stored_bytes",
Help: "Total size in bytes of blobs stored",
})
manifestsRetrievedCount = promauto.NewCounter(prometheus.CounterOpts{
Name: "git_pages_manifests_retrieved",
Help: "Count of manifests retrieved",
})
)
type observedBackend struct {
inner Backend
}
var _ Backend = (*observedBackend)(nil)
func NewObservedBackend(backend Backend) Backend {
return &observedBackend{inner: backend}
}
func (backend *observedBackend) GetBlob(
ctx context.Context,
name string,
) (
reader io.ReadSeeker,
size uint64,
mtime time.Time,
err error,
) {
span, ctx := ObserveFunction(ctx, "GetBlob", "blob.name", name)
if reader, size, mtime, err = backend.inner.GetBlob(ctx, name); err == nil {
ObserveData(ctx, "blob.size", size)
blobsRetrievedCount.Inc()
blobsRetrievedBytes.Add(float64(size))
}
span.Finish()
return
}
func (backend *observedBackend) PutBlob(ctx context.Context, name string, data []byte) (err error) {
span, ctx := ObserveFunction(ctx, "PutBlob", "blob.name", name, "blob.size", len(data))
if err = backend.inner.PutBlob(ctx, name, data); err == nil {
blobsStoredCount.Inc()
blobsStoredBytes.Add(float64(len(data)))
}
span.Finish()
return
}
func (backend *observedBackend) DeleteBlob(ctx context.Context, name string) (err error) {
span, ctx := ObserveFunction(ctx, "DeleteBlob", "blob.name", name)
err = backend.inner.DeleteBlob(ctx, name)
span.Finish()
return
}
func (backend *observedBackend) GetManifest(ctx context.Context, name string) (manifest *Manifest, err error) {
span, ctx := ObserveFunction(ctx, "GetManifest", "manifest.name", name)
if manifest, err = backend.inner.GetManifest(ctx, name); err == nil {
manifestsRetrievedCount.Inc()
}
span.Finish()
return
}
func (backend *observedBackend) StageManifest(ctx context.Context, manifest *Manifest) (err error) {
span, ctx := ObserveFunction(ctx, "StageManifest")
err = backend.inner.StageManifest(ctx, manifest)
span.Finish()
return
}
func (backend *observedBackend) CommitManifest(ctx context.Context, name string, manifest *Manifest) (err error) {
span, ctx := ObserveFunction(ctx, "CommitManifest", "manifest.name", name)
err = backend.inner.CommitManifest(ctx, name, manifest)
span.Finish()
return
}
func (backend *observedBackend) DeleteManifest(ctx context.Context, name string) (err error) {
span, ctx := ObserveFunction(ctx, "DeleteManifest", "manifest.name", name)
err = backend.inner.DeleteManifest(ctx, name)
span.Finish()
return
}
func (backend *observedBackend) CheckDomain(ctx context.Context, domain string) (found bool, err error) {
span, ctx := ObserveFunction(ctx, "CheckDomain", "manifest.domain", domain)
found, err = backend.inner.CheckDomain(ctx, domain)
span.Finish()
return
}

View File

@@ -2,6 +2,7 @@ package main
import (
"context"
"io"
"log"
"log/slog"
"net/http"
@@ -10,11 +11,14 @@ import (
"strconv"
"time"
slogmulti "github.com/samber/slog-multi"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
"github.com/getsentry/sentry-go"
sentryhttp "github.com/getsentry/sentry-go/http"
sentryslog "github.com/getsentry/sentry-go/slog"
slogmulti "github.com/samber/slog-multi"
)
func hasSentry() bool {
@@ -131,3 +135,111 @@ func ObserveData(ctx context.Context, data ...any) {
}
}
}
var (
blobsRetrievedCount = promauto.NewCounter(prometheus.CounterOpts{
Name: "git_pages_blobs_retrieved",
Help: "Count of blobs retrieved",
})
blobsRetrievedBytes = promauto.NewCounter(prometheus.CounterOpts{
Name: "git_pages_blobs_retrieved_bytes",
Help: "Total size in bytes of blobs retrieved",
})
blobsStoredCount = promauto.NewCounter(prometheus.CounterOpts{
Name: "git_pages_blobs_stored",
Help: "Count of blobs stored",
})
blobsStoredBytes = promauto.NewCounter(prometheus.CounterOpts{
Name: "git_pages_blobs_stored_bytes",
Help: "Total size in bytes of blobs stored",
})
manifestsRetrievedCount = promauto.NewCounter(prometheus.CounterOpts{
Name: "git_pages_manifests_retrieved",
Help: "Count of manifests retrieved",
})
)
type observedBackend struct {
inner Backend
}
var _ Backend = (*observedBackend)(nil)
func NewObservedBackend(backend Backend) Backend {
return &observedBackend{inner: backend}
}
func (backend *observedBackend) GetBlob(
ctx context.Context,
name string,
) (
reader io.ReadSeeker,
size uint64,
mtime time.Time,
err error,
) {
span, ctx := ObserveFunction(ctx, "GetBlob", "blob.name", name)
if reader, size, mtime, err = backend.inner.GetBlob(ctx, name); err == nil {
ObserveData(ctx, "blob.size", size)
blobsRetrievedCount.Inc()
blobsRetrievedBytes.Add(float64(size))
}
span.Finish()
return
}
func (backend *observedBackend) PutBlob(ctx context.Context, name string, data []byte) (err error) {
span, ctx := ObserveFunction(ctx, "PutBlob", "blob.name", name, "blob.size", len(data))
if err = backend.inner.PutBlob(ctx, name, data); err == nil {
blobsStoredCount.Inc()
blobsStoredBytes.Add(float64(len(data)))
}
span.Finish()
return
}
func (backend *observedBackend) DeleteBlob(ctx context.Context, name string) (err error) {
span, ctx := ObserveFunction(ctx, "DeleteBlob", "blob.name", name)
err = backend.inner.DeleteBlob(ctx, name)
span.Finish()
return
}
func (backend *observedBackend) GetManifest(ctx context.Context, name string) (manifest *Manifest, err error) {
span, ctx := ObserveFunction(ctx, "GetManifest", "manifest.name", name)
if manifest, err = backend.inner.GetManifest(ctx, name); err == nil {
manifestsRetrievedCount.Inc()
}
span.Finish()
return
}
func (backend *observedBackend) StageManifest(ctx context.Context, manifest *Manifest) (err error) {
span, ctx := ObserveFunction(ctx, "StageManifest")
err = backend.inner.StageManifest(ctx, manifest)
span.Finish()
return
}
func (backend *observedBackend) CommitManifest(ctx context.Context, name string, manifest *Manifest) (err error) {
span, ctx := ObserveFunction(ctx, "CommitManifest", "manifest.name", name)
err = backend.inner.CommitManifest(ctx, name, manifest)
span.Finish()
return
}
func (backend *observedBackend) DeleteManifest(ctx context.Context, name string) (err error) {
span, ctx := ObserveFunction(ctx, "DeleteManifest", "manifest.name", name)
err = backend.inner.DeleteManifest(ctx, name)
span.Finish()
return
}
func (backend *observedBackend) CheckDomain(ctx context.Context, domain string) (found bool, err error) {
span, ctx := ObserveFunction(ctx, "CheckDomain", "manifest.domain", domain)
found, err = backend.inner.CheckDomain(ctx, domain)
span.Finish()
return
}