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

# Metrics

The Orchestrator exports metrics via OpenTelemetry using the OTLP protocol. Metrics are collected through periodic readers that push to your OTLP endpoint at a configured interval.

## What Metrics Are Emitted

The Orchestrator exports metrics across two categories:

* **Request metrics** -- Total requests, response status codes, and request duration histograms. These give you visibility into traffic volume, error rates, and latency distribution.
* **Runtime metrics** -- Process-level metrics such as memory usage and concurrency data. These help you right-size Orchestrator instances and detect resource constraints.

> [!NOTE]
>
> Additional orchestration metrics -- including authentication events, connector health, and policy evaluation data -- are planned for future Orchestrator releases. The metrics available today focus on request-level and process-level observability.

> [!NOTE]
>
> The specific metrics available depend on your Orchestrator version. Consult your Orchestrator's actual OTLP output to confirm which metrics are exported in your deployment.

## Setup

> [!NOTE]
>
> If you manage Orchestrator configuration through the Maverics Console, advanced telemetry settings require the [**config override**](/reference/console/config-publishing#override-config) feature. Config override requires enablement for your organization -- contact your Strata account team or [Strata support](https://strataidentity.my.site.com/support/s/) to enable it.

Configure periodic readers to export metrics to your OTLP endpoint:

```yaml maverics.yaml theme={null}
telemetry:
  metrics:
    readers:
      - periodic:
          exporter:
            otlp:
              protocol: "http/protobuf"
              endpoint: "http://otelcol.example.com:4318/v1/metrics"
              insecure: true
              timeout: 5000
          interval: 5000
```

| Field | Description |
| - | - |
| `protocol` | OTLP transport protocol -- use `"http/protobuf"` |
| `endpoint` | Your OTLP collector's metrics endpoint URL |
| `insecure` | Skip TLS verification when connecting to the collector |
| `timeout` | Export timeout in milliseconds (default: 5000) |
| `interval` | Collection and push interval in milliseconds (default: 5000) |

## OTLP Export

All metrics are exported via OTLP (`http/protobuf`), the OpenTelemetry standard protocol. Any OTLP-compatible backend can receive these metrics, giving you full flexibility in your observability stack:

* **OpenTelemetry Collector** -- The reference collector that can fan out to multiple backends
* **Grafana Alloy** -- OpenTelemetry-compatible collector for the Grafana stack
* **Datadog Agent** -- Enable the OTLP receiver on the Datadog Agent to ingest metrics directly
* **New Relic** -- Send OTLP metrics to New Relic's OTLP endpoint
* **Honeycomb** -- Native OTLP ingestion for metrics and traces
* **Dynatrace** -- OTLP ingestion via the Dynatrace API

> [!TIP]
>
> If you use Prometheus, configure your OpenTelemetry Collector to receive OTLP and export to Prometheus using the `prometheusremotewrite` exporter.

## Periodic Reader Settings

The periodic reader controls how frequently the Orchestrator collects and pushes metrics:

* **Interval** -- How often metrics are collected and exported (default: 5000ms). Lower intervals provide more granular data but increase network and collector load.
* **Timeout** -- Maximum time to wait for an export to complete (default: 5000ms). If the collector is slow or unreachable, the export is abandoned after this timeout.

## Advanced Configuration

The periodic reader's OTLP exporter supports additional options for production environments including TLS, compression, custom headers, and aggregation preferences.

```yaml maverics.yaml theme={null}
telemetry:
  metrics:
    readers:
      - periodic:
          exporter:
            otlp:
              protocol: "http/protobuf"
              endpoint: "https://otelcol.example.com:4318/v1/metrics"
              timeout: 10000
              compression: "gzip"
              headers:
                - name: "x-api-key"
                  value: "your-api-key"
              certificate: "/etc/ssl/certs/otel-ca.pem"
              temporality_preference: "delta"
          interval: 10000
```

| Field | Description |
| - | - |
| `compression` | Compression type -- `"gzip"` or `"none"` |
| `headers[]` | Custom HTTP headers sent with each export request (array of `name`/`value` pairs) |
| `certificate` | Path to CA certificate for TLS verification of the collector |
| `client_certificate` | Path to client certificate for mTLS authentication |
| `client_key` | Path to client private key for mTLS authentication |
| `temporality_preference` | Aggregation temporality -- `"cumulative"`, `"delta"`, or `"lowmemory"` |
| `default_histogram_aggregation` | Histogram strategy -- `"explicit_bucket_histogram"` or `"base2_exponential_bucket_histogram"` |

## Configuration Reference

### Periodic Reader

| Key | Type | Default | Required | Description |
| - | - | - | - | - |
| `telemetry.metrics.readers[].periodic.exporter.otlp.protocol` | string | -- | Yes | OTLP protocol -- `"http/protobuf"` |
| `telemetry.metrics.readers[].periodic.exporter.otlp.endpoint` | string | -- | Yes | OTLP collector endpoint URL |
| `telemetry.metrics.readers[].periodic.exporter.otlp.insecure` | boolean | `false` | No | Skip TLS verification when connecting to the collector |
| `telemetry.metrics.readers[].periodic.exporter.otlp.timeout` | integer | `5000` | No | Export timeout in milliseconds |
| `telemetry.metrics.readers[].periodic.interval` | integer | `5000` | No | Collection interval in milliseconds |
| `telemetry.metrics.readers[].periodic.exporter.otlp.compression` | string | -- | No | Compression type -- `"gzip"` or `"none"` |
| `telemetry.metrics.readers[].periodic.exporter.otlp.headers[]` | array | `[]` | No | Custom HTTP headers sent with each export request. Each entry has `name` and `value` fields. |
| `telemetry.metrics.readers[].periodic.exporter.otlp.certificate` | string | -- | No | Path to CA certificate for TLS verification of the collector |
| `telemetry.metrics.readers[].periodic.exporter.otlp.client_certificate` | string | -- | No | Path to client certificate for mTLS authentication |
| `telemetry.metrics.readers[].periodic.exporter.otlp.client_key` | string | -- | No | Path to client private key for mTLS authentication |
| `telemetry.metrics.readers[].periodic.exporter.otlp.temporality_preference` | string | -- | No | Aggregation temporality -- `"cumulative"`, `"delta"`, or `"lowmemory"` |
| `telemetry.metrics.readers[].periodic.exporter.otlp.default_histogram_aggregation` | string | -- | No | Histogram aggregation strategy -- `"explicit_bucket_histogram"` or `"base2_exponential_bucket_histogram"` |

> [!NOTE]
>
> The SDK spec also supports `pull` readers, but they are not commonly used with OTLP push-based export. The `periodic` reader is the recommended approach for exporting metrics to an OTLP collector.

### Example

**Console UI**

> [!NOTE]
>
> **Console UI documentation is coming soon.** This section will walk you
> through configuring this component using the Maverics Console's visual
> interface, including step-by-step screenshots and field descriptions.

**Configuration**

Basic metrics configuration with a periodic reader:

```yaml maverics.yaml theme={null}
telemetry:
  metrics:
    readers:
      - periodic:
          exporter:
            otlp:
              protocol: "http/protobuf"
              endpoint: "http://otelcol:4318/v1/metrics"
              insecure: true
              timeout: 5000
          interval: 5000
```

#### Advanced Example

**Console UI**

> [!NOTE]
>
> **Console UI documentation is coming soon.** This section will walk you
> through configuring this component using the Maverics Console's visual
> interface, including step-by-step screenshots and field descriptions.

**Configuration**

Periodic reader with compression, custom headers, and delta temporality:

```yaml maverics.yaml theme={null}
telemetry:
  metrics:
    readers:
      - periodic:
          exporter:
            otlp:
              protocol: "http/protobuf"
              endpoint: "https://otelcol.example.com:4318/v1/metrics"
              timeout: 10000
              compression: "gzip"
              headers:
                - name: "x-api-key"
                  value: "your-api-key"
              certificate: "/etc/ssl/certs/otel-ca.pem"
              temporality_preference: "delta"
          interval: 10000
```

## Related Pages

> **[Monitor and Observe](/guides/operations/monitor)**
>
> Step-by-step guide for setting up telemetry in production

> **[Traces](/reference/orchestrator/telemetry/traces)**
>
> OpenTelemetry distributed tracing via OTLP

> **[Logging](/reference/orchestrator/telemetry/logging)**
>
> Structured operational and auth event logging

> **[Orchestrator Configuration](/reference/orchestrator/configuration)**
>
> Config file structure, environment variables, and runtime settings
