Skip to content
Graffle is a work in progress. Learn more.

Opentelemetry

ts

import { 
ConsoleSpanExporter
,
SimpleSpanProcessor
} from '@opentelemetry/sdk-trace-base'
import {
NodeTracerProvider
} from '@opentelemetry/sdk-trace-node'
import {
OpenTelemetry
} from 'graffle/extensions/opentelemetry'
import {
Graffle
} from './graffle/_namespace.js'
// Setup Opentelemetry // 1. Initialize the OpenTelemetry provider // 2. Register the provider to make the OpenTelemetry API use it const
exporter
= new
ConsoleSpanExporter
()
const
processor
= new
SimpleSpanProcessor
(
exporter
)
const
provider
= new
NodeTracerProvider
({
spanProcessors
: [
processor
],
})
provider
.
register
()
const
graffle
=
Graffle
.
create
().
use
(
OpenTelemetry
())
const
data
= await
graffle
.
gql
`query { pokemons { name } }`.
send
()
console.log(
data
)

Outputs

txt
{
  resource: {
    attributes: {
      'service.name': 'unknown_service:/Users/jasonkuhrt/Library/pnpm/nodejs/22.14.0/bin/node',
      'telemetry.sdk.language': 'nodejs',
      'telemetry.sdk.name': 'opentelemetry',
      'telemetry.sdk.version': '1.30.0'
    }
  },
  instrumentationScope: { name: 'graffle', version: undefined, schemaUrl: undefined },
  traceId: '67ad1efb64b608bbda72afb201dfc77e',
  parentId: '44d095605ecf4f3d',
  traceState: undefined,
  name: 'encode',
  id: 'c1c2bc343d68d7fa',
  kind: 0,
  timestamp: 1745012194894000,
  duration: 718.875,
  attributes: {},
  status: { code: 0 },
  events: [],
  links: []
}
txt
{
  resource: {
    attributes: {
      'service.name': 'unknown_service:/Users/jasonkuhrt/Library/pnpm/nodejs/22.14.0/bin/node',
      'telemetry.sdk.language': 'nodejs',
      'telemetry.sdk.name': 'opentelemetry',
      'telemetry.sdk.version': '1.30.0'
    }
  },
  instrumentationScope: { name: 'graffle', version: undefined, schemaUrl: undefined },
  traceId: '67ad1efb64b608bbda72afb201dfc77e',
  parentId: '44d095605ecf4f3d',
  traceState: undefined,
  name: 'pack',
  id: '15ac5fd26e09428d',
  kind: 0,
  timestamp: 1745012194895000,
  duration: 767,
  attributes: {},
  status: { code: 0 },
  events: [],
  links: []
}
txt
{
  resource: {
    attributes: {
      'service.name': 'unknown_service:/Users/jasonkuhrt/Library/pnpm/nodejs/22.14.0/bin/node',
      'telemetry.sdk.language': 'nodejs',
      'telemetry.sdk.name': 'opentelemetry',
      'telemetry.sdk.version': '1.30.0'
    }
  },
  instrumentationScope: { name: 'graffle', version: undefined, schemaUrl: undefined },
  traceId: '67ad1efb64b608bbda72afb201dfc77e',
  parentId: '44d095605ecf4f3d',
  traceState: undefined,
  name: 'exchange',
  id: '8a80f9e217ba13e6',
  kind: 0,
  timestamp: 1745012194896000,
  duration: 24233.5,
  attributes: {},
  status: { code: 0 },
  events: [],
  links: []
}
txt
{
  resource: {
    attributes: {
      'service.name': 'unknown_service:/Users/jasonkuhrt/Library/pnpm/nodejs/22.14.0/bin/node',
      'telemetry.sdk.language': 'nodejs',
      'telemetry.sdk.name': 'opentelemetry',
      'telemetry.sdk.version': '1.30.0'
    }
  },
  instrumentationScope: { name: 'graffle', version: undefined, schemaUrl: undefined },
  traceId: '67ad1efb64b608bbda72afb201dfc77e',
  parentId: '44d095605ecf4f3d',
  traceState: undefined,
  name: 'unpack',
  id: 'b293c25f3c6d0732',
  kind: 0,
  timestamp: 1745012194921000,
  duration: 759.583,
  attributes: {},
  status: { code: 0 },
  events: [],
  links: []
}
txt
{
  resource: {
    attributes: {
      'service.name': 'unknown_service:/Users/jasonkuhrt/Library/pnpm/nodejs/22.14.0/bin/node',
      'telemetry.sdk.language': 'nodejs',
      'telemetry.sdk.name': 'opentelemetry',
      'telemetry.sdk.version': '1.30.0'
    }
  },
  instrumentationScope: { name: 'graffle', version: undefined, schemaUrl: undefined },
  traceId: '67ad1efb64b608bbda72afb201dfc77e',
  parentId: '44d095605ecf4f3d',
  traceState: undefined,
  name: 'decode',
  id: '3b2a076ba45fff46',
  kind: 0,
  timestamp: 1745012194922000,
  duration: 477.459,
  attributes: {},
  status: { code: 0 },
  events: [],
  links: []
}
txt
{
  resource: {
    attributes: {
      'service.name': 'unknown_service:/Users/jasonkuhrt/Library/pnpm/nodejs/22.14.0/bin/node',
      'telemetry.sdk.language': 'nodejs',
      'telemetry.sdk.name': 'opentelemetry',
      'telemetry.sdk.version': '1.30.0'
    }
  },
  instrumentationScope: { name: 'graffle', version: undefined, schemaUrl: undefined },
  traceId: '67ad1efb64b608bbda72afb201dfc77e',
  parentId: undefined,
  traceState: undefined,
  name: 'request',
  id: '44d095605ecf4f3d',
  kind: 0,
  timestamp: 1745012194893000,
  duration: 28937.334,
  attributes: {},
  status: { code: 0 },
  events: [],
  links: []
}
txt
{
  pokemons: [
    { name: 'Pikachu' },
    { name: 'Charizard' },
    { name: 'Squirtle' },
    { name: 'Bulbasaur' },
    { name: 'Caterpie' },
    { name: 'Weedle' }
  ]
}

Released under the MIT License.