> ## 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 Python

Om OpenTelemetry-gegevens van uw Python-applicatie naar AppSignal te sturen, kunt u ofwel het [AppSignal voor Python-pakket](/python/installation) gebruiken, ofwel OpenTelemetry handmatig installeren en configureren.

## Het AppSignal voor Python-pakket gebruiken

Het AppSignal voor Python-pakket kan OpenTelemetry automatisch configureren om gegevens naar de AppSignal collector te sturen. Het kan ook automatisch OpenTelemetry-instrumentaties inschakelen voor populaire libraries en frameworks.

Volg de instructies in de [installatiedocumentatie van AppSignal voor Python](/python/installation) om het pakket te installeren en het configuratiebestand in te stellen, en volg vervolgens de instructies op de [pagina voor de collector-configuratie van AppSignal voor Python](/python/configuration/collector) om het te gebruiken met de AppSignal Collector.

## OpenTelemetry handmatig installeren

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

### Installeer de OpenTelemetry-pakketten

Voeg de OpenTelemetry SDK, OTLP-exporter en instrumentatiepakketten toe aan de `requirements.txt` van uw applicatie:

<CodeGroup>
  ```txt Text theme={null}
  opentelemetry-api
  opentelemetry-sdk
  opentelemetry-exporter-otlp-proto-http
  ```
</CodeGroup>

Voeg ook de OpenTelemetry-instrumentatiepakketten toe voor de libraries en frameworks die uw applicatie gebruikt. Bijvoorbeeld, als u Django en Celery gebruikt:

<CodeGroup>
  ```txt Text theme={null}
  opentelemetry-instrumentation-celery
  opentelemetry-instrumentation-django
  ```
</CodeGroup>

Bekijk [het OpenTelemetry-register voor instrumentatiepakketten](https://opentelemetry.io/ecosystem/registry/?s=\&component=instrumentation\&language=python\&flag=all) voor de meeste libraries en frameworks.

### Configureer OpenTelemetry in uw applicatie

Voeg dit bestand `appsignal.py` toe aan uw applicatie met de OpenTelemetry-exporter en AppSignal-configuratie. Importeer dit bestand vervolgens voordat uw applicatie start.

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>
  ```python Python theme={null}
  import os
  import subprocess
  import socket

  from opentelemetry import trace, metrics
  from opentelemetry.sdk.resources import Resource
  from opentelemetry.sdk.trace import TracerProvider
  from opentelemetry.sdk.trace.export import BatchSpanProcessor
  from opentelemetry.sdk.metrics.export import (
      AggregationTemporality,
      PeriodicExportingMetricReader,
  )
  from opentelemetry.exporter.otlp.proto.http.trace_exporter import (
      OTLPSpanExporter
  )
  from opentelemetry.exporter.otlp.proto.http.metric_exporter import (
      OTLPMetricExporter
  )

  def initialize_opentelemetry(service_name):
      # Vervang deze waarden door de naam, omgeving en push API-sleutel van uw
      # AppSignal-applicatie. Deze worden gebruikt door de onderstaande resource-attributenconfiguratie.
      name = "My app"
      push_api_key = "0000-0000-0000-0000"
      environment = "development"

      # Vervang `http://localhost:8099` door het adres van uw AppSignal collector
      # als deze op een andere host draait.
      endpoint = "http://localhost:8099"

      revision = subprocess.check_output(
          "git rev-parse --short HEAD", shell=True, text=True
      ).strip()

      resource = Resource(attributes={
          "appsignal.config.name": name,
          "appsignal.config.environment": environment,
          "appsignal.config.push_api_key": push_api_key,
          "appsignal.config.revision": revision,
          "appsignal.config.language_integration": "python",
          "appsignal.config.app_path": os.getcwd()
          "host.name": socket.gethostname(),
          # Pas de servicenaam aan
          "service.name": service_name,
      })

      trace_provider = TracerProvider(resource=resource)
      span_processor = BatchSpanProcessor(
          OTLPSpanExporter(endpoint=f"{collector_host}/v1/traces")
      )
      trace_provider.add_span_processor(span_processor)
      trace.set_tracer_provider(trace_provider)

      metric_exporter = OTLPMetricExporter(
          endpoint=f"{collector_host}/v1/metrics",
      )
      metric_reader = PeriodicExportingMetricReader(
          metric_exporter,
          export_interval_millis=10000
      )
      metric_provider = MeterProvider(
          resource=resource,
          metric_readers=[metric_reader]
      )
      metrics.set_meter_provider(metric_provider)
  ```
</CodeGroup>

Initialiseer vervolgens, in hetzelfde bestand na de OpenTelemetry-setup, de OpenTelemetry-instrumentaties voor de libraries en frameworks die uw applicatie gebruikt. Bijvoorbeeld, als u de Django- en Celery-instrumentaties gebruikt:

<CodeGroup>
  ```python Python theme={null}
  # Voeg dit toe onder de OpenTelemetry-initialisatie

  from opentelemetry.instrumentation.django import DjangoInstrumentor
  from opentelemetry.instrumentation.celery import CeleryInstrumentor

  DjangoInstrumentor().instrument()
  CeleryInstrumentor().instrument()
  ```
</CodeGroup>

Roep ten slotte de functie `initialize_opentelemetry` aan met de naam van de service die wordt gemonitord, zo vroeg mogelijk in het entry point van uw applicatie. Een veelgebruikte keuze voor de servicenaam is de naam van het gebruikte framework.

#### Gebruik met Django

Importeer in het bestand `settings.py` van uw Django-applicatie de `appsignal.py`-module aan het begin van het bestand en roep de functie `initialize_opentelemetry` aan:

<CodeGroup>
  ```python Python theme={null}
  from .appsignal import initialize_opentelemetry

  # 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.
  service_name = "Django"

  initialize_opentelemetry(service_name)
  ```
</CodeGroup>

#### Gebruik met Celery

Voeg in het bestand `tasks.py` van uw Celery-applicatie een connection-callback toe voor worker-processen en importeer daarbinnen de `appsignal.py`-module.

<CodeGroup>
  ```python Python theme={null}
  @worker_process_init.connect(weak=False)
  def init_celery_tracing(*args, **kwargs):
      from .appsignal import initialize_opentelemetry

      # 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.
      service_name = "Celery"

      initialize_opentelemetry(service_name)
  ```
</CodeGroup>

### Test de app!

Nu alle componenten zijn verbonden, start u uw app 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!
