**Language / Язык:** [English](observability.md) | [Русский](ru/observability.md)

# Observability

## Health

| Path | Meaning |
|---|---|
| `GET /health/live` | Process liveness — no dependency checks |
| `GET /health/ready` | Database reachable via `database.is_ready()`; HTTP 503 when not |

Example:

```bash
curl -sk https://localhost/health/live
curl -sk https://localhost/health/ready
```

Implementation: [`app/observability/health.py`](../app/observability/health.py).

## Request correlation

Incoming requests accept or generate an ID via `REQUEST_ID_HEADER`
(default `X-Request-ID`). Structured logs include correlation fields and
redact known secret patterns (session ids, passwords, ticket-like tokens).

## Metrics / tracing

There is **no** Prometheus `/metrics` scrape endpoint and **no** bundled
OpenTelemetry exporter in the current application. Architecture notes that
mention them describe target design, not shipping telemetry.

Do not confuse vSphere REST paths under `/api/vcenter/activity-history` or
the seeded appliance health/timesync endpoints with simulator process
telemetry — those handlers simulate vCenter appliance state inside
PostgreSQL, not this process's own metrics.

## Compatibility evidence

Operational compatibility reports:

- `/ui/api/compatibility?major=N`

Also available through the Web UI compatibility panel. See
[Compatibility](compatibility.md).
