> 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/da/platform/plugins/opentelemetry.md).

# OpenTelemetry

Konfigurer OpenTelemetry-pluginet til at eksportere metrikker og spor fra PowerShell Universal, herunder telemetri for brugerdefinerede API-slutpunkter.

**Identifikator:** `PowerShellUniversal.Plugins.OpenTelemetry`

OpenTelemetry-pluginet eksporterer PowerShell Universal-metrikker og ASP.NET Core-spor via OTLP. Brug en OpenTelemetry-kompatibel collector, et dashboard eller en backend til metrikker til at inspicere platformaktivitet og anmodninger til brugerdefinerede API-slutpunkter.

## Aktivér pluginet

Føj den nøjagtige, fuldt kvalificerede pluginidentifikator til arrayet `Plugins` i `appsettings.json`. Standardpersistensudbyderen er SQLite.

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

{% hint style="warning" %}
Det korte navn `OpenTelemetry` og assemblynavnet `PowerShellUniversal.Plugin.OpenTelemetry` aktiverer ikke pluginet. Brug `PowerShellUniversal.Plugins.OpenTelemetry` nøjagtigt som vist ovenfor.
{% endhint %}

Konfigurer OTLP-slutpunktet, og genstart PowerShell Universal, efter at De har ændret plugin- eller telemetriindstillinger.

## Konfigurer OTLP-eksport

Angiv `OpenTelemetry:Otlp:Endpoint` for at bruge ét slutpunkt til både metrikker og spor. Hvis reserveslutpunktet slutter med `/v1/metrics`, bruger PowerShell Universal den URL til metrikker og bruger automatisk den tilsvarende URL `/v1/traces` til spor.

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

For at bruge separate indsamlere eller slutpunkter skal De konfigurere de signalspecifikke indstillinger. Disse indstillinger tilsidesætter fallback-slutpunktet for deres respektive signaler.

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

Standardtjenestenavnet er `PowerShellUniversal`. OTLP bruger HTTP/protobuf som standard. For at angive protokollen eksplicit skal De sætte `OTEL_EXPORTER_OTLP_PROTOCOL` til .NET-enum-navnet `HttpProtobuf` eller `Grpc`.

{% hint style="warning" %}
Brug ikke OpenTelemetry-specifikationens værdi `http/protobuf` til `OTEL_EXPORTER_OTLP_PROTOCOL`. PowerShell Universal binder denne indstilling direkte til .NET-enummet `OtlpExportProtocol`, så `http/protobuf` forårsager en konfigurationsfejl ved opstart. Brug `HttpProtobuf` i stedet.
{% endhint %}

## Telemetri for brugerdefinerede API-slutpunkter

Pluginet instrumenterer anmodninger til brugerdefinerede API-slutpunkter, herunder konventionelle slutpunkter og slutpunkter med regulære udtryk. Hver anmodning producerer et ASP.NET Core-trace-span, der navngives med HTTP-metoden og slutpunktsdefinitionen, f.eks. `GET /users/{id}`.

Slutpunktsspan omfatter disse attributter:

| Attribut                    | Beskrivelse                                                       |
| --------------------------- | ----------------------------------------------------------------- |
| `http.route`                | Den konfigurerede slutpunkts-URL eller det konfigurerede mønster. |
| `psu.endpoint.id`           | Id'et for PowerShell Universal-slutpunktet.                       |
| `psu.endpoint.url`          | Den konfigurerede slutpunkts-URL eller det konfigurerede mønster. |
| `http.response.status_code` | Den HTTP-statuskode, der returneres af slutpunktet.               |

Brug disse attributter til at filtrere spor for et bestemt slutpunkt eller en svarstatus i Deres telemetri-backend.

Pluginet eksporterer også slutpunktsmetrikker via måleren `PSU.Endpoints`:

* `PSU.Endpoint.Execution.Count`
* `PSU.Endpoint.Execution.Duration` i millisekunder
* `PSU.Endpoint.Execution.IncomingContentLength` i byte
* `PSU.Endpoint.Execution.OutgoingContentLength` i byte

## Prometheus-metrikker

Prometheus kan modtage OTLP-metrikker, når dens OTLP-modtager er aktiveret.

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

Konfigurer metrikslutpunktet med Prometheus' OTLP-metrik-URL. Prometheus er en metrikbackend; konfigurer separat en collector, der understøtter spor, eller en backend, når De også vil eksportere spor.

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

## Miljøvariabler

Brug dobbelte understregningstegn til indlejrede konfigurationsnøgler og nulbaserede indekser til arrayet `Plugins`. Dette Docker Compose-eksempel aktiverer pluginet og eksporterer metrikker og spor via HTTP/protobuf:

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

De kan også konfigurere signalspecifikke slutpunkter:

```
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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/powershell-universal/da/platform/plugins/opentelemetry.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
