> For the complete documentation index, see [llms.txt](https://doc.ozforensics.com/oz-knowledge/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.ozforensics.com/oz-knowledge/oz-knowledge/pt-br/guias/administrator-guide/telemetria/como-habilitar-opentelemetry-no-oz-api.md).

# Como habilitar OpenTelemetry no Oz API

{% hint style="warning" %}
OpenTelemetry requer a versão do Oz API **6.6.1** ou superior.
{% endhint %}

A solução descrita abaixo é baseada em [instrumentação zero-code do Python](https://opentelemetry.io/docs/zero-code/python).

Oz API oferece suporte à auto-instrumentação de **traces** somente – métricas e logs não são suportados.

A ativação depende do método de implantação – veja as seções Kubernetes e Docker abaixo. O conjunto de variáveis de ambiente é o mesmo para ambas as opções e está listado na seção Variáveis de ambiente.

Exemplo de traces no Jaeger:

<figure><img src="/files/dca6b8a15697df3af3983317fb52215c197a8066" alt=""><figcaption></figcaption></figure>

### Kubernetes

{% hint style="info" %}
Com suporte desde a versão **oz-k8s/0.20.29**.
{% endhint %}

Quando `opentelemetry` está habilitado, o chart envolve o processo do Oz API em `opentelemetry-instrument` e envia traces para o coletor OTLP.

Ative a auto-instrumentação e especifique o endereço do coletor. `OTEL_EXPORTER_OTLP_ENDPOINT` é a única variável obrigatória:

```yaml
Parâmetros:
  gunicorn:
    opentelemetry:
      enable: true
    envs:
      OTEL_EXPORTER_OTLP_ENDPOINT: "http://otel-collector:4317"   # ponto de extremidade gRPC do coletor OTLP
      OTEL_EXPORTER_OTLP_INSECURE: "true"                         # defina isto se o coletor não tiver TLS
```

As variáveis restantes são passadas da mesma forma, por meio de `Params.gunicorn.envs`.

### Docker

Para ativar a auto-instrumentação, defina a variável de ambiente `OTEL_ENABLE=true` e especifique o endpoint gRPC do coletor na `OTEL_EXPORTER_OTLP_ENDPOINT` variável ao iniciar o contêiner:

```shell
docker run -e OTEL_ENABLE=true -e OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317 ...
```

Isso é suficiente – traces começarão a ser enviados ao coletor OTLP especificado por gRPC.

{% hint style="info" %}
Se `OTEL_ENABLE` não está definido como `true`, a aplicação inicia sem o `opentelemetry-instrument` wrapper.
{% endhint %}

### Variáveis de ambiente

A seguir estão os principais parâmetros de configuração da `OTEL_TRACES_EXPORTER=otlp` opção. Informações detalhadas sobre a configuração do agente OTEL estão disponíveis no [OpenTelemetry](https://opentelemetry.io/docs/zero-code/python/configuration/) site.

<table data-header-hidden="false" data-header-sticky><thead><tr><th>Variável</th><th>Descrição</th><th>Valor padrão</th></tr></thead><tbody><tr><td><code>OTEL_ENABLE</code></td><td><div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p><strong>Somente Docker.</strong></p></div><p>Ativa a auto-instrumentação do OTEL (<code>true</code> / não definido). Quando definido como <code>true</code>, ele inicia a auto-instrumentação do OpenTelemetry via o script start.sh. Esse script é usado por padrão ao iniciar a imagem oz-api. Se você substituir o <code>ENTRYPOINT</code> ao iniciar o contêiner, é necessário adicionar explicitamente a inicialização da aplicação com o <code>opentelemetry-instrument</code> wrapper: <code>opentelemetry-instrument gunicorn oz_api.asgi:application &#x3C;...></code>. Esta variável não é usada no chart do Kubernetes – a ativação é definida por meio de <code>opentelemetry.enable: true</code>.</p></td><td>não definido (desativado)</td></tr><tr><td><code>OTEL_EXPORTER_OTLP_ENDPOINT</code></td><td>Endereço do coletor OTLP</td><td>não definido (deve ser especificado ao ativar)</td></tr><tr><td><code>OTEL_SERVICE_NAME</code></td><td>Nome do serviço nos traces</td><td><code>oz-api.python.otel</code></td></tr><tr><td><code>OTEL_TRACES_EXPORTER</code></td><td><p>Exportador de traces. Valores possíveis:</p><ul><li><code>otlp</code> – <a href="https://opentelemetry.io/docs/specs/otlp/">OTLP</a>;</li><li><code>jaeger</code> – exportar no modelo de dados do Jaeger;</li><li><code>zipkin</code> – <a href="https://zipkin.io/zipkin-api/">Zipkin</a>;</li><li><code>console</code> – <a href="https://opentelemetry.io/docs/specs/otel/trace/sdk_exporters/stdout/">Saída padrão</a>;</li><li><code>nenhuma</code> – não são usados exportadores com configuração automática</li></ul></td><td><code>otlp</code></td></tr><tr><td><code>OTEL_EXPORTER_OTLP_PROTOCOL</code></td><td><p>Protocolo de exportação. Valores possíveis:</p><ul><li><code>grpc</code> para OTLP/gRPC;</li><li><code>http/protobuf</code> para OTLP/HTTP + <code>protobuf</code>;</li><li><code>http/json</code> para OTLP/HTTP + JSON</li></ul></td><td><code>grpc</code></td></tr><tr><td><code>OTEL_METRICS_EXPORTER</code></td><td>Exportador de métricas, não suportado</td><td><code>nenhuma</code></td></tr><tr><td><code>OTEL_LOGS_EXPORTER</code></td><td>Exportador de logs, não suportado</td><td><code>nenhuma</code></td></tr><tr><td><code>OTEL_PROPAGATORS</code></td><td><p>Formatos de contexto de propagação. Valores possíveis:</p><ul><li><code>tracecontext</code> – <a href="https://www.w3.org/TR/trace-context/">W3C Trace Context</a>;</li><li><code>baggage</code> – <a href="https://www.w3.org/TR/baggage/">W3C Baggage</a>;</li><li><code>b3</code> – <a href="https://opentelemetry.io/docs/specs/otel/context/api-propagators/#configuration">B3 Single</a>;</li><li><code>b3multi</code> – <a href="https://opentelemetry.io/docs/specs/otel/context/api-propagators/#configuration">B3 Multi</a>;</li><li><code>jaeger</code> – <a href="https://www.jaegertracing.io/sdk-migration/">Jaeger</a>;</li><li><code>xray</code> – <a href="https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-tracingheader">AWS X-Ray</a>;</li><li><code>ottrace</code> – <a href="https://github.com/opentracing?q=basic&#x26;type=&#x26;language=">OT Trace</a>;</li><li><code>nenhuma</code> – não são usados propagadores com configuração automática</li></ul></td><td><code>tracecontext,baggage</code></td></tr><tr><td><code>OTEL_PYTHON_DISABLED_INSTRUMENTATIONS</code></td><td>Auto-instrumentações desativadas</td><td><code>psycopg2</code></td></tr><tr><td><code>OTEL_EXPORTER_OTLP_INSECURE</code></td><td>Desativa TLS para a chamada gRPC à API do coletor OTLP. Para endpoints que não usam criptografia TLS, defina <code>true</code>.</td><td>não definido (TLS é usado)</td></tr></tbody></table>

### Notas

* `psycopg2` a auto-instrumentação está desativada por padrão, caso contrário os dados coletados podem ser excessivos. Spans detalhados são entregues por meio de `sqlalchemy` auto-instrumentação.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://doc.ozforensics.com/oz-knowledge/oz-knowledge/pt-br/guias/administrator-guide/telemetria/como-habilitar-opentelemetry-no-oz-api.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
