Opentelemetry
Examples -> Opentelemetry
The Opentelemetry extension instruments requests with OpenTelemetry.
Getting Started
Opentelemetry is a first party extension shipping in the graffle package. You will need to install some peer dependencies though.
Graffle has an optional peer-dependency on @opentelemetry/api. You'll need to install a compatible version into your project and likely a handful of other @opentelemetry/* dependencies too. Check out the example for a working demo and some of what those deps might be.
pnpm add @opentelemetry/apiimport { Graffle } from 'graffle'
import { OpenTelemetry } from 'graffle/extensions/opentelemetry'
const graffle = Graffle.create().use(OpenTelemetry())Span Structure
Each request executed has a span created named request under a tracer called (by default) graffle. Within the request there is a span for each hook.
|- request
|- encode
|- pack
|- exchange
|- unpack
|- decodeUnless you know what you're doing, make sure to use the Opentelemetry before all other extensions. Any other extensions used before it will not have their work recorded in the OpenTelemetry span durations which is probably not want you want.
Attributes
Currently no special attributes are written to spans. This could change. We'd love to hear feature requests from you about this.
Errors
Currently there is no special error recording on spans should a hook fail. This will likely change in the future (PRs always welcome!).