mirror of
https://codeberg.org/git-pages/git-pages.git
synced 2026-05-20 06:01:51 +00:00
Merge backend_observer.go into observe.go. NFC
This commit is contained in:
@@ -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
|
||||
}
|
||||
116
src/observe.go
116
src/observe.go
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user