Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mralias/flow
An OpenTelemetry SpanProcessor reporting tracing flow metrics
https://github.com/mralias/flow
metrics opentelemetry opentelemetry-go otel prometheus tracing
Last synced: 2 months ago
JSON representation
An OpenTelemetry SpanProcessor reporting tracing flow metrics
- Host: GitHub
- URL: https://github.com/mralias/flow
- Owner: MrAlias
- License: apache-2.0
- Created: 2022-02-28T19:12:01.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-08-25T14:25:10.000Z (5 months ago)
- Last Synced: 2024-08-25T15:39:20.108Z (5 months ago)
- Topics: metrics, opentelemetry, opentelemetry-go, otel, prometheus, tracing
- Language: Go
- Homepage:
- Size: 190 KB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# flow
[![Go Reference](https://pkg.go.dev/badge/github.com/MrAlias/flow.svg)](https://pkg.go.dev/github.com/MrAlias/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`].```go
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.
```go
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](./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).```sh
$ 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.```yaml
scrape_configs:
- job_name: myapp
static_configs:
- targets:
- 'localhost:41820'
```[`SpanProcessor`]: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/trace#SpanProcessor
[`BatchSpanProcessor`]: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/trace#NewBatchSpanProcessor
[`TracerProviderOption`]: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/trace#TracerProviderOption
[Prometheus]: https://prometheus.io/docs/prometheus/latest/configuration/configuration/
[OpenTelemetry Collector]: https://opentelemetry.io/docs/collector/configuration/#receivers