Pular para conteúdo

otel: Módulo dinâmico NGINX OpenTelemetry

Instalação

Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:

  • RedHat Enterprise Linux 7, 8, 9 e 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 e Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-otel
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-otel

Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:

load_module modules/ngx_otel_module.so;

Este documento descreve o nginx-module-otel v0.1.2 lançado em 15 de março de 2025.


O que é OpenTelemetry

OpenTelemetry (OTel) é uma estrutura de observabilidade para monitorar, rastrear, solucionar problemas e otimizar aplicações. O OTel permite a coleta de dados de telemetria de uma pilha de aplicações implantadas.

O que é o Módulo Nativo OTel do NGINX

O módulo dinâmico ngx_otel_module permite que o NGINX Open Source ou NGINX Plus envie dados de telemetria para um coletor OTel. Ele fornece suporte para a propagação do contexto de rastreamento W3C, exportações de rastreamento OpenTelemetry Protocol (OTLP)/gRPC e oferece vários benefícios em relação aos módulos OTel existentes, incluindo:

Melhor Desempenho

Implementações OTel de terceiros reduzem o desempenho do processamento de solicitações em até 50% quando o rastreamento está habilitado. O módulo Nativo do NGINX limita esse impacto a aproximadamente 10-15%.

Provisionamento Fácil

A configuração pode ser feita diretamente nos arquivos de configuração do NGINX.

Controle Dinâmico Baseado em Variáveis

A capacidade de controlar parâmetros de rastreamento dinamicamente usando cookies, tokens e variáveis. Consulte nosso exemplo de Rastreamento Baseado em Proporção para mais detalhes.

Além disso, o NGINX Plus, disponível como parte de uma assinatura comercial, permite o controle dinâmico dos parâmetros de amostragem através da API do NGINX Plus e dos módulos de armazenamento chave-valor.

Habilitando o Módulo OTel

Seguir os passos de instalação acima instalará o módulo em /etc/nginx/modules por padrão. Carregue o módulo adicionando a seguinte linha ao topo do arquivo de configuração principal do NGINX, localizado em /etc/nginx/nginx.conf.

load_module modules/ngx_otel_module.so;

Configurando o Módulo

Para uma lista completa de diretivas, variáveis incorporadas, atributos de span padrão e configurações de exemplo, consulte a documentação do ngx_otel_module.

Exemplos

Use estes exemplos para configurar alguns casos de uso comuns para rastreamento OTel.

Rastreamento Simples

Este exemplo envia dados de telemetria para todas as solicitações http.

http {
    otel_exporter {
        endpoint localhost:4317;
    }

    otel_trace on;

    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

Rastreamento Baseado em Pai

Neste exemplo, herdamos contextos de rastreamento de solicitações recebidas e registramos spans apenas se um span pai for amostrado. Também propagamos contextos de rastreamento e decisões de amostragem para servidores upstream.

http {
    server {
        location / {
            otel_trace $otel_parent_sampled;
            otel_trace_context propagate;

            proxy_pass http://backend;
        }
    }
}

Rastreamento Baseado em Proporção

Neste exemplo baseado em proporção, o rastreamento é configurado para uma porcentagem do tráfego (neste caso 10%):

http {
    # rastrear 10% das solicitações
    split_clients $otel_trace_id $ratio_sampler {
        10%     on;
        *       off;
    }

    # ou podemos rastrear 10% das sessões de usuário
    split_clients $cookie_sessionid $session_sampler {
        10%     on;
        *       off;
    }

    server {
        location / {
            otel_trace $ratio_sampler;
            otel_trace_context inject;

            proxy_pass http://backend;
        }
    }
}

Coletando e Visualizando Rastros

Existem vários métodos e pacotes de software disponíveis para visualizar rastros. Para um início rápido, o Jaeger fornece um contêiner tudo-em-um para coletar, processar e visualizar dados de rastreamento OTel. Siga estas etapas para baixar, instalar, iniciar e usar os serviços OTel do Jaeger.

Registro de Alterações

Veja nossa página de lançamentos para acompanhar as atualizações.

GitHub

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório GitHub do nginx-module-otel.