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 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.
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"} 762Configure 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'