0.44.0 • Published 9 months ago

@opentelemetry/instrumentation-koa v0.44.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
9 months ago

OpenTelemetry Koa Instrumentation for Node.js

NPM Published Version Apache License

This module provides automatic instrumentation for the Koa module, which may be loaded using the @opentelemetry/sdk-trace-node package and is included in the @opentelemetry/auto-instrumentations-node bundle.

If total installation size is not constrained, it is recommended to use the @opentelemetry/auto-instrumentations-node bundle with @opentelemetry/sdk-node for the most seamless instrumentation experience.

Compatible with OpenTelemetry JS API and SDK 1.0+.

Status

MaturityComponent OwnerCompatibility
UnmaintainedN/AAPI 1.0+SDK 1.0+

Installation

npm install --save @opentelemetry/instrumentation-koa

Supported Versions

Usage

OpenTelemetry Koa Instrumentation allows the user to automatically collect trace data and export them to their backend of choice, to give observability to distributed systems.

const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const { KoaInstrumentation } = require('@opentelemetry/instrumentation-koa');

const provider = new NodeTracerProvider();
provider.register();

registerInstrumentations({
  instrumentations: [
    new KoaInstrumentation(),
  ],
});

See examples/koa for a short example using both Koa and @koa/router.

Note that generator-based middleware are deprecated and won't be instrumented.

Koa Instrumentation Options

OptionsTypeExampleDescription
ignoreLayersTypeKoaLayerType[]['middleware']Ignore layers of specified type.
requestHookKoaRequestCustomAttributeFunction(span, info) => {}Function for adding custom attributes to Koa middleware layers. Receives params: Span, KoaRequestInfo.

ignoreLayersType accepts an array of KoaLayerType which can take the following string values:

  • router,
  • middleware.

Using requestHook

Instrumentation configuration accepts a custom "hook" function which will be called for every instrumented Koa middleware layer involved in a request. Custom attributes can be set on the span or run any custom logic per layer.

NOTE: KoaRequestInfo.context and KoaRequestInfo.middlewareLayer are typed as any. If you want type support make sure you have @types/koa and @types/koa__router installed then you can use the following type definitions:

import { KoaInstrumentation } from "@opentelemetry/instrumentation-koa"
import type { Middleware, ParameterizedContext, DefaultState } from 'koa';
import type { RouterParamContext } from '@koa/router';

type KoaContext = ParameterizedContext<DefaultState, RouterParamContext>;
type KoaMiddleware = Middleware<DefaultState, KoaContext>;

const koaInstrumentation = new KoaInstrumentation({
  requestHook: function (span: Span, info: KoaRequestInfo<KoaContext, KoaMiddleware>) {
    span.setAttribute(
      'http.method',
      info.context.request.method
    )
  }
});

Koa Packages

This package provides automatic tracing for middleware added using either the core koa package or the @koa/router package.

Useful links

License

Apache 2.0 - See LICENSE for more information.

0.44.0

9 months ago

0.43.0

10 months ago

0.42.0

1 year ago

0.41.0

1 year ago

0.40.0

1 year ago

0.39.0

1 year ago

0.38.0

1 year ago

0.37.0

1 year ago

0.36.4

2 years ago

0.36.3

2 years ago

0.36.2

2 years ago

0.36.1

2 years ago

0.36.0

2 years ago

0.35.0

2 years ago

0.34.6

2 years ago

0.34.5

2 years ago

0.34.4

2 years ago

0.34.3

2 years ago

0.34.2

2 years ago

0.34.1

2 years ago

0.34.0

3 years ago

0.33.0

3 years ago

0.32.0

3 years ago

0.31.0

3 years ago

0.30.0

3 years ago

0.29.0

3 years ago

0.28.1

3 years ago

0.28.0

4 years ago

0.27.0

4 years ago

0.26.0

4 years ago

0.25.0

4 years ago

0.24.0

4 years ago

0.23.0

4 years ago

0.22.0

4 years ago

0.21.0

4 years ago

0.20.0

4 years ago

0.16.0

4 years ago

0.15.0

4 years ago

0.14.0

4 years ago