Trace back everything (tested)

Signed-off-by: Asai Neko <sugar@sne.moe>
This commit is contained in:
2026-01-21 19:19:17 +08:00
parent 3f44d2d9c2
commit 5f6eb9f2a2
16 changed files with 229 additions and 84 deletions

View File

@@ -6,9 +6,14 @@ import (
"github.com/redis/go-redis/extra/redisotel/v9"
"github.com/redis/go-redis/v9"
"github.com/spf13/viper"
"go.opentelemetry.io/otel/attribute"
semconv "go.opentelemetry.io/otel/semconv/v1.24.0"
)
func Redis(dsn RedisDSN) (redis.UniversalClient, error) {
serviceName := viper.GetString("cache.service_name")
// Connect to Redis
rdb := redis.NewUniversalClient(&redis.UniversalOptions{
Addrs: dsn.Hosts,
@@ -18,17 +23,22 @@ func Redis(dsn RedisDSN) (redis.UniversalClient, error) {
DB: dsn.DB,
})
if err := redisotel.InstrumentMetrics(rdb); err != nil {
slog.Error("[Redis] Error starting otel metrics plugin!", "err", err)
attrs := []attribute.KeyValue{
semconv.DBSystemRedis,
attribute.String("db.instance", serviceName),
}
if err := redisotel.InstrumentTracing(rdb); err != nil {
slog.Error("[Redis] Error starting otel tracing plugin!", "err", err)
if err := redisotel.InstrumentMetrics(rdb, redisotel.WithAttributes(attrs...)); err != nil {
slog.Error("[Redis] Error starting otel metrics plugin!", "name", serviceName, "err", err)
}
if err := redisotel.InstrumentTracing(rdb, redisotel.WithAttributes(attrs...)); err != nil {
slog.Error("[Redis] Error starting otel tracing plugin!", "name", serviceName, "err", err)
}
// Ping redis
ctx := context.Background()
// Ping Redis
_, err := rdb.Ping(ctx).Result()
return rdb, err
}