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

<Info>
  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.
</Info>

<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.
</Note>

## 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.
</Note>

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.
</Tip>

## 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.
</Note>

### Example

<Tabs>
  <Tab title="Console UI">
    <Info>
      **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.
    </Info>
  </Tab>

  <Tab title="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
    ```
  </Tab>
</Tabs>

#### Advanced Example

<Tabs>
  <Tab title="Console UI">
    <Info>
      **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.
    </Info>
  </Tab>

  <Tab title="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
    ```
  </Tab>
</Tabs>

## Related Pages

<CardGroup cols={2}>
  <Card title="Monitor and Observe" icon="eye" href="/guides/operations/monitor">
    Step-by-step guide for setting up telemetry in production
  </Card>

  <Card title="Traces" icon="diagram-project" href="/reference/orchestrator/telemetry/traces">
    OpenTelemetry distributed tracing via OTLP
  </Card>

  <Card title="Logging" icon="file-lines" href="/reference/orchestrator/telemetry/logging">
    Structured operational and auth event logging
  </Card>

  <Card title="Orchestrator Configuration" icon="sliders" href="/reference/orchestrator/configuration">
    Config file structure, environment variables, and runtime settings
  </Card>
</CardGroup>
