> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/powershell-universal/fr/plateforme/plugins/opentelemetry.md).

# OpenTelemetry

Configurez le module d'extension OpenTelemetry pour exporter les métriques et les traces de PowerShell Universal, y compris la télémétrie des points de terminaison d'API personnalisés.

**Identificateur :** `PowerShellUniversal.Plugins.OpenTelemetry`

Le module d'extension OpenTelemetry exporte les métriques de PowerShell Universal et les traces ASP.NET Core via OTLP. Utilisez un collecteur, un tableau de bord ou un backend de métriques compatible avec OpenTelemetry pour inspecter l'activité de la plateforme et les requêtes des points de terminaison d'API personnalisés.

## Activer le module d'extension

Ajoutez l'identificateur complet et exact du module d'extension au tableau `Plugins` dans `appsettings.json`. Le fournisseur de persistance par défaut est SQLite.

```json
{
  "Plugins": [
    "PowerShellUniversal.SQLite",
    "PowerShellUniversal.Plugins.OpenTelemetry"
  ]
}
```

{% hint style="warning" %}
Le nom court `OpenTelemetry` et le nom d'assembly `PowerShellUniversal.Plugin.OpenTelemetry` n'activent pas le module d'extension. Utilisez `PowerShellUniversal.Plugins.OpenTelemetry` exactement comme indiqué ci-dessus.
{% endhint %}

Configurez le point de terminaison OTLP et redémarrez PowerShell Universal après avoir modifié les paramètres du module d'extension ou de télémétrie.

## Configurer l'exportation OTLP

Définissez `OpenTelemetry:Otlp:Endpoint` pour utiliser un seul point de terminaison à la fois pour les métriques et les traces. Si le point de terminaison de repli se termine par `/v1/metrics`, PowerShell Universal utilise cette URL pour les métriques et utilise automatiquement l'URL `/v1/traces` correspondante pour les traces.

```json
{
  "OpenTelemetry": {
    "Otlp": {
      "Endpoint": "http://localhost:4318/v1/metrics"
    }
  }
}
```

Pour utiliser des collecteurs ou des points de terminaison distincts, configurez les paramètres propres à chaque signal. Ces paramètres remplacent le point de terminaison de repli pour leurs signaux respectifs.

```json
{
  "OpenTelemetry": {
    "ServiceName": "PowerShellUniversal-Production",
    "Otlp": {
      "MetricsEndpoint": "http://metrics-collector:4318/v1/metrics",
      "TracesEndpoint": "http://traces-collector:4318/v1/traces"
    }
  }
}
```

Le nom de service par défaut est `PowerShellUniversal`. OTLP utilise HTTP/protobuf par défaut. Pour définir le protocole explicitement, définissez `OTEL_EXPORTER_OTLP_PROTOCOL` sur le nom d'énumération .NET `HttpProtobuf` ou `Grpc`.

{% hint style="warning" %}
N'utilisez pas la valeur `http/protobuf` de la spécification OpenTelemetry pour `OTEL_EXPORTER_OTLP_PROTOCOL`. PowerShell Universal lie ce paramètre directement à l'énumération .NET `OtlpExportProtocol`, de sorte que `http/protobuf` provoque une erreur de configuration au démarrage. Utilisez plutôt `HttpProtobuf`.
{% endhint %}

## Télémétrie des points de terminaison d'API personnalisés

Le module d'extension instrumente les requêtes des points de terminaison d'API personnalisés, y compris les points de terminaison conventionnels et ceux à expression régulière. Chaque requête produit une étendue de trace ASP.NET Core nommée avec la méthode HTTP et la définition du point de terminaison, comme `GET /users/{id}`.

Les étendues de points de terminaison comprennent les attributs suivants :

| Attribut                    | Description                                                  |
| --------------------------- | ------------------------------------------------------------ |
| `http.route`                | L'URL ou le modèle de point de terminaison configuré.        |
| `psu.endpoint.id`           | L'ID du point de terminaison PowerShell Universal.           |
| `psu.endpoint.url`          | L'URL ou le modèle de point de terminaison configuré.        |
| `http.response.status_code` | Le code de statut HTTP retourné par le point de terminaison. |

Utilisez ces attributs pour filtrer les traces d'un point de terminaison ou d'un statut de réponse particulier dans votre backend de télémétrie.

Le module d'extension exporte également les métriques de points de terminaison via le compteur `PSU.Endpoints` :

* `PSU.Endpoint.Execution.Count`
* `PSU.Endpoint.Execution.Duration` en millisecondes
* `PSU.Endpoint.Execution.IncomingContentLength` en octets
* `PSU.Endpoint.Execution.OutgoingContentLength` en octets

## Métriques Prometheus

Prometheus peut recevoir des métriques OTLP lorsque son récepteur OTLP est activé.

```powershell
.\prometheus.exe --web.enable-otlp-receiver
```

Configurez le point de terminaison des métriques avec l'URL des métriques OTLP de Prometheus. Prometheus est un backend de métriques ; configurez séparément un collecteur ou un backend capable de gérer les traces lorsque vous souhaitez aussi exporter des traces.

```json
{
  "OpenTelemetry": {
    "Otlp": {
      "MetricsEndpoint": "http://localhost:9090/api/v1/otlp/v1/metrics"
    }
  }
}
```

## Variables d'environnement

Utilisez des doubles traits de soulignement pour les clés de configuration imbriquées et des index à base zéro pour le tableau `Plugins`. Cet exemple Docker Compose active le module d'extension et exporte les métriques et les traces via HTTP/protobuf :

```yaml
environment:
  Plugins__1: PowerShellUniversal.Plugins.OpenTelemetry
  OpenTelemetry__Otlp__Endpoint: http://collector:4318/v1/metrics
  OTEL_EXPORTER_OTLP_PROTOCOL: HttpProtobuf
```

Vous pouvez aussi configurer des points de terminaison propres à chaque signal :

```
OpenTelemetry__Otlp__MetricsEndpoint=http://metrics-collector:4318/v1/metrics
OpenTelemetry__Otlp__TracesEndpoint=http://traces-collector:4318/v1/traces
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/powershell-universal/fr/plateforme/plugins/opentelemetry.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
