summaryrefslogtreecommitdiff
path: root/internal/observability/metrics.go
diff options
context:
space:
mode:
authorLibravatar Daenney <daenney@noreply.codeberg.org>2025-05-05 16:22:45 +0000
committerLibravatar tobi <kipvandenbos@noreply.codeberg.org>2025-05-05 16:22:45 +0000
commitecbdc4227ba49eca622812b7413aa877318fd7a0 (patch)
tree37f441534f0f7673f72b8b1fa83ddc12db8ec95c /internal/observability/metrics.go
parent[chore] Update goreleaser (#4133) (diff)
downloadgotosocial-ecbdc4227ba49eca622812b7413aa877318fd7a0.tar.xz
[chore] Simplify the OTEL setup (#4110)
# Description This simplifies our OTEL setup by: * Getting rid of some deprecated things. * Using `autoexport` and letting things get configured by the `OTEL_` environment variables. * Removing all the unnecessary config options. ## Checklist Please put an x inside each checkbox to indicate that you've read and followed it: `[ ]` -> `[x]` If this is a documentation change, only the first checkbox must be filled (you can delete the others if you want). - [x] I/we have read the [GoToSocial contribution guidelines](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md). - [x] I/we have discussed the proposed changes already, either in an issue on the repository, or in the Matrix chat. - [x] I/we have not leveraged AI to create the proposed changes. - [x] I/we have performed a self-review of added code. - [x] I/we have written code that is legible and maintainable by others. - [ ] I/we have commented the added code, particularly in hard-to-understand areas. - [x] I/we have made any necessary changes to documentation. - [ ] I/we have added tests that cover new code. - [x] I/we have run tests and they pass locally with the changes. - [x] I/we have run `go fmt ./...` and `golangci-lint run`. Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4110 Reviewed-by: tobi <kipvandenbos@noreply.codeberg.org> Co-authored-by: Daenney <daenney@noreply.codeberg.org> Co-committed-by: Daenney <daenney@noreply.codeberg.org>
Diffstat (limited to 'internal/observability/metrics.go')
-rw-r--r--internal/observability/metrics.go32
1 files changed, 9 insertions, 23 deletions
diff --git a/internal/observability/metrics.go b/internal/observability/metrics.go
index 97ddd088f..785397834 100644
--- a/internal/observability/metrics.go
+++ b/internal/observability/metrics.go
@@ -21,46 +21,32 @@ package observability
import (
"context"
- "errors"
+ "fmt"
"code.superseriousbusiness.org/gotosocial/internal/config"
"code.superseriousbusiness.org/gotosocial/internal/db"
"github.com/gin-gonic/gin"
"github.com/technologize/otel-go-contrib/otelginmetrics"
+ "go.opentelemetry.io/contrib/exporters/autoexport"
"go.opentelemetry.io/otel"
- "go.opentelemetry.io/otel/exporters/prometheus"
"go.opentelemetry.io/otel/metric"
sdk "go.opentelemetry.io/otel/sdk/metric"
"go.opentelemetry.io/otel/sdk/metric/exemplar"
- "go.opentelemetry.io/otel/sdk/resource"
- semconv "go.opentelemetry.io/otel/semconv/v1.24.0"
)
-const (
- serviceName = "GoToSocial"
-)
-
-func InitializeMetrics(db db.DB) error {
+func InitializeMetrics(ctx context.Context, db db.DB) error {
if !config.GetMetricsEnabled() {
return nil
}
- if config.GetMetricsAuthEnabled() {
- if config.GetMetricsAuthPassword() == "" || config.GetMetricsAuthUsername() == "" {
- return errors.New("metrics-auth-username and metrics-auth-password must be set when metrics-auth-enabled is true")
- }
+ r, err := Resource()
+ if err != nil {
+ // this can happen if semconv versioning is out-of-sync
+ return fmt.Errorf("building tracing resource: %w", err)
}
- r, _ := resource.Merge(
- resource.Default(),
- resource.NewSchemaless(
- semconv.ServiceName(serviceName),
- semconv.ServiceVersion(config.GetSoftwareVersion()),
- ),
- )
-
- prometheusExporter, err := prometheus.New()
+ mt, err := autoexport.NewMetricReader(ctx)
if err != nil {
return err
}
@@ -68,7 +54,7 @@ func InitializeMetrics(db db.DB) error {
meterProvider := sdk.NewMeterProvider(
sdk.WithExemplarFilter(exemplar.AlwaysOffFilter),
sdk.WithResource(r),
- sdk.WithReader(prometheusExporter),
+ sdk.WithReader(mt),
)
otel.SetMeterProvider(meterProvider)