An OpenTelemetry SpanProcessor
reporting tracing flow metrics.
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.
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'