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

Schnellstart

Plugin-Entwicklung: Überblick
Erstes Plugin schreiben
Projektverzeichnisstruktur

Serverseitige Entwicklung

Überblick
Plugin
Collections (Datentabellen)
Datenbankoperationen
DataSourceManager
ResourceManager
ACL-Zugriffskontrolle
Middleware
Cache
Events
Request-Kontext
Migration (Update-Skripte)
Logger (Protokollierung)
I18n (Internationalisierung)
Command (Befehlszeile)
CronJobManager
Tests

Clientseitige Entwicklung

Überblick
Plugin
Kontext
Router
ACL-Zugriffskontrolle
DataSourceManager
Ressourcen
Requests
Stile & Themes
Logger (Protokollierung)
I18n (Internationalisierung)
Tests

Sonstiges

Plugin-Update-Leitfaden
Sprachenliste
Abhängigkeitsverwaltung
Build
Next PagePlugin-Entwicklung: Überblick
KI-Übersetzungshinweis

Dieses Dokument wurde von KI übersetzt. Für genaue Informationen lesen Sie bitte die englische Version.

#Telemetrie

Experimentell

Das Telemetrie-Modul von NocoBase basiert auf OpenTelemetry. Dieser Artikel beschreibt, wie Sie das Telemetrie-Modul verwenden, um Traces (Ablaufverfolgung) und Metriken zu sammeln, um die Beobachtbarkeit (Observability) des NocoBase-Systems zu verbessern.

#Instrumentierung

#Metriken

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

Referenzen:

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

#Traces

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

Referenzen:

  • 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());
    });
  }
}
Hinweis

In NocoBase erfolgt die Initialisierung des Telemetrie-Moduls zum Zeitpunkt app.beforeLoad. Daher sind nicht alle Instrumentierungs-Bibliotheken für NocoBase geeignet.
Beispielsweise muss instrumentation-koa vor der Instanziierung von Koa eingebunden werden. Obwohl die Application von NocoBase auf Koa basiert, wird das Telemetrie-Modul erst nach der Instanziierung der Application initialisiert, weshalb diese Bibliothek nicht verwendet werden kann.

Referenzen:

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

#Erfassung

#Metriken

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()),
      );
    });
  }
}

Referenzen:

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