> 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/es/plataforma/plugins/opentelemetry.md).

# OpenTelemetry

Configure el plugin de OpenTelemetry para exportar métricas y trazas de PowerShell Universal, incluida la telemetría de endpoints de API personalizados.

**Identificador:** `PowerShellUniversal.Plugins.OpenTelemetry`

El plugin de OpenTelemetry exporta las métricas de PowerShell Universal y las trazas de ASP.NET Core a través de OTLP. Utilice un recopilador, panel o backend de métricas compatible con OpenTelemetry para inspeccionar la actividad de la plataforma y las solicitudes de endpoints de API personalizados.

## Habilitar el plugin

Añada el identificador de plugin exacto y completo al array `Plugins` en `appsettings.json`. El proveedor de persistencia predeterminado es SQLite.

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

{% hint style="warning" %}
El nombre corto `OpenTelemetry` y el nombre de ensamblado `PowerShellUniversal.Plugin.OpenTelemetry` no habilitan el plugin. Utilice `PowerShellUniversal.Plugins.OpenTelemetry` exactamente como se muestra arriba.
{% endhint %}

Configure el endpoint OTLP y reinicie PowerShell Universal después de cambiar la configuración del plugin o de la telemetría.

## Configurar la exportación OTLP

Establezca `OpenTelemetry:Otlp:Endpoint` para utilizar un único endpoint tanto para las métricas como para las trazas. Si el endpoint de reserva termina en `/v1/metrics`, PowerShell Universal utiliza esa URL para las métricas y automáticamente utiliza la URL `/v1/traces` correspondiente para las trazas.

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

Para utilizar recopiladores o endpoints separados, configure los ajustes específicos de cada señal. Estos ajustes anulan el endpoint de reserva para sus señales respectivas.

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

El nombre de servicio predeterminado es `PowerShellUniversal`. OTLP utiliza HTTP/protobuf de forma predeterminada. Para establecer el protocolo explícitamente, configure `OTEL_EXPORTER_OTLP_PROTOCOL` con el nombre de enumeración de .NET `HttpProtobuf` o `Grpc`.

{% hint style="warning" %}
No utilice el valor `http/protobuf` de la especificación de OpenTelemetry para `OTEL_EXPORTER_OTLP_PROTOCOL`. PowerShell Universal vincula este ajuste directamente a la enumeración `OtlpExportProtocol` de .NET, por lo que `http/protobuf` provoca un error de configuración al iniciar. Utilice `HttpProtobuf` en su lugar.
{% endhint %}

## Telemetría de endpoints de API personalizados

El plugin instrumenta las solicitudes de endpoints de API personalizados, incluidos los endpoints convencionales y los basados en expresiones regulares. Cada solicitud genera un span de traza de ASP.NET Core cuyo nombre incluye el método HTTP y la definición del endpoint, como `GET /users/{id}`.

Los spans de endpoint incluyen estos atributos:

| Atributo                    | Descripción                                        |
| --------------------------- | -------------------------------------------------- |
| `http.route`                | La URL o el patrón configurado del endpoint.       |
| `psu.endpoint.id`           | El ID del endpoint de PowerShell Universal.        |
| `psu.endpoint.url`          | La URL o el patrón configurado del endpoint.       |
| `http.response.status_code` | El código de estado HTTP devuelto por el endpoint. |

Utilice estos atributos para filtrar las trazas de un endpoint o un estado de respuesta concretos en su backend de telemetría.

El plugin también exporta métricas de endpoints a través del medidor `PSU.Endpoints`:

* `PSU.Endpoint.Execution.Count`
* `PSU.Endpoint.Execution.Duration` en milisegundos
* `PSU.Endpoint.Execution.IncomingContentLength` en bytes
* `PSU.Endpoint.Execution.OutgoingContentLength` en bytes

## Métricas de Prometheus

Prometheus puede recibir métricas OTLP cuando su receptor OTLP está habilitado.

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

Configure el endpoint de métricas con la URL de métricas OTLP de Prometheus. Prometheus es un backend de métricas; configure por separado un recopilador o backend compatible con trazas cuando también desee exportar trazas.

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

## Variables de entorno

Utilice guiones bajos dobles para las claves de configuración anidadas e índices de base cero para el array `Plugins`. Este ejemplo de Docker Compose habilita el plugin y exporta métricas y trazas mediante HTTP/protobuf:

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

También puede configurar endpoints específicos para cada señal:

```
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/es/plataforma/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.
