@opentelemetry/instrumentation-koa
TypeScript icon, indicating that this package has built-in type declarations

0.40.0 • Public • Published

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.

Status

Maturity Component Owner Compatibility
Unmaintained N/A API 1.0+
SDK 1.0+

Installation

npm install --save @opentelemetry/instrumentation-koa

Supported Versions

  • koa: ^2.0.0
  • @koa/router: >=8

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

Options Type Example Description
ignoreLayersType KoaLayerType[] ['middleware'] Ignore layers of specified type.
requestHook KoaRequestCustomAttributeFunction (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.

import { KoaInstrumentation } from "@opentelemetry/instrumentation-koa"

const koaInstrumentation = new KoaInstrumentation({
  requestHook: function (span: Span, info: KoaRequestInfo) {
    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.

Package Sidebar

Install

npm i @opentelemetry/instrumentation-koa

Weekly Downloads

585,481

Version

0.40.0

License

Apache-2.0

Unpacked Size

58.4 kB

Total Files

24

Last publish

Collaborators

  • pichlermarc
  • bogdandrutu
  • dyladan