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

# Variáveis de ambiente

> Referência das variáveis de ambiente usadas para configurar o Tracer, organizadas por categoria.

Esta referência lista as variáveis de ambiente usadas para configurar o **Tracer**, o serviço de controle de gastos em tempo real e de análise de risco de transações. Você as define no momento da implantação, por valores Helm, Docker Compose ou pelo ambiente do seu orquestrador. Variáveis marcadas como obrigatórias fazem o servidor falhar na inicialização se não forem definidas.

Para os blocos de configuração que todo produto Lerian compartilha — postura de TLS, OpenTelemetry, autenticação do Access Manager, multi-tenancy e streaming de eventos — veja a [referência de configuração BYOC](/pt/reference/byoc-configuration). Esta página foca no que é distintivo do Tracer.

<Note>
  O Tracer roda como um serviço autônomo e também é empacotado no monorepo do Midaz (`components/tracer`) como parte do rollout da consolidação. As variáveis abaixo refletem o formato atual, mais completo, incluindo o seam gRPC de reserva que o ledger chama.
</Note>

## Portas e endpoints de saúde

Veja a [referência de saúde e prontidão](/pt/reference/health-and-readiness) para o contrato de sondas.

| Superfície                    | Variável de porta                | Padrão                  | Endpoints                                    |
| ----------------------------- | -------------------------------- | ----------------------- | -------------------------------------------- |
| REST + saúde                  | `SERVER_PORT` / `SERVER_ADDRESS` | `4020`                  | `/health`, `/readyz`, `/version`, `/metrics` |
| Seam gRPC de reserva (opt-in) | `TRACER_GRPC_PORT`               | sem definir (desligado) | gRPC reserve / confirm / release             |

## Implantação e TLS

| Variável             | Descrição                                                                                                                                                                                                                                                     | Padrão  | Obrigatória |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----------- |
| `DEPLOYMENT_MODE`    | Sabor de implantação: `local`, `byoc` ou `saas`. Em `saas`, o TLS é obrigatório para toda conexão de dependência e o servidor se recusa a iniciar sem ele. Em `byoc`, o TLS é recomendado e alertado em vez de imposto. Também marca a resposta de `/readyz`. | `local` | Não         |
| `ALLOW_INSECURE_TLS` | Ignora a imposição de TLS por conexão nas DSNs de infraestrutura. Deixe sem definir ou `false` em produção.                                                                                                                                                   | `false` | Não         |

## Aplicação

| Variável         | Descrição                                                       | Padrão  | Obrigatória |
| ---------------- | --------------------------------------------------------------- | ------- | ----------- |
| `VERSION`        | Tag de versão do serviço                                        | varia   | Não         |
| `LOG_LEVEL`      | Verbosidade dos logs: `debug`, `info`, `warn` ou `error`        | `debug` | Não         |
| `CEL_COST_LIMIT` | Custo máximo de avaliação para uma única expressão de regra CEL | `10000` | Não         |

## Autenticação e tratamento de requisições

| Variável                          | Descrição                                                                                                 | Padrão               | Obrigatória                     |
| --------------------------------- | --------------------------------------------------------------------------------------------------------- | -------------------- | ------------------------------- |
| `API_KEY_ENABLED`                 | Impõe a autenticação por chave de API                                                                     | `false`              | Não                             |
| `API_KEY`                         | Chave de API para autenticação de requisições. Sensível — use pelo menos 32 caracteres em produção.       | —                    | Sim (se `API_KEY_ENABLED=true`) |
| `API_KEY_ENABLED_ONLY_VALIDATION` | Modo somente validação: verifica as chaves sem impô-las rigidamente                                       | `false`              | Não                             |
| `API_KEY_LABEL`                   | Identificador de ator de auditoria registrado para o principal da chave de API                            | `tracer-default`     | Não                             |
| `CORS_ALLOWED_ORIGINS`            | Origens CORS permitidas (CSV, ou `*`). Restrinja a origens explícitas em produção.                        | — (restritivo)       | Não                             |
| `TRUSTED_PROXY_CIDRS`             | CIDRs de proxy confiáveis para a análise de `X-Forwarded-For`. Defina ao rodar atrás de um load balancer. | — (usa o IP do peer) | Não                             |

## Banco de dados (PostgreSQL)

O Tracer armazena regras e contadores de uso em seu próprio banco de dados `tracer` no primário PostgreSQL compartilhado do Midaz.

| Variável          | Descrição                                                                                                       | Padrão         | Obrigatória |
| ----------------- | --------------------------------------------------------------------------------------------------------------- | -------------- | ----------- |
| `DB_HOST`         | Host do PostgreSQL                                                                                              | —              | Sim         |
| `DB_PORT`         | Porta do PostgreSQL                                                                                             | —              | Sim         |
| `DB_USER`         | Usuário do banco de dados                                                                                       | —              | Sim         |
| `DB_PASSWORD`     | Senha do banco de dados. Sensível.                                                                              | —              | Sim         |
| `DB_NAME`         | Nome do banco de dados                                                                                          | `tracer`       | Sim         |
| `DB_SSL_MODE`     | Modo SSL do libpq: `disable`, `require`, `verify-ca` ou `verify-full`. Use `require` ou mais forte em produção. | `disable`      | Não         |
| `MIGRATIONS_PATH` | Caminho para os arquivos de migração do banco de dados                                                          | `./migrations` | Não         |

## Workers em background

| Variável                                | Descrição                                                             | Padrão  | Obrigatória |
| --------------------------------------- | --------------------------------------------------------------------- | ------- | ----------- |
| `CLEANUP_WORKER_ENABLED`                | Executa o worker de limpeza de contadores de uso expirados            | `false` | Não         |
| `CLEANUP_WORKER_INTERVAL_HOURS`         | Intervalo de limpeza (horas)                                          | `24`    | Não         |
| `CLEANUP_WORKER_RETENTION_DAYS`         | Janela de retenção dos contadores de uso (dias)                       | `90`    | Não         |
| `RESERVATION_REAPER_ENABLED`            | Executa o reaper de reservas expiradas                                | `false` | Não         |
| `RESERVATION_REAPER_INTERVAL_SECONDS`   | Intervalo do reaper (segundos)                                        | `30`    | Não         |
| `RESERVATION_LONG_LIVED_TTL_HOURS`      | TTL após o qual uma reserva de longa duração é reaped (horas)         | `720`   | Não         |
| `RULE_SYNC_POLL_INTERVAL_SECONDS`       | Intervalo de poll de sincronização do cache de regras (segundos)      | `10`    | Não         |
| `RULE_SYNC_STALENESS_THRESHOLD_SECONDS` | Limiar de obsolescência do cache de regras (segundos)                 | `50`    | Não         |
| `RULE_SYNC_OVERLAP_BUFFER_SECONDS`      | Buffer de sobreposição da sincronização do cache de regras (segundos) | `2`     | Não         |

## Prontidão e drenagem

| Variável                                   | Descrição                                                                                                                 | Padrão | Obrigatória |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | ------ | ----------- |
| `READYZ_DRAIN_GRACE_SECONDS`               | Janela durante a qual `/readyz` retorna 503 após o SIGTERM, para que o Kubernetes desregistre o pod antes do desligamento | `12`   | Não         |
| `READYZ_CACHE_STALENESS_THRESHOLD_SECONDS` | Idade do cache de regras na qual `/readyz` reporta `degraded`                                                             | `300`  | Não         |

## Seam gRPC de reserva

Lado servidor do seam que o ledger do Midaz chama para reservar limites de gasto. Desligado a menos que `TRACER_GRPC_PORT` esteja definido.

| Variável                    | Descrição                                                                          | Padrão                  | Obrigatória |
| --------------------------- | ---------------------------------------------------------------------------------- | ----------------------- | ----------- |
| `TRACER_GRPC_PORT`          | Porta de escuta gRPC do servidor de reserva                                        | sem definir (desligado) | Não         |
| `TRACER_TLS_MODE`           | Segurança do seam: `mesh` (TLS terminado pelo service mesh) ou `mtls`              | `mesh`                  | Não         |
| `TRACER_TLS_CERT_FILE`      | Caminho do PEM do certificado de servidor (quando `mtls`)                          | —                       | Não         |
| `TRACER_TLS_KEY_FILE`       | Caminho do PEM da chave privada de servidor (quando `mtls`). Sensível.             | —                       | Não         |
| `TRACER_TLS_CLIENT_CA_FILE` | Caminho do PEM do certificado CA de cliente para verificação mútua (quando `mtls`) | —                       | Não         |

## Base de configuração compartilhada

Os blocos a seguir são idênticos entre os produtos Lerian e estão documentados por completo na [referência de configuração BYOC](/pt/reference/byoc-configuration). Eles vêm desativados.

* **Autenticação do Access Manager** — `PLUGIN_AUTH_ENABLED`, `PLUGIN_AUTH_ADDRESS`. Ative em produção.
* **Multi-tenancy** — `MULTI_TENANT_*`, mais os botões de pool por tenant do Tracer (`MULTI_TENANT_MAX_TENANT_POOLS`, `MULTI_TENANT_MAX_OPEN_CONNS_PER_TENANT`, `MULTI_TENANT_TENANT_CAP_RETRY_AFTER_SECONDS`). Desativado por padrão. `APPLICATION_NAME` identifica o módulo para o Tenant Manager.
* **Streaming de eventos** — `STREAMING_*` (produtor lib-streaming). Desativado por padrão.
* **OpenTelemetry** — `ENABLE_TELEMETRY`, `OTEL_*`. O Tracer também expõe um endpoint `/metrics` do Prometheus.
