Skip to content

Commit

Permalink
STAC-21861: Produce metric to track the usage of traces
Browse files Browse the repository at this point in the history
  • Loading branch information
aacevedoosorio committed Nov 14, 2024
1 parent b510b17 commit 08192f5
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 5 deletions.
24 changes: 21 additions & 3 deletions exporter/clickhousestsexporter/exporter_traces.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
"context"
"database/sql"
"fmt"
"github.com/stackvista/sts-opentelemetry-collector/exporter/clickhousestsexporter/internal/metadata"
"go.opentelemetry.io/otel/metric"
"strings"
"time"

Expand All @@ -23,11 +25,13 @@ type tracesExporter struct {
insertSQL string
resourceExporter *resourcesExporter

logger *zap.Logger
cfg *Config
logger *zap.Logger
cfg *Config
sizer ptrace.Sizer
tracesBytes metric.Int64Counter
}

func newTracesExporter(logger *zap.Logger, cfg *Config) (*tracesExporter, error) {
func newTracesExporter(logger *zap.Logger, set component.TelemetrySettings, cfg *Config) (*tracesExporter, error) {
client, err := newClickhouseClient(cfg)
if err != nil {
return nil, err
Expand All @@ -37,12 +41,21 @@ func newTracesExporter(logger *zap.Logger, cfg *Config) (*tracesExporter, error)
return nil, err
}

meter := metadata.Meter(set)
tracesBytesCounter, _ := meter.Int64Counter(
"suse_observability_usage_bytes_accepted_traces",
metric.WithDescription("Number of spans dropped when trying to add edges"),
metric.WithUnit("By"),
)

return &tracesExporter{
client: client,
insertSQL: renderInsertTracesSQL(cfg),
resourceExporter: resourceExporter,
logger: logger,
cfg: cfg,
sizer: &ptrace.ProtoMarshaler{},
tracesBytes: tracesBytesCounter,
}, nil
}

Expand Down Expand Up @@ -157,6 +170,11 @@ func (e *tracesExporter) pushTraceData(ctx context.Context, td ptrace.Traces) er
duration := time.Since(start)
e.logger.Debug("insert traces", zap.Int("records", td.SpanCount()),
zap.String("cost", duration.String()))

// Report usage
bytes := int64(e.sizer.TracesSize(td))
e.tracesBytes.Add(ctx, bytes)

e.resourceExporter.InsertResources(ctx, resources)
return err
}
Expand Down
3 changes: 2 additions & 1 deletion exporter/clickhousestsexporter/exporter_traces_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package clickhousestsexporter
import (
"context"
"database/sql/driver"
"go.opentelemetry.io/collector/component/componenttest"
"strings"
"testing"
"time"
Expand Down Expand Up @@ -85,7 +86,7 @@ func TestExporter_pushTracesData(t *testing.T) {
}

func newTestTracesExporter(t *testing.T, dsn string, fns ...func(*Config)) *tracesExporter {
exporter, err := newTracesExporter(zaptest.NewLogger(t), withTestExporterConfig(fns...)(dsn))
exporter, err := newTracesExporter(zaptest.NewLogger(t), componenttest.NewNopTelemetrySettings(), withTestExporterConfig(fns...)(dsn))
require.NoError(t, err)
require.NoError(t, exporter.start(context.TODO(), nil))

Expand Down
2 changes: 1 addition & 1 deletion exporter/clickhousestsexporter/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func createTracesExporter(
cfg component.Config,
) (exporter.Traces, error) {
c := cfg.(*Config)
exporter, err := newTracesExporter(set.Logger, c)
exporter, err := newTracesExporter(set.Logger, set.TelemetrySettings, c)
if err != nil {
return nil, fmt.Errorf("cannot configure clickhouse traces exporter: %w", err)
}
Expand Down

0 comments on commit 08192f5

Please sign in to comment.