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

Avvio Rapido

Panoramica Sviluppo Plugin
Scrivere il Primo Plugin
Struttura Directory Progetto

Sviluppo Server-side

Panoramica
Plugin
Collezioni (Tabelle Dati)
Operazioni Database
Gestione Origini Dati (DataSourceManager)
Gestione Risorse (ResourceManager)
Controllo Accessi (ACL)
Middleware
Cache
Eventi
Contesto Richiesta
Script di Migrazione
Logger
Internazionalizzazione (I18n)
Comando
Gestione Cron Job
Test

Sviluppo Client-side

Panoramica
Plugin
Contesto
Router
Controllo Accessi (ACL)
Gestione Origini Dati (DataSourceManager)
Risorse
Richieste
Stili e Temi
Logger
Internazionalizzazione (I18n)
Test

Altro

Guida all'Aggiornamento Plugin
Elenco Lingue
Gestione Dipendenze
Build
Next PagePanoramica Sviluppo Plugin
Avviso di traduzione IA

Questo documento è stato tradotto dall'IA. Per informazioni accurate, consultare la versione inglese.

#Telemetria

Sperimentale

Il modulo di telemetria (Telemetry) di NocoBase è incapsulato sulla base di OpenTelemetry. Questo articolo introduce come utilizzare il modulo di telemetria per raccogliere dati di tracciamento (Trace) e metriche (Metric) al fine di migliorare l'osservabilità (Observability) del sistema NocoBase.

#Strumentazione

#Metriche

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

Riferimenti:

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

#Tracciamenti (Trace)

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

Riferimenti:

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

#Librerie di strumenti

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

In NocoBase, il punto di inizializzazione del modulo di telemetria è app.beforeLoad. Pertanto, non tutte le librerie di strumentazione sono adatte a NocoBase.
Ad esempio: instrumentation-koa deve essere introdotta prima che Koa venga istanziato; tuttavia, sebbene l'Application di NocoBase sia basata su Koa, il modulo di telemetria viene inizializzato solo dopo l'istanziazione di Application, quindi non può essere applicata.

Riferimenti:

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

#Raccolta

#Metriche

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

#Tracciamenti (Trace)

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

Riferimenti:

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