> ## 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. What the chart controls is a single thing: whether the OTEL environment variables are injected into the `ledger` and `crm` deployments.

<Note>
  Earlier chart versions bundled a Grafana OTEL LGTM stack. Those templates were removed in chart **v5.0.0**; the `grafana:` key still exists in `values.yaml` but the chart renders no Grafana resources, so setting `grafana.enabled: true` has no effect.
</Note>

## Injecting the OTEL environment variables

***

Injection is controlled by `otel-collector-lerian.enabled`, which defaults to `true`:

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

<Warning>
  The schema for this key is strict — only `enabled` is accepted. Legacy keys (`external`, `extraEnvs`, `exporters`, `opentelemetry-collector`) are rejected at `helm install`/`helm upgrade` time.
</Warning>

When enabled, the chart adds these variables to the `ledger` and `crm` 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 requires an OTLP collector reachable on port 4317 on every node, typically deployed as a DaemonSet with `hostNetwork` or a host port. Without one, the applications export to a dead endpoint.

## Using a different endpoint

***

To send telemetry somewhere else — a central collector Service, a managed backend, 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"
```

## 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/helm/infrastructure/infrastructure-helm).
