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

Hızlı Başlangıç

Eklenti Geliştirmeye Genel Bakış
İlk Eklentinizi Yazma
Proje Dizin Yapısı

Sunucu Taraflı Geliştirme

Genel Bakış
Plugin
Collections
Database İşlemleri
DataSourceManager
ResourceManager
ACL İzin Kontrolü
Middleware
Cache
Event
Context
Migration
Logger
I18n
Command
CronJobManager
Test

İstemci Taraflı Geliştirme

Genel Bakış
Plugin
Context
Router
ACL İzin Kontrolü
DataSourceManager
Resource
Request
Styles & Themes
Logger
I18n
Test

Diğer

Eklenti Yükseltme Kılavuzu
Dil Listesi
Bağımlılık Yönetimi
Derleme
Next PageEklenti Geliştirmeye Genel Bakış
AI Çeviri Bildirimi

Bu belge yapay zeka tarafından çevrilmiştir. Doğru bilgi için İngilizce sürüme bakın.

#Telemetri

Deneysel

NocoBase'in telemetri (telemetry) modülü, OpenTelemetry temel alınarak kapsüllenmiştir. Bu makale, NocoBase sisteminin gözlemlenebilirliğini (observability) artırmak için izleme (trace) ve metrik (metric) verilerini toplamak üzere telemetri modülünün nasıl kullanılacağını tanıtmaktadır.

#Enstrümantasyon (Instrumentation)

#Metrikler

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

Referanslar:

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

#İzlemeler (Traces)

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

Referanslar:

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

#Kütüphaneler

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

NocoBase'de telemetri modülünün başlatılma konumu app.beforeLoad şeklindedir. Bu nedenle, tüm enstrümantasyon kütüphaneleri NocoBase için uygun değildir.
Örneğin: instrumentation-koa'nın Koa örneği oluşturulmadan önce dahil edilmesi gerekir; ancak NocoBase'in Application yapısı Koa tabanlı olsa da, telemetri modülü Application örneği oluşturulduktan sonra başlatılır, bu yüzden kullanılamaz.

Referanslar:

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

#Toplama (Collection)

#Metrikler

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

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

Referanslar:

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