> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Installatie van OpenTelemetry Node.js

Zorg ervoor dat u [de AppSignal collector installeert](/opentelemetry/installation) voordat u verdergaat met deze instructies.

## Installeer de OpenTelemetry-pakketten

Gebruik npm om de OpenTelemetry SDK en de OTLP-exporter toe te voegen aan de dependencies van uw applicatie:

<CodeGroup>
  ```shell Shell theme={null}
  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
  ```
</CodeGroup>

Het pakket `@opentelemetry/auto-instrumentations-node` instrumenteert de meeste applicaties en libraries automatisch. Bekijk [de README van het pakket voor een lijst met libraries en frameworks die het instrumenteert](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node). U kunt [aanvullende instrumentaties voor libraries en frameworks vinden in het OpenTelemetry-register](https://opentelemetry.io/ecosystem/registry/?s=\&component=instrumentation\&language=js\&flag=all).

## Configureer OpenTelemetry in uw applicatie

Voeg dit bestand `opentelemetry.cjs` toe aan uw applicatie met de OpenTelemetry-exporter en AppSignal-configuratie.

Zorg ervoor dat u de onderstaande waarden bijwerkt met de naam, omgeving en push API-sleutel van uw AppSignal-applicatie, en vervang het exporter-endpoint zo nodig door het adres van uw AppSignal collector.

<CodeGroup>
  ```javascript JavaScript theme={null}
  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");

  // Vervang deze waarden door de naam, omgeving en push API-sleutel van uw
  // AppSignal-applicatie. Deze worden gebruikt door de onderstaande resource-attributenconfiguratie.
  const name = "My app";
  const pushApiKey = "0000-0000-0000-0000";

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

  // Stel de naam in van de service die wordt gemonitord. Een veelgebruikte keuze is de
  // naam van het gebruikte framework. Deze wordt gebruikt om traces en metrieken in AppSignal te groeperen.
  const serviceName = "My service name";

  // Vervang `http://localhost:8099` door het adres van uw AppSignal collector
  // als deze op een andere host draait.
  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();
  ```
</CodeGroup>

## Start uw applicatie met OpenTelemetry

Om uw applicatie met OpenTelemetry uit te voeren, dient u de vlag `--require` te gebruiken om het bestand `opentelemetry.cjs` te laden voordat uw applicatie wordt gestart:

<CodeGroup>
  ```bash Bash theme={null}
  node --require ./opentelemetry.cjs index.js
  ```
</CodeGroup>

Werk uw `package.json`-bestand bij om `--require` toe te voegen aan het commando dat uw app start.

<CodeGroup>
  ```json JSON theme={null}
  {
    // andere configuratie...
    "scripts": {
      "server": "node --require ./opentelemetry.cjs index.js"
    }
  }
  ```
</CodeGroup>

U kunt de vlag `--require` ook gebruiken met tools zoals `ts-node` en `nodemon`.

Wanneer u een wrapper-CLI gebruikt, zoals `nest start` of `fastify start`, om uw applicatie te starten, gebruik dan de omgevingsvariabele `NODE_OPTIONS` om de vlag door te geven aan de Node.js-runtime:

<CodeGroup>
  ```sh Shell theme={null}
  NODE_OPTIONS='--require ./appsignal.cjs' nest start
  ```
</CodeGroup>

## Test de app!

Nu alle componenten zijn verbonden, start u uw app met de vereiste command-line argumenten en test u of er gegevens binnenkomen in AppSignal. Controleer specifiek de pagina's ["Errors > Issue list"](https://appsignal.com/redirect-to/app?to=exceptions) en ["Performance > Traces"](https://appsignal.com/redirect-to/app?to=performance/traces).

Als u na het volgen van onze installatie-instructies nog steeds geen gegevens ziet in AppSignal, [laat het ons weten](mailto:support@appsignal.com?subject=OpenTelemetry%20issue) en wij helpen u uw OpenTelemetry-installatie te voltooien!
