@artusx/otl
TypeScript icon, indicating that this package has built-in type declarations

1.1.5-19 • Public • Published

@artusx/otl

https://opentelemetry.io/docs/languages/js/

Opentelemetry for ArtusX.

Usage

Automatic Instrumentation setup

init opentelemetry with default config.

  • KoaInstrumentation
  • HttpInstrumentation
import path from 'path';
import { initOtl } from '@artusx/otl';
import { bootstrap } from '@artusx/utils';

const ROOT_DIR = path.resolve(__dirname);

initOtl('artusx-koa', '1.0.0');
bootstrap({ root: ROOT_DIR });

Manual instrumentation setup

custom tracer and meter.

import path from 'path';
import {
  initOtl,
  initMeter,
  initTracer,
} from '@artusx/otl';
import { bootstrap } from '@artusx/utils';

const ROOT_DIR = path.resolve(__dirname);

// initOtl('artusx-koa', '1.0.0');
initMeter();
initTracer();

bootstrap({ root: ROOT_DIR });

addEvent and counter

import { ArtusXInjectEnum, Inject, Controller, GET } from '@artusx/core';
import { getMeter, getTracer, Span } from '@artusx/otl';

const meter = getMeter('artusx-koa', '1.0.0');
const tracer = getTracer('artusx-koa', '1.0.0');
const homeCounter = meter.createCounter('home.counter');

@Controller()
export default class HomeController {
  @Inject(ArtusXInjectEnum.Nunjucks)
  nunjucks: NunjucksClient;

  @GET('/')
  async home(ctx: ArtusXContext) {
    // meter
    homeCounter.add(1);

    // tracer
    tracer.startActiveSpan('home', (span: Span) => {      
      span.addEvent('home', { key: 'home', value: Math.random() });
      
      ctx.body = this.nunjucks.render('index.html', { title: 'ArtusX', message: 'Hello ArtusX!' });
      span.end();
    });  
  }  
}

Readme

Keywords

Package Sidebar

Install

npm i @artusx/otl

Weekly Downloads

6

Version

1.1.5-19

License

MIT

Unpacked Size

8.54 kB

Total Files

12

Last publish

Collaborators

  • thonatos