logologo
Start
Handleiding
Ontwikkeling
Plugins
API
Startpagina
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Start
Handleiding
Ontwikkeling
Plugins
API
Startpagina
logologo

Snelstart

Overzicht plug-inontwikkeling
Eerste plug-in schrijven
Projectstructuur

Server-side ontwikkeling

Overzicht
Plug-in
Collecties
Database
DataSourceManager
ResourceManager
ACL
Middleware
Cache
Events
Context
Migratie
Logger
I18n
Commando
CronJobManager
Test

Client-side ontwikkeling

Overzicht
Plug-in
Context
Router
ACL
DataSourceManager
Resource
Request
Stijlen & Thema's
Logger
I18n
Test

Overig

Upgrade-gids voor plug-ins
Talenlijst
Dependency-beheer
Build
Next PageOverzicht plug-inontwikkeling
AI-vertaalmelding

Dit document is vertaald door AI. Raadpleeg de Engelse versie voor nauwkeurige informatie.

#Telemetrie

Experimenteel

De telemetrie-module van NocoBase is ingekapseld op basis van OpenTelemetry. Dit artikel beschrijft hoe u de telemetrie-module kunt gebruiken om Trace- en Metric-gegevens te verzamelen om de observeerbaarheid (Observability) van het NocoBase-systeem te verbeteren.

#Instrumentatie

#Metrieken

const meter = app.telemetry.metric.getMeter();
const counter = meter.createCounter('event_counter', {});
counter.add(1);

Referenties:

  • https://opentelemetry.io/docs/instrumentation/js/manual/#acquiring-a-meter

#Traces

const tracer = app.telemetry.trace.getTracer();
tracer.startActiveSpan();
tracer.startSpan();

Referenties:

  • https://opentelemetry.io/docs/instrumentation/js/manual/#acquiring-a-tracer

#Bibliotheken

import { Plugin } from '@nocobase/server';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';

class InstrumentationPlugin extends Plugin {
  afterAdd() {
    this.app.on('beforeLoad', (app) => {
      app.telemetry.addInstrumentation(getNodeAutoInstrumentations());
    });
  }
}
Let op

In NocoBase is de initialisatielocatie van de telemetrie-module app.beforeLoad. Daarom zijn niet alle instrumentatie-bibliotheken geschikt voor NocoBase.
Bijvoorbeeld: instrumentation-koa moet worden geïntroduceerd voordat Koa wordt geïnstantieerd. Hoewel de Application van NocoBase is gebaseerd op Koa, wordt de telemetrie-module pas geïnitialiseerd nadat de Application is geïnstantieerd, waardoor deze niet kan worden toegepast.

Referenties:

  • https://opentelemetry.io/docs/instrumentation/js/libraries/

#Verzameling

#Metrieken

import { Plugin } from '@nocobase/server';
import {
  PeriodicExportingMetricReader,
  ConsoleMetricExporter,
} from '@opentelemetry/sdk-metrics';

class MetricReaderPlugin extends Plugin {
  afterAdd() {
    this.app.on('beforeLoad', (app) => {
      app.telemetry.metric.registerReader(
        'console',
        () =>
          new PeriodicExportingMetricReader({
            exporter: new ConsoleMetricExporter(),
          }),
      );
    });
  }
}

#Traces

import { Plugin } from '@nocobase/server';
import {
  BatchSpanProcessor,
  ConsoleSpanExporter,
} from '@opentelemetry/sdk-trace-base';

class TraceSpanProcessorPlugin extends Plugin {
  afterAdd() {
    this.app.on('beforeLoad', (app) => {
      app.telemetry.trace.registerProcessor(
        'console',
        () => new BatchSpanProcessor(new ConsoleSpanExporter()),
      );
    });
  }
}

Referenties:

  • https://opentelemetry.io/docs/instrumentation/js/exporters