Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): bump otel, go-header, and go-fraud #2472

Merged
merged 5 commits into from
Jul 13, 2023
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions cmd/flags_misc.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
flag "github.com/spf13/pflag"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
"go.opentelemetry.io/otel/sdk/resource"
tracesdk "go.opentelemetry.io/otel/sdk/trace"
Expand Down Expand Up @@ -210,15 +211,16 @@ func ParseMiscFlags(ctx context.Context, cmd *cobra.Command) (context.Context, e
opts = append(opts, otlptracehttp.WithInsecure())
}

exp, err := otlptracehttp.New(cmd.Context(), opts...)
client := otlptracehttp.NewClient(opts...)
exporter, err := otlptrace.New(ctx, client)
if err != nil {
return ctx, err
return ctx, fmt.Errorf("creating OTLP trace exporter: %w", err)
}

tp = tracesdk.NewTracerProvider(
tracesdk.WithSampler(tracesdk.AlwaysSample()),
// Always be sure to batch in production.
tracesdk.WithBatcher(exp),
tracesdk.WithBatcher(exporter),
// Record information about this application in a Resource.
tracesdk.WithResource(resource.NewWithAttributes(
semconv.SchemaURL,
Expand Down
135 changes: 67 additions & 68 deletions das/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,9 @@ import (
"sync/atomic"
"time"

"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/metric/global"
"go.opentelemetry.io/otel/metric/instrument"
"go.opentelemetry.io/otel/metric/instrument/syncfloat64"
"go.opentelemetry.io/otel/metric/instrument/syncint64"
"go.opentelemetry.io/otel/metric"

"github.com/celestiaorg/celestia-node/header"
)
Expand All @@ -22,73 +20,70 @@ const (
)

var (
meter = global.MeterProvider().Meter("das")
meter = otel.Meter("das")
)

type metrics struct {
sampled syncint64.Counter
sampleTime syncfloat64.Histogram
getHeaderTime syncfloat64.Histogram
newHead syncint64.Counter
sampled metric.Int64Counter
sampleTime metric.Float64Histogram
getHeaderTime metric.Float64Histogram
newHead metric.Int64Counter

lastSampledTS uint64
}

func (d *DASer) InitMetrics() error {
sampled, err := meter.SyncInt64().Counter("das_sampled_headers_counter",
instrument.WithDescription("sampled headers counter"))
sampled, err := meter.Int64Counter("das_sampled_headers_counter",
metric.WithDescription("sampled headers counter"))
if err != nil {
return err
}

sampleTime, err := meter.SyncFloat64().Histogram("das_sample_time_hist",
instrument.WithDescription("duration of sampling a single header"))
sampleTime, err := meter.Float64Histogram("das_sample_time_hist",
metric.WithDescription("duration of sampling a single header"))
if err != nil {
return err
}

getHeaderTime, err := meter.SyncFloat64().Histogram("das_get_header_time_hist",
instrument.WithDescription("duration of getting header from header store"))
getHeaderTime, err := meter.Float64Histogram("das_get_header_time_hist",
metric.WithDescription("duration of getting header from header store"))
if err != nil {
return err
}

newHead, err := meter.SyncInt64().Counter("das_head_updated_counter",
instrument.WithDescription("amount of times DAS'er advanced network head"))
newHead, err := meter.Int64Counter("das_head_updated_counter",
metric.WithDescription("amount of times DAS'er advanced network head"))
if err != nil {
return err
}

lastSampledTS, err := meter.AsyncInt64().Gauge("das_latest_sampled_ts",
instrument.WithDescription("latest sampled timestamp"))
lastSampledTS, err := meter.Int64ObservableGauge("das_latest_sampled_ts",
metric.WithDescription("latest sampled timestamp"))
if err != nil {
return err
}

busyWorkers, err := meter.AsyncInt64().Gauge("das_busy_workers_amount",
instrument.WithDescription("number of active parallel workers in DAS'er"))
busyWorkers, err := meter.Int64ObservableGauge("das_busy_workers_amount",
metric.WithDescription("number of active parallel workers in DAS'er"))
if err != nil {
return err
}

networkHead, err := meter.AsyncInt64().Gauge("das_network_head",
instrument.WithDescription("most recent network head"))
networkHead, err := meter.Int64ObservableGauge("das_network_head",
metric.WithDescription("most recent network head"))
if err != nil {
return err
}

sampledChainHead, err := meter.AsyncInt64().Gauge("das_sampled_chain_head",
instrument.WithDescription("height of the sampled chain - all previous headers have been successfully sampled"))
sampledChainHead, err := meter.Int64ObservableGauge("das_sampled_chain_head",
metric.WithDescription("height of the sampled chain - all previous headers have been successfully sampled"))
if err != nil {
return err
}

totalSampled, err := meter.
AsyncInt64().
Gauge(
"das_total_sampled_headers",
instrument.WithDescription("total sampled headers gauge"),
)
totalSampled, err := meter.Int64ObservableGauge("das_total_sampled_headers",
metric.WithDescription("total sampled headers gauge"),
)
if err != nil {
return err
}
Expand All @@ -100,36 +95,38 @@ func (d *DASer) InitMetrics() error {
newHead: newHead,
}

err = meter.RegisterCallback(
[]instrument.Asynchronous{
lastSampledTS,
busyWorkers,
networkHead,
sampledChainHead,
totalSampled,
},
func(ctx context.Context) {
stats, err := d.sampler.stats(ctx)
if err != nil {
log.Errorf("observing stats: %s", err.Error())
}

for jobType, amount := range stats.workersByJobType() {
busyWorkers.Observe(ctx, amount,
attribute.String(jobTypeLabel, string(jobType)))
}

networkHead.Observe(ctx, int64(stats.NetworkHead))
sampledChainHead.Observe(ctx, int64(stats.SampledChainHead))

if ts := atomic.LoadUint64(&d.sampler.metrics.lastSampledTS); ts != 0 {
lastSampledTS.Observe(ctx, int64(ts))
}

totalSampled.Observe(ctx, int64(stats.totalSampled()))
},
)
callback := func(ctx context.Context, observer metric.Observer) error {
stats, err := d.sampler.stats(ctx)
if err != nil {
log.Errorf("observing stats: %s", err.Error())
return err
}

for jobType, amount := range stats.workersByJobType() {
observer.ObserveInt64(busyWorkers, amount,
metric.WithAttributes(
attribute.String(jobTypeLabel, string(jobType)),
))
}

observer.ObserveInt64(networkHead, int64(stats.NetworkHead))
observer.ObserveInt64(sampledChainHead, int64(stats.SampledChainHead))

if ts := atomic.LoadUint64(&d.sampler.metrics.lastSampledTS); ts != 0 {
observer.ObserveInt64(lastSampledTS, int64(ts))
}

observer.ObserveInt64(totalSampled, int64(stats.totalSampled()))
return nil
}

_, err = meter.RegisterCallback(callback,
lastSampledTS,
busyWorkers,
networkHead,
sampledChainHead,
totalSampled,
)
if err != nil {
return fmt.Errorf("registering metrics callback: %w", err)
}
Expand All @@ -153,16 +150,18 @@ func (m *metrics) observeSample(
ctx = context.Background()
}
m.sampleTime.Record(ctx, sampleTime.Seconds(),
attribute.Bool(failedLabel, err != nil),
attribute.Int(headerWidthLabel, len(h.DAH.RowRoots)),
attribute.String(jobTypeLabel, string(jobType)),
)
metric.WithAttributes(
attribute.Bool(failedLabel, err != nil),
attribute.Int(headerWidthLabel, len(h.DAH.RowRoots)),
attribute.String(jobTypeLabel, string(jobType)),
))

m.sampled.Add(ctx, 1,
attribute.Bool(failedLabel, err != nil),
attribute.Int(headerWidthLabel, len(h.DAH.RowRoots)),
attribute.String(jobTypeLabel, string(jobType)),
)
metric.WithAttributes(
attribute.Bool(failedLabel, err != nil),
attribute.Int(headerWidthLabel, len(h.DAH.RowRoots)),
attribute.String(jobTypeLabel, string(jobType)),
))

atomic.StoreUint64(&m.lastSampledTS, uint64(time.Now().UTC().Unix()))
}
Expand Down
34 changes: 18 additions & 16 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ require (
github.com/alecthomas/jsonschema v0.0.0-20200530073317-71f438968921
github.com/benbjohnson/clock v1.3.5
github.com/celestiaorg/celestia-app v1.0.0-rc9
github.com/celestiaorg/go-fraud v0.1.0
github.com/celestiaorg/go-header v0.2.11
github.com/celestiaorg/go-fraud v0.1.2
github.com/celestiaorg/go-header v0.2.12
github.com/celestiaorg/go-libp2p-messenger v0.2.0
github.com/celestiaorg/nmt v0.17.0
github.com/celestiaorg/rsmt2d v0.10.0
Expand Down Expand Up @@ -63,13 +63,14 @@ require (
github.com/spf13/pflag v1.0.5
github.com/stretchr/testify v1.8.4
github.com/tendermint/tendermint v0.34.28
go.opentelemetry.io/otel v1.13.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.34.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.11.2
go.opentelemetry.io/otel/metric v0.34.0
go.opentelemetry.io/otel/sdk v1.11.2
go.opentelemetry.io/otel/sdk/metric v0.34.0
go.opentelemetry.io/otel/trace v1.13.0
go.opentelemetry.io/otel v1.16.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.39.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.16.0
go.opentelemetry.io/otel/metric v1.16.0
go.opentelemetry.io/otel/sdk v1.16.0
go.opentelemetry.io/otel/sdk/metric v0.39.0
go.opentelemetry.io/otel/trace v1.16.0
go.opentelemetry.io/proto/otlp v0.19.0
go.uber.org/fx v1.19.3
go.uber.org/zap v1.24.0
Expand Down Expand Up @@ -103,7 +104,7 @@ require (
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect
github.com/celestiaorg/quantum-gravity-bridge v1.3.0 // indirect
github.com/cenkalti/backoff/v4 v4.2.0 // indirect
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/chzyer/readline v1.5.1 // indirect
Expand Down Expand Up @@ -174,7 +175,7 @@ require (
github.com/gorilla/websocket v1.5.0 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
github.com/gtank/merlin v0.1.1 // indirect
github.com/gtank/ristretto255 v0.1.2 // indirect
Expand Down Expand Up @@ -304,22 +305,23 @@ require (
github.com/zondax/ledger-go v0.14.1 // indirect
go.etcd.io/bbolt v1.3.6 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.11.2 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.34.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.11.2 // indirect
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.39.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/dig v1.17.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/mod v0.10.0 // indirect
golang.org/x/net v0.10.0 // indirect
golang.org/x/oauth2 v0.7.0 // indirect
golang.org/x/oauth2 v0.8.0 // indirect
golang.org/x/sys v0.8.0 // indirect
golang.org/x/term v0.8.0 // indirect
golang.org/x/tools v0.9.1 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/api v0.114.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
Expand Down
Loading
Loading