diff --git a/celestia/celestia.go b/celestia/celestia.go index f66934d..56a2b1c 100644 --- a/celestia/celestia.go +++ b/celestia/celestia.go @@ -17,6 +17,7 @@ import ( auth "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/rollkit/go-da" + sdkmetric "go.opentelemetry.io/otel/sdk/metric" ) // CelestiaDA implements the celestia backend for the DA interface @@ -25,15 +26,17 @@ type CelestiaDA struct { namespace share.Namespace gasPrice float64 ctx context.Context + metrics *sdkmetric.MeterProvider } // NewCelestiaDA returns an instance of CelestiaDA -func NewCelestiaDA(client *rpc.Client, namespace share.Namespace, gasPrice float64, ctx context.Context) *CelestiaDA { +func NewCelestiaDA(client *rpc.Client, namespace share.Namespace, gasPrice float64, ctx context.Context, m *sdkmetric.MeterProvider) *CelestiaDA { return &CelestiaDA{ client: client, namespace: namespace, gasPrice: gasPrice, ctx: ctx, + metrics: m, } } diff --git a/celestia/version.go b/celestia/version.go new file mode 100644 index 0000000..7de6819 --- /dev/null +++ b/celestia/version.go @@ -0,0 +1,67 @@ +package celestia + +import ( + "runtime/debug" + "strings" +) + +// BuildInfo populated in ldflags by Makefile +type BuildInfo struct { + BuildTime string + LastCommit string + SemanticVersion string + NodeVersion string + GoVersion string +} + +// ReadBuildInfo *BuildInfo containing build information +func ReadBuildInfo() *BuildInfo { + debugInfo, _ := debug.ReadBuildInfo() + var ldflags string + for _, kv := range debugInfo.Settings { + switch kv.Key { + case "-ldflags": + ldflags = kv.Value + } + } + var buildInfo BuildInfo + + // Split ldflags into individual key-value pairs + keyValuePairs := strings.Split(ldflags, "-X ") + + // Iterate over key-value pairs + for _, pair := range keyValuePairs { + // Skip empty pairs + if pair == "" { + continue + } + + // Remove quotes + pair = strings.Trim(strings.TrimSpace(pair), "'") + + // Split pair into key and value + parts := strings.Split(pair, "=") + if len(parts) != 2 { + // Invalid pair, skip + continue + } + + // Trim leading and trailing spaces from key and value + key := parts[0] + value := strings.TrimSpace(parts[1]) + + // Assign value to corresponding field in BuildInfo + switch key { + case ".buildTime": + buildInfo.BuildTime = value + case ".lastCommit": + buildInfo.LastCommit = value + case ".semanticVersion": + buildInfo.SemanticVersion = value + case ".nodeVersion": + buildInfo.NodeVersion = value + } + } + buildInfo.GoVersion = debugInfo.GoVersion + return &buildInfo +} diff --git a/cmd/celestia-da/cmd.go b/cmd/celestia-da/cmd.go index d290f21..54ebc9a 100644 --- a/cmd/celestia-da/cmd.go +++ b/cmd/celestia-da/cmd.go @@ -13,6 +13,7 @@ const ( grpcListenFlag = "da.grpc.listen" grpcNetworkFlag = "da.grpc.network" grpcGasPriceFlag = "da.grpc.gasprice" + grpcMetricsFlag = "da.grpc.metrics" ) // WithDataAvailabilityService patches the start command to also run the gRPC Data Availability service @@ -25,6 +26,7 @@ func WithDataAvailabilityService(flags []*pflag.FlagSet) func(*cobra.Command) { grpcFlags.String(grpcListenFlag, "127.0.0.1:0", "gRPC service listen address") grpcFlags.String(grpcNetworkFlag, "tcp", "gRPC service listen network type must be \"tcp\", \"tcp4\", \"tcp6\", \"unix\" or \"unixpacket\"") grpcFlags.Float64(grpcGasPriceFlag, -1, "gas price for estimating fee (utia/gas) default: -1 for default fees") + grpcFlags.Bool(grpcMetricsFlag, false, "enables OTLP metrics with HTTP exporter") fset := append(flags, grpcFlags) @@ -44,6 +46,7 @@ func WithDataAvailabilityService(flags []*pflag.FlagSet) func(*cobra.Command) { listenAddress, _ := cmd.Flags().GetString(grpcListenFlag) listenNetwork, _ := cmd.Flags().GetString(grpcNetworkFlag) gasPrice, _ := cmd.Flags().GetFloat64(grpcGasPriceFlag) + metrics, _ := cmd.Flags().GetBool(grpcMetricsFlag) if rpcToken == "" { token, err := authToken(cmdnode.StorePath(c.Context())) @@ -54,7 +57,7 @@ func WithDataAvailabilityService(flags []*pflag.FlagSet) func(*cobra.Command) { } // serve the gRPC service in a goroutine - go serve(cmd.Context(), rpcAddress, rpcToken, listenAddress, listenNetwork, nsString, gasPrice) + go serve(cmd.Context(), rpcAddress, rpcToken, listenAddress, listenNetwork, nsString, gasPrice, metrics) } c.PreRun = preRun diff --git a/cmd/celestia-da/metrics.go b/cmd/celestia-da/metrics.go new file mode 100644 index 0000000..f226482 --- /dev/null +++ b/cmd/celestia-da/metrics.go @@ -0,0 +1,175 @@ +package main + +import ( + "context" + "fmt" + "net/http" + "sync" + "time" + + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp" + "go.opentelemetry.io/otel/metric" + sdkmetric "go.opentelemetry.io/otel/sdk/metric" + "go.opentelemetry.io/otel/sdk/resource" + semconv "go.opentelemetry.io/otel/semconv/v1.12.0" +) + +// InstrumentReg stores the already registered instruments +// +//nolint:structcheck // generics +type InstrumentReg[T any, O any] struct { + instruments map[string]T + mu sync.Mutex + newInstrument func(name string, options ...O) (T, error) +} + +// GetInstrument registers a new instrument, otherwise returns the already created. +func (r *InstrumentReg[T, O]) GetInstrument(name string, options ...O) (T, error) { + var err error + r.mu.Lock() + defer r.mu.Unlock() + instrument, has := r.instruments[name] + if !has { + instrument, err = r.newInstrument(name, options...) + if err != nil { + return instrument, fmt.Errorf("unable to register metric %T %s: %w", r, name, err) + } + r.instruments[name] = instrument + } + + return instrument, nil +} + +var ( + // meter is the default meter + meter metric.Meter //nolint:gochecknoglobals // private + // meterOnce is used to init meter + meterOnce sync.Once //nolint:gochecknoglobals // private + // regInt64Counter stores Int64Counters + regInt64Counter *InstrumentReg[metric.Int64Counter, metric.Int64CounterOption] //nolint:gochecknoglobals // private + // regFloat64Counter stores Float64Counters + regFloat64Counter *InstrumentReg[metric.Float64Counter, metric.Float64CounterOption] //nolint:gochecknoglobals // private +) + +// GetMeter returns the default meter. +// Inits meter and InstrumentRegs (if needed) +func GetMeter(m metric.MeterProvider) metric.Meter { + meterOnce.Do(func() { + meter = m.Meter("github.com/pgillich/opentracing-example/internal/middleware", metric.WithInstrumentationVersion("0.1")) + + regInt64Counter = &InstrumentReg[metric.Int64Counter, metric.Int64CounterOption]{ + instruments: map[string]metric.Int64Counter{}, + newInstrument: meter.Int64Counter, + } + regFloat64Counter = &InstrumentReg[metric.Float64Counter, metric.Float64CounterOption]{ + instruments: map[string]metric.Float64Counter{}, + newInstrument: meter.Float64Counter, + } + }) + + return meter +} + +func Int64CounterGetInstrument(name string, options ...metric.Int64CounterOption) (metric.Int64Counter, error) { + return regInt64Counter.GetInstrument(name, options...) +} + +func Float64CounterGetInstrument(name string, options ...metric.Float64CounterOption) (metric.Float64Counter, error) { + return regFloat64Counter.GetInstrument(name, options...) +} + +// MetricTransport implements the http.RoundTripper interface and wraps +// outbound HTTP(S) requests with metrics. +type MetricTransport struct { + rt http.RoundTripper + + meter metric.Meter + name string + description string + baseAttrs []attribute.KeyValue +} + +// NewMetricTransport wraps the provided http.RoundTripper with one that +// meters metrics. +// +// If the provided http.RoundTripper is nil, http.DefaultTransport will be used +// as the base http.RoundTripper. +func NewMetricTransport(base http.RoundTripper, meter metric.Meter, name string, + description string, attributes map[string]string) *MetricTransport { + if base == nil { + base = http.DefaultTransport + } + baseAttrs := make([]attribute.KeyValue, 0, len(attributes)) + for aKey, aVal := range attributes { + baseAttrs = append(baseAttrs, attribute.Key(aKey).String(aVal)) + } + + return &MetricTransport{ + rt: base, + meter: meter, + name: name, + description: description, + baseAttrs: baseAttrs, + } +} + +// RoundTrip meters outgoing request-response pair. +func (t *MetricTransport) RoundTrip(r *http.Request) (*http.Response, error) { + ctx := r.Context() + + attempted, err := Int64CounterGetInstrument(t.name, metric.WithDescription(t.description)) + if err != nil { + return nil, err + } + durationSum, err := Float64CounterGetInstrument(t.name+"_duration", metric.WithDescription(t.description+", duration sum"), metric.WithUnit("s")) + if err != nil { + return nil, err + } + beginTS := time.Now() + var res *http.Response + + r = r.WithContext(ctx) + res, err = t.rt.RoundTrip(r) + + elapsedSec := time.Since(beginTS).Seconds() + attrs := make([]attribute.KeyValue, len(t.baseAttrs), len(t.baseAttrs)+6) + copy(attrs, t.baseAttrs) + opt := metric.WithAttributes(attrs...) + attempted.Add(ctx, 1, opt) + durationSum.Add(ctx, elapsedSec, opt) + + return res, err //nolint:wrapcheck // should not be changed +} + +func setupMetrics(ctx context.Context, serviceName string) (*sdkmetric.MeterProvider, error) { + exporter, err := otlpmetrichttp.New( + ctx, + otlpmetrichttp.WithEndpoint("localhost:4318"), + otlpmetrichttp.WithInsecure(), + ) + if err != nil { + return nil, err + } + + // labels/tags/resources that are common to all metrics. + resource := resource.NewWithAttributes( + semconv.SchemaURL, + semconv.ServiceNameKey.String(serviceName), + attribute.String("some-attribute", "some-value"), + ) + + mp := sdkmetric.NewMeterProvider( + sdkmetric.WithResource(resource), + sdkmetric.WithReader( + // collects and exports metric data every 30 seconds. + sdkmetric.NewPeriodicReader(exporter, sdkmetric.WithInterval(30*time.Second)), + ), + ) + GetMeter(mp) + + otel.SetMeterProvider(mp) + + return mp, nil +} diff --git a/cmd/celestia-da/server.go b/cmd/celestia-da/server.go index c3fc1d3..0c88f69 100644 --- a/cmd/celestia-da/server.go +++ b/cmd/celestia-da/server.go @@ -5,9 +5,12 @@ import ( "encoding/hex" "errors" "net" + "net/http" rpc "github.com/celestiaorg/celestia-node/api/rpc/client" "github.com/celestiaorg/celestia-node/share" + "github.com/filecoin-project/go-jsonrpc" + sdkmetric "go.opentelemetry.io/otel/sdk/metric" "github.com/rollkit/celestia-da/celestia" @@ -17,10 +20,30 @@ import ( "github.com/rollkit/go-da/proxy" ) -func serve(ctx context.Context, rpcAddress, rpcToken, listenAddress, listenNetwork, nsString string, gasPrice float64) { - client, err := rpc.NewClient(ctx, rpcAddress, rpcToken) - if err != nil { - log.Fatalln("failed to create celestia-node RPC client:", err) +var serviceName = "celestia-da" + +func serve(ctx context.Context, rpcAddress, rpcToken, listenAddress, listenNetwork, nsString string, gasPrice float64, metrics bool) { + var client *rpc.Client + var err error + var m *sdkmetric.MeterProvider + if metrics { + m, err = setupMetrics(ctx, serviceName) + if err != nil { + log.Fatalln("failed to setup metrics:", err) + } + httpTransport := NewMetricTransport(nil, m.Meter("rpc"), "rpc", "celestia-node json-rpc client", nil) + httpClient := &http.Client{ + Transport: httpTransport, + } + client, err = rpc.NewClient(ctx, rpcAddress, rpcToken, jsonrpc.WithHTTPClient(httpClient)) + if err != nil { + log.Fatalln("failed to create celestia-node RPC client:", err) + } + } else { + client, err = rpc.NewClient(ctx, rpcAddress, rpcToken) + if err != nil { + log.Fatalln("failed to create celestia-node RPC client:", err) + } } nsBytes := make([]byte, len(nsString)/2) _, err = hex.Decode(nsBytes, []byte(nsString)) @@ -32,7 +55,7 @@ func serve(ctx context.Context, rpcAddress, rpcToken, listenAddress, listenNetwo log.Fatalln("invalid namespace:", err) } - da := celestia.NewCelestiaDA(client, namespace, gasPrice, ctx) + da := celestia.NewCelestiaDA(client, namespace, gasPrice, ctx, m) // TODO(tzdybal): add configuration options for encryption srv := proxy.NewServer(da, grpc.Creds(insecure.NewCredentials())) diff --git a/cmd/celestia-da/version.go b/cmd/celestia-da/version.go index d3326b9..4735882 100644 --- a/cmd/celestia-da/version.go +++ b/cmd/celestia-da/version.go @@ -2,63 +2,11 @@ package main import ( "fmt" - "runtime/debug" - "strings" + "github.com/rollkit/celestia-da/celestia" "github.com/spf13/cobra" ) -// buildInfo populated in ldflags by Makefile -type buildInfo struct { - BuildTime string - LastCommit string - SemanticVersion string - NodeVersion string -} - -// extractBuildInfo parses the ldflags string and returns buildInfo -func extractBuildInfo(ldflags string) *buildInfo { - var buildInfo buildInfo - - // Split ldflags into individual key-value pairs - keyValuePairs := strings.Split(ldflags, "-X ") - - // Iterate over key-value pairs - for _, pair := range keyValuePairs { - // Skip empty pairs - if pair == "" { - continue - } - - // Remove quotes - pair = strings.Trim(strings.TrimSpace(pair), "'") - - // Split pair into key and value - parts := strings.Split(pair, "=") - if len(parts) != 2 { - // Invalid pair, skip - continue - } - - // Trim leading and trailing spaces from key and value - key := parts[0] - value := strings.TrimSpace(parts[1]) - - // Assign value to corresponding field in BuildInfo - switch key { - case ".buildTime": - buildInfo.BuildTime = value - case ".lastCommit": - buildInfo.LastCommit = value - case ".semanticVersion": - buildInfo.SemanticVersion = value - case ".nodeVersion": - buildInfo.NodeVersion = value - } - } - return &buildInfo -} - var versionCmd = &cobra.Command{ Use: "version", Short: "Show information about the current binary build", @@ -67,18 +15,10 @@ var versionCmd = &cobra.Command{ } func printBuildInfo(_ *cobra.Command, _ []string) { - debugInfo, _ := debug.ReadBuildInfo() - var ldflags string - for _, kv := range debugInfo.Settings { - switch kv.Key { - case "-ldflags": - ldflags = kv.Value - } - } - buildInfo := extractBuildInfo(ldflags) + buildInfo := celestia.ReadBuildInfo() fmt.Printf("Semantic version: %s\n", buildInfo.SemanticVersion) fmt.Printf("Build Time: %s\n", buildInfo.BuildTime) fmt.Printf("Last Commit: %s\n", buildInfo.LastCommit) - fmt.Printf("Golang version: %s\n", debugInfo.GoVersion) + fmt.Printf("Golang version: %s\n", buildInfo.GoVersion) fmt.Printf("Celestia Node version: %s\n", buildInfo.NodeVersion) } diff --git a/go.mod b/go.mod index 56acedc..05c5609 100644 --- a/go.mod +++ b/go.mod @@ -18,16 +18,21 @@ require ( github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 + go.opentelemetry.io/otel v1.22.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0 + go.opentelemetry.io/otel/sdk v1.21.0 + go.opentelemetry.io/otel/sdk/metric v1.21.0 google.golang.org/grpc v1.60.1 ) require ( - cloud.google.com/go v0.110.8 // indirect - cloud.google.com/go/compute v1.23.0 // indirect + cloud.google.com/go v0.110.10 // indirect + cloud.google.com/go/compute v1.23.3 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.2 // indirect + cloud.google.com/go/iam v1.1.5 // indirect cloud.google.com/go/storage v1.30.1 // indirect - cosmossdk.io/errors v1.0.0 // indirect + cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/math v1.2.0 // indirect filippo.io/edwards25519 v1.0.0-rc.1 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect @@ -100,7 +105,7 @@ require ( github.com/elastic/gosigar v0.14.2 // indirect github.com/ethereum/c-kzg-4844 v0.3.1 // indirect github.com/ethereum/go-ethereum v1.13.2 // indirect - github.com/felixge/httpsnoop v1.0.1 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect github.com/filecoin-project/dagstore v0.5.6 // indirect github.com/flynn/noise v1.0.0 // indirect github.com/francoispqt/gojay v1.2.13 // indirect @@ -129,10 +134,10 @@ require ( github.com/google/gopacket v1.1.19 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b // indirect - github.com/google/s2a-go v0.1.4 // indirect + github.com/google/s2a-go v0.1.7 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.5.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.4 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gopherjs/gopherjs v0.0.0-20190812055157-5d271430af9f // indirect github.com/gorilla/handlers v1.5.1 // indirect @@ -301,15 +306,11 @@ require ( go.etcd.io/bbolt v1.3.7 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/runtime v0.45.0 // indirect - go.opentelemetry.io/otel v1.21.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.15.1 // indirect - go.opentelemetry.io/otel/metric v1.21.0 // indirect - go.opentelemetry.io/otel/sdk v1.21.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.21.0 // indirect - go.opentelemetry.io/otel/trace v1.21.0 // indirect + go.opentelemetry.io/otel/metric v1.22.0 // indirect + go.opentelemetry.io/otel/trace v1.22.0 // indirect go.opentelemetry.io/proto/otlp v1.0.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/dig v1.17.1 // indirect @@ -329,11 +330,11 @@ require ( golang.org/x/tools v0.16.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect gonum.org/v1/gonum v0.13.0 // indirect - google.golang.org/api v0.128.0 // indirect + google.golang.org/api v0.149.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231009173412-8bfb1ae86b6c // indirect + google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect google.golang.org/protobuf v1.32.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect @@ -349,3 +350,5 @@ replace ( github.com/filecoin-project/dagstore => github.com/celestiaorg/dagstore v0.0.0-20230824094345-537c012aa403 github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.29.0-tm-v0.34.29 ) + +replace github.com/celestiaorg/celestia-node => github.com/tuxcanfly/celestia-node v0.0.0-20240119011252-2322f04720a3 diff --git a/go.sum b/go.sum index 83ff579..83f3a13 100644 --- a/go.sum +++ b/go.sum @@ -36,8 +36,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= -cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= +cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= +cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -75,8 +75,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= -cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= @@ -116,8 +116,8 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.2 h1:gacbrBdWcoVmGLozRuStX45YKvJtzIjJdAolzUs1sm4= -cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= @@ -193,8 +193,8 @@ cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuW cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= -cosmossdk.io/errors v1.0.0 h1:nxF07lmlBbB8NKQhtJ+sJm6ef5uV1XkvPXG2bUntb04= -cosmossdk.io/errors v1.0.0/go.mod h1:+hJZLuhdDE0pYN8HkOrVNwrIOYvUGnn6+4fjnJs/oV0= +cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= +cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= cosmossdk.io/math v1.2.0 h1:8gudhTkkD3NxOP2YyyJIYYmt6dQ55ZfJkDOaxXpy7Ig= cosmossdk.io/math v1.2.0/go.mod h1:l2Gnda87F0su8a/7FEKJfFdJrM0JZRXQaohlgJeyQh0= dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= @@ -352,8 +352,6 @@ github.com/celestiaorg/celestia-app v1.6.0 h1:B5hFoeLHqMsC8rHmtqEcbXhP9SdLetSb+c github.com/celestiaorg/celestia-app v1.6.0/go.mod h1:zhdQIFGFZRRxrDVtFE4OFIT7/12RE8DRyfvNZdW8ceM= github.com/celestiaorg/celestia-core v1.29.0-tm-v0.34.29 h1:Fd7ymPUzExPGNl2gZw4i5S74arMw+iDHLE78M/cCxl4= github.com/celestiaorg/celestia-core v1.29.0-tm-v0.34.29/go.mod h1:xrICN0PBhp3AdTaZ8q4wS5Jvi32V02HNjaC2EsWiEKk= -github.com/celestiaorg/celestia-node v0.12.4 h1:iNfIzdLcKqVv0HuuDtro9wsSGLyqS+EAZ+9wbQVTxvs= -github.com/celestiaorg/celestia-node v0.12.4/go.mod h1:oxcUuO0S9IUbaaT2PbBAPkQdFwj19LwtvDfKFBKN/AI= github.com/celestiaorg/cosmos-sdk v1.18.1-sdk-v0.46.14 h1:c4cMVLU2bGTesZW1ZVgeoCB++gOOJTF3OvBsqBvo6n0= github.com/celestiaorg/cosmos-sdk v1.18.1-sdk-v0.46.14/go.mod h1:D5y5Exw0bJkcDv9fvYDiZfZrDV1b6+xsFyiungxrCsU= github.com/celestiaorg/dagstore v0.0.0-20230824094345-537c012aa403 h1:Lj73O3S+KJx5/hgZ+IeOLEIoLsAveJN/7/ZtQQtPSVw= @@ -613,8 +611,9 @@ github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+ne github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/filecoin-project/go-jsonrpc v0.3.1 h1:qwvAUc5VwAkooquKJmfz9R2+F8znhiqcNHYjEp/NM10= github.com/filecoin-project/go-jsonrpc v0.3.1/go.mod h1:jBSvPTl8V1N7gSTuCR4bis8wnQnIjHbRPpROol6iQKM= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= @@ -851,8 +850,8 @@ github.com/google/pprof v0.0.0-20221203041831-ce31453925ec/go.mod h1:dDKJzRmX4S3 github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVel+QkoGPRLFLrwFO89uDUHEGf0= github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= -github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= @@ -866,8 +865,8 @@ github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.4 h1:uGy6JWR/uMIILU8wbf+OkstIrNiMjGpEIyhx8f6W7s4= -github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -2267,6 +2266,8 @@ github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+F github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= +github.com/tuxcanfly/celestia-node v0.0.0-20240119011252-2322f04720a3 h1:RKMILoMXbYc3w7Mt4rIitTOhvEo2MGVZsMLPRPhdh2w= +github.com/tuxcanfly/celestia-node v0.0.0-20240119011252-2322f04720a3/go.mod h1:+70VGVVV2IgOIPn2YIP32O0Ozg6UeZ9QIruWo3LjcHU= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= @@ -2374,14 +2375,16 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= go.opentelemetry.io/contrib/instrumentation/runtime v0.45.0 h1:2JydY5UiDpqvj2p7sO9bgHuhTy4hgTZ0ymehdq/Ob0Q= go.opentelemetry.io/contrib/instrumentation/runtime v0.45.0/go.mod h1:ch3a5QxOqVWxas4CzjCFFOOQe+7HgAXC/N1oVxS9DK4= go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= go.opentelemetry.io/otel v1.13.0/go.mod h1:FH3RtdZCzRkJYFTCsAKDy9l/XYjMdNv6QrkFFB8DvVg= go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= -go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= -go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= +go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= +go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0 h1:bflGWrfYyuulcdxf14V6n9+CoQcu5SAAdHmDPAJnlps= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0/go.mod h1:qcTO4xHAxZLaLxPd60TdE88rxtItPHgHWqOhOGRr0as= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= @@ -2392,8 +2395,8 @@ go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.15.1 h1:2PunuO5SbkN5MhC go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.15.1/go.mod h1:q8+Tha+5LThjeSU8BW93uUC5w5/+DnYHMKBMpRCsui0= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= -go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= -go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= +go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= +go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= @@ -2404,8 +2407,8 @@ go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16g go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= go.opentelemetry.io/otel/trace v1.13.0/go.mod h1:muCvmmO9KKpvuXSf3KKAXXB2ygNYHQ+ZfI5X08d3tds= go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= -go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= -go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= +go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= +go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= @@ -2495,7 +2498,6 @@ golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5 golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= @@ -3039,8 +3041,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.128.0 h1:RjPESny5CnQRn9V6siglged+DZCgfu9l6mO9dkX9VOg= -google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= +google.golang.org/api v0.149.0 h1:b2CqT6kG+zqJIVKRQ3ELJVLN1PwHZ6DJ3dW8yl82rgY= +google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -3165,12 +3167,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97 h1:SeZZZx0cP0fqUyA+oRzP9k7cSwJlvDFiROO72uwD6i0= -google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97/go.mod h1:t1VqOqqvce95G3hIDCT5FeO3YUc6Q4Oe24L/+rNMxRk= -google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 h1:W18sezcAYs+3tDZX4F80yctqa12jcP1PUS2gQu1zTPU= -google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97/go.mod h1:iargEX0SFPm3xcfMI0d1domjg0ZF4Aa0p2awqyxhvF0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231009173412-8bfb1ae86b6c h1:jHkCUWkseRf+W+edG5hMzr/Uh1xkDREY4caybAq4dpY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231009173412-8bfb1ae86b6c/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0= +google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 h1:1hfbdAfFbkmpg41000wDVqr7jUpK/Yo+LPnIxxGzmkg= +google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= +google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= +google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 h1:/jFB8jK5R3Sq3i/lmeZO0cATSzFfZaJq1J2Euan3XKU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= diff --git a/otelcol.yaml b/otelcol.yaml new file mode 100644 index 0000000..aa44d31 --- /dev/null +++ b/otelcol.yaml @@ -0,0 +1,20 @@ +receivers: + otlp: + protocols: + http: + endpoint: 0.0.0.0:4318 # It is important that we do not use localhost + +exporters: + debug: + verbosity: detailed + logging: + +service: + pipelines: + metrics: + receivers: [ otlp ] + processors: + exporters: [ logging ] + telemetry: + logs: + level: "debug"