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

# Configuring observability

> Point Midaz telemetry at your OpenTelemetry collector: the env vars the chart injects, the fixed OTLP endpoint, and how to override it.

The Midaz chart does **not** deploy an observability stack. It emits OpenTelemetry traces and metrics and expects you to run the collector and the backend. The chart only controls whether it injects the OTEL environment variables into the `ledger`, `crm`, and `tracer` deployments.

<Note>
  The chart contains no Grafana templates. The `grafana:` key still exists in `values.yaml`, but it renders nothing, so setting `grafana.enabled: true` has no effect.
</Note>

## Injecting the OTEL environment variables

***

The `otel-collector-lerian.enabled` key controls injection and defaults to `true`:

```yaml theme={null}
otel-collector-lerian:
  enabled: true
```

<Warning>
  The schema for this key is strict. The schema accepts only `enabled`. It rejects legacy keys (`external`, `extraEnvs`, `exporters`, `opentelemetry-collector`) at `helm install`/`helm upgrade` time.
</Warning>

When enabled, the chart adds these variables to the `ledger`, `crm`, and `tracer` containers:

| Variable                      | Value                             |
| :---------------------------- | :-------------------------------- |
| `POD_IP`                      | `status.podIP` (field reference)  |
| `HOST_IP`                     | `status.hostIP` (field reference) |
| `OTEL_EXPORTER_OTLP_ENDPOINT` | `$(HOST_IP):4317`                 |
| `OTEL_RESOURCE_ATTRIBUTES`    | `k8s.pod.ip=$(POD_IP)`            |

## What you must provide

***

The endpoint is **fixed at `$(HOST_IP):4317`**, the node the pod runs on. Keeping `enabled: true` therefore needs an OTLP collector on port 4317 on every node, usually a DaemonSet with `hostNetwork` or a host port. Without one, the applications export to a dead endpoint.

## Using a different endpoint

***

You can send telemetry somewhere else: a central collector Service, a managed backend, or your existing observability infrastructure. Leave injection off and set the endpoint directly in the application ConfigMap:

```yaml theme={null}
otel-collector-lerian:
  enabled: false

ledger:
  configmap:
    OTEL_EXPORTER_OTLP_ENDPOINT: "otel-collector.observability.svc.cluster.local:4317"

crm:
  configmap:
    OTEL_EXPORTER_OTLP_ENDPOINT: "otel-collector.observability.svc.cluster.local:4317"

tracer:
  configmap:
    OTEL_EXPORTER_OTLP_ENDPOINT: "otel-collector.observability.svc.cluster.local:4317"
```

## Dashboards

***

No dashboards ship with the chart. Build them in whatever backend receives the telemetry.

For the standalone collector chart, see [Infrastructure Helm charts](/en/platform/deploy/infrastructure/infrastructure-helm).
