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

Mulai Cepat

Gambaran Umum Pengembangan Plugin
Menulis Plugin Pertama
Struktur Direktori Proyek

Pengembangan Sisi Server

Ikhtisar
Plugin
Collections
Operasi Database
Manajemen Sumber Data
Manajemen Sumber Daya
ACL
Middleware
Cache
Event
Konteks Permintaan
Skrip Migrasi
Logger
I18n
Command
Manajemen Tugas Terjadwal
Test

Pengembangan Sisi Klien

Ikhtisar
Plugin
Konteks
Router
ACL
Manajemen Sumber Data
Resource
Request
Gaya & Tema
Logger
I18n
Test

Lainnya

Panduan Peningkatan Plugin
Daftar Bahasa
Manajemen Dependensi
Build
Next PageGambaran Umum Pengembangan Plugin
Pemberitahuan Terjemahan AI

Dokumen ini diterjemahkan oleh AI. Untuk informasi yang akurat, silakan merujuk ke versi bahasa Inggris.

#Telemetri

Eksperimental

Modul telemetri (Telemetry) NocoBase dienkapsulasi berdasarkan OpenTelemetry. Artikel ini menjelaskan cara menggunakan modul telemetri untuk mengumpulkan data jejak (Trace) dan metrik (Metric) guna meningkatkan observabilitas (Observability) sistem NocoBase.

#Instrumentasi

#Metrik

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

Referensi:

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

#Jejak (Traces)

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

Referensi:

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

#Pustaka (Libraries)

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

Lokasi inisialisasi modul telemetri di NocoBase adalah pada app.beforeLoad. Oleh karena itu, tidak semua pustaka instrumentasi cocok untuk NocoBase.
Misalnya: instrumentation-koa perlu diperkenalkan sebelum Koa diinstansiasi, sementara meskipun Application NocoBase berbasis Koa, modul telemetri baru diinisialisasi setelah Application diinstansiasi, sehingga tidak dapat diterapkan.

Referensi:

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

#Koleksi

#Metrik

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

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

Referensi:

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