Zum Hauptinhalt springen
Stellen Sie sicher, dass Sie den AppSignal Collector installieren, bevor Sie mit diesen Anweisungen fortfahren.

Die OpenTelemetry-Pakete installieren

Verwenden Sie npm, um das OpenTelemetry-SDK und den OTLP-Exporter zu den Abhängigkeiten Ihrer Anwendung hinzuzufügen:
npm install @opentelemetry/sdk-node \
  @opentelemetry/api \
  @opentelemetry/sdk-trace-node \
  @opentelemetry/sdk-metrics \
  @opentelemetry/exporter-trace-otlp-proto \
  @opentelemetry/exporter-metrics-otlp-proto \
  @opentelemetry/auto-instrumentations-node \
  @opentelemetry/semantic-conventions \
  @opentelemetry/resources
Das Paket @opentelemetry/auto-instrumentations-node instrumentiert die meisten Anwendungen und Bibliotheken automatisch. In der README des Pakets finden Sie eine Liste der Bibliotheken und Frameworks, die es instrumentiert. Sie können zusätzliche Instrumentierungen für Bibliotheken und Frameworks im OpenTelemetry Registry finden.

OpenTelemetry in Ihrer Anwendung konfigurieren

Fügen Sie diese Datei opentelemetry.cjs mit der OpenTelemetry-Exporter- und AppSignal-Konfiguration zu Ihrer Anwendung hinzu. Stellen Sie sicher, dass Sie die folgenden Werte mit Ihrem AppSignal-Anwendungsnamen, der Umgebung und dem Push API-Schlüssel aktualisieren und den Exporter-Endpunkt durch die Adresse Ihres AppSignal Collectors ersetzen, falls erforderlich.
const os = require("os");
const { NodeSDK } = require("@opentelemetry/sdk-node");
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
const {
  PeriodicExportingMetricReader,
  AggregationTemporality,
} = require("@opentelemetry/sdk-metrics");
const { resourceFromAttributes } = require("@opentelemetry/resources");
const { ATTR_SERVICE_NAME } = require("@opentelemetry/semantic-conventions");
const {
  OTLPTraceExporter,
} = require("@opentelemetry/exporter-trace-otlp-proto");
const {
  OTLPMetricExporter,
} = require("@opentelemetry/exporter-metrics-otlp-proto");
const {
  getNodeAutoInstrumentations,
} = require("@opentelemetry/auto-instrumentations-node");

// Replace these values with your AppSignal application name, environment
// and push API key. These are used by the resource attributes configuration below.
const name = "My app";
const pushApiKey = "0000-0000-0000-0000";

const environment = process.env.NODE_ENV || "production";

// Set the name of the service that is being monitored. A common choice is the
// name of the framework used. This is used to group traces and metrics in AppSignal.
const serviceName = "My service name";

// Replace `http://localhost:8099` with the address of your AppSignal collector
// if it's running on another host.
const endpoint = "http://localhost:8099";

const revision = childProcess.execSync("git rev-parse --short HEAD").toString();

const resource = new resourceFromAttributes({
  "appsignal.config.name": name,
  "appsignal.config.environment": environment,
  "appsignal.config.push_api_key": "0000-0000-0000-0000",
  "appsignal.config.revision": revision,
  "appsignal.config.language_integration": "node.js",
  "appsignal.config.app_path": process.cwd(),
  "host.name": os.hostname(),
  [ATTR_SERVICE_NAME]: "My service name",
});

const sdk = new NodeSDK({
  resource,
  traceExporter: new OTLPTraceExporter({
    url: `${endpoint}/v1/traces`,
  }),
  metricReader: new PeriodicExportingMetricReader({
    exportIntervalMillis: 10000,
    exporter: new OTLPMetricExporter({
      url: `${endpoint}/v1/metrics`,
    }),
  }),
  instrumentations: [getNodeAutoInstrumentations()],
});

sdk.start();

Ihre Anwendung mit OpenTelemetry starten

Um Ihre Anwendung mit OpenTelemetry auszuführen, müssen Sie die Option --require verwenden, um die Datei opentelemetry.cjs vor dem Start Ihrer Anwendung zu laden:
node --require ./opentelemetry.cjs index.js
Aktualisieren Sie Ihre package.json-Datei, um --require zu dem Befehl hinzuzufügen, der Ihre App startet.
{
  // other configuration...
  "scripts": {
    "server": "node --require ./opentelemetry.cjs index.js"
  }
}
Sie können die Option --require auch mit Tools wie ts-node und nodemon verwenden. Wenn Sie eine Wrapper-CLI wie nest start oder fastify start zum Starten Ihrer Anwendung verwenden, verwenden Sie die Umgebungsvariable NODE_OPTIONS, um die Option an die Node.js-Laufzeit zu übergeben:
NODE_OPTIONS='--require ./appsignal.cjs' nest start

Die App testen!

Nachdem nun alle Komponenten verbunden sind, starten Sie Ihre App mit den erforderlichen Befehlszeilenargumenten und testen Sie, ob Daten in AppSignal eintreffen. Überprüfen Sie insbesondere die Seiten „Errors > Issue list” und „Performance > Traces”. Wenn Sie nach dem Befolgen unserer Installationsanweisungen immer noch keine Daten in AppSignal sehen, lassen Sie es uns wissen, und wir helfen Ihnen, Ihre OpenTelemetry-Installation abzuschließen!