# README
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 SpanProcessor
s 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'
# Functions
WithBatcher returns an option that registers exporter using a BatchSpanProcessor with a TracerProvider after wrapping it to report telemetry flow metrics.
WithListenAddress sets the listen address of the HTTP server.
WithSpanProcessor returns an option that registers spanProcessor with a TracerProvider after wrapping it to report telemetry flow metrics.
Wrap returns a wrapped version of the downstream SpanProcessor with telemetry flow reporting.
# Constants
DefaultListenAddress is the listen address of the HTTP server if not configured with the WithListenAddress option.
DefaultListenPort is the port the HTTP server listens on if not configured with the WithListenAddress option.
# Interfaces
Option configures the flow SpanProcessor.