flow

An OpenTelemetry SpanProcessor reporting tracing flow metrics

APACHE-2.0 License

Stars
7

flow

An OpenTelemetry SpanProcessor reporting tracing flow metrics.

Getting Started

Assuming you have working code using the OpenTelemetry SDK, update the registration of your exporter to use a wrapped SpanProcessor.

Update your exporter registration with a BatchSpanProcessor to use the equivalent flow TracerProviderOption.

import (
	"github.com/MrAlias/flow"
	"go.opentelemetry.io/otel/sdk/trace"
)

func main() {
	sdk := trace.NewTracerProvider(flow.WithBatcher(exporter{}))
	/* ... */
}

More generically, all SpanProcessors can be wrapped directly.

import (
	"github.com/MrAlias/flow"
	"go.opentelemetry.io/otel/sdk/trace"
)

func main() {
	spanProcessor := trace.NewSimpleSpanProcessor(exporter{})
	sdk := trace.NewTracerProvider(flow.WithSpanProcessor(spanProcessor))
	/* ... */
}

See the included example for an end-to-end illustration of functionality.

Produced Metrics

The flow SpanProcessor will report spans_total metrics as a counter. They are exposed at localhost:41820 by default (this can be changed using the WithListenAddress option).

$ curl -s http://localhost:41820/metrics | grep 'spans_total'

# HELP spans_total The total number of processed spans
# TYPE spans_total counter
spans_total{state="ended"} 762
spans_total{state="started"} 762

Configure a locally running Prometheus or OpenTelemetry Collector instance to scrape these using a scrape target similar to this.

scrape_configs:
- job_name: myapp
  static_configs:
  - targets:
    - 'localhost:41820'
Package Rankings
Top 8.17% on Proxy.golang.org
Badges
Extracted from project README
Go Reference
Related Projects