Integração do OpenTelemetry com o Instana para aplicativos do PHP
Você pode usar o OpenTelemetry com as aplicações do PHP, juntamente com o IBM e o Instana Observability.
S.O. suportado
OpenTelemetry A integração é compatível e testada apenas em sistemas operacionais d Linux.
Pré-requisitos
Para integrar OpenTelemetry com Instana, você precisa dos seguintes componentes:
- OpenTelemetry PHP extensão
- Composer para gerenciamento de dependências
- OpenTelemetry SDK e bibliotecas de instrumentação
- Uma conta ativa do IBM Instana Observability
- Instana agente instalado e configurado no seu ambiente
Configurando a integração com o OpenTelemetry
Você pode usar qualquer uma das seguintes opções para integrar OpenTelemetry com Instana :
- Instana Distribuição do coletor OpenTelemetry ( IDOT ): Utilização do coletor OpenTelemetry gerenciado pelo Instana para receber e processar dados do OpenTelemetry.
- Instana OTLP pontos de extremidade : Configurar um exportador OpenTelemetry OTLP para enviar dados OTel diretamente para um agente Instana ou para pontos de extremidade de backend Instana OTLP.
- Instana OpenTelemetry PHP Exportador : Utilizando o exportador dedicado Instana OpenTelemetry PHP, que converte intervalos do OTel em intervalos nativos do Instana e utiliza a camada de transporte nativa Instana.
Opção 1: Utilização de uma distribuição do tipo “ Instana ” do coletor “ OpenTelemetry ”
O Collector do OpenTelemetry para a distribuição do Instana ( IDOT ) é uma versão totalmente gerenciada e pré-configurada do Collector do OpenTelemetry que se integra perfeitamente à plataforma de observabilidade do Instana.
Para coletar dados de telemetria de suas aplicações do PHP, siga as etapas a seguir para instalar e configurar o IDOT :
Instale o coletor: Implemente a distribuição Instana do coletor OpenTelemetry como sidecar, daemon ou gateway, dependendo das necessidades da sua infraestrutura. Para obter instruções detalhadas sobre como configurar o coletor IDOT, consulte a documentação da Distribuição do Coletor OpenTelemetry do Instana.
Configure seu aplicativo PHP : Configure seu aplicativo PHP para enviar dados OpenTelemetry ao coletor Instana :
OTEL_PHP_AUTOLOAD_ENABLED=true OTEL_SERVICE_NAME=your_service_name OTEL_TRACES_EXPORTER=otlp OTEL_EXPORTER_OTLP_PROTOCOL=grpc OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:24317 OTEL_PROPAGATORS=instana,tracecontext
Opção 2: Usando os pontos de extremidade Instana e OTLP
Você pode integrar o OpenTelemetry com o PHP configurando o exportador padrão do OpenTelemetry Protocol ( OTLP ) para enviar os traços do OpenTelemetry diretamente para o agente do Instana ou para o backend do Instana.
Ativação da instrumentação automática (sem código)
Você pode ativar a instrumentação automática definindo variáveis de ambiente, o que permite que o ` OpenTelemetry ` rastreie automaticamente as bibliotecas ` PHP ` compatíveis.
Para referência, consulte este aplicativo de demonstração em WordPressPHP, que apresenta a instrumentação sem código em OpenTelemetryPHP e a integração em OpenTelemetry com Instana.
Você pode ativar a instrumentação automática definindo as seguintes variáveis de ambiente mínimas:
| Variável | Descrição |
|---|---|
OTEL_PHP_AUTOLOAD_ENABLED |
Defina como true para ativar a instrumentação sem código do OpenTelemetry |
OTEL_SERVICE_NAME |
Nome lógico do serviço para correlação de infraestrutura |
OTEL_TRACES_EXPORTER |
Deve ser definido como otlp |
OTEL_EXPORTER_OTLP_PROTOCOL |
Escolha grpc, http/protobuf, ou http/json |
OTEL_EXPORTER_OTLP_ENDPOINT |
URL do endpoint OTLP, seja o agente Instana ou o backend |
Exemplo
OTEL_PHP_AUTOLOAD_ENABLED=true
OTEL_SERVICE_NAME=wordpress_otel_instrumentation
OTEL_TRACES_EXPORTER=otlp
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_PROPAGATORS=instana,tracecontext
Com essas configurações definidas, você pode iniciar um aplicativo PHP e os rastros OpenTelemetry gerados por ele ficarão visíveis na interface do usuário Instana.
Você também pode configurar aplicativos do PHP para enviar rastreamentos do OpenTelemetry diretamente para o agente ou backend do Instana usando pontos de extremidade do OTLP.
Envio de dados para o endpoint do agente OTLP
O agente do Instana fornece pontos de conexão OTLP que podem receber dados OpenTelemetry diretamente de suas aplicações PHP.
Para enviar dados para o ponto de extremidade OTLP do agente do Instana, configure seu aplicativo PHP da seguinte forma:
OTEL_PHP_AUTOLOAD_ENABLED=true
OTEL_SERVICE_NAME=your_service_name
OTEL_TRACES_EXPORTER=otlp
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_PROPAGATORS=instana,tracecontext
Envio de dados para o endpoint de backend OTLP
Em ambientes onde não é possível a comunicação direta com o agente do Instana, você pode configurar sua aplicação PHP para enviar dados do OpenTelemetry diretamente para o backend do Instana.
Para obter mais informações, consulte Envio de dados do OpenTelemetry para o Instana.
Para enviar dados para o endpoint OTLP do backend do Instana, configure seu aplicativo PHP da seguinte forma:
OTEL_PHP_AUTOLOAD_ENABLED=true
OTEL_SERVICE_NAME=your_service_name
OTEL_TRACES_EXPORTER=otlp
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT="https://{instana-backend-otlp-acceptor-endpoint}":4317"
OTEL_EXPORTER_OTLP_HEADERS="x-instana-key:=apiToken {your-api-token}"
OTEL_PROPAGATORS=instana,tracecontext
Substitua {region} pela sua região Instana e {your-api-token} pelo seu token Instana API.
Configuração da instrumentação manual
Você precisa integrar manualmente o SDK do OpenTelemetry às suas aplicações nos seguintes casos:
- Você não está utilizando a instrumentação da biblioteca PHP compatível com OTel ou Instana.
- Você deseja ampliar as funcionalidades da biblioteca Tracer do PHP.
- Você precisa de um controle mais preciso sobre a instrumentação de suas aplicações.
Para configurar a instrumentação manual, siga estas etapas:
- Instale o pacote " OpenTelemetry " API e os pacotes SDK.
composer require open-telemetry/sdk composer require open-telemetry/api Adicione a instrumentação manual OpenTelemetry desejada ao seu código PHP, seguindo a documentação sobre instrumentação manual disponível em OpenTelemetry PHP.
Escolha um propagador de contexto de rastreament OpenTelemetry e para aplicações distribuídas. Instana suporta cabeçalhos de rastreamento W3C e cabeçalhos nativos Instana para a propagação do rastreamento.
Usando um propagador de tipo ` Instana `
OTEL_PROPAGATORS=instanaUsando
tracecontexto propagadorOTEL_PROPAGATORS=tracecontext
O uso de propagadores permite que Instana junte intervalos de OpenTelemetry e outros intervalos de Instana em um único rastreamento da sua aplicação.
Para obter mais informações sobre exemplos de instrumentação para rastreamento distribuído, consulte Ativando a propagação de contexto para rastreamento distribuído.
O exemplo simples a seguir demonstra a instrumentação manual com um span pai e um span filho:
use OpenTelemetry\SDK\Registry;
use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor;
use OpenTelemetry\SDK\Trace\TracerProvider;
use OpenTelemetry\API\Trace\SpanKind;
$tracerProvider = new TracerProvider(
new SimpleSpanProcessor(
Registry::spanExporterFactory("otlp")->create()
)
);
$tracer = $tracerProvider->getTracer('test');
$rootSpan = $tracer->spanBuilder('rootSpan')->startSpan();
$scope = $rootSpan->activate();
// Do some work
sleep(1);
// Create a child span (automatically becomes a child of the active span)
$childSpan = $tracer->spanBuilder('child-operation')
->startSpan();
$childScope = $childSpan->activate();
$childSpan->end();
$childScope->detach();
// Do more work
sleep(1);
// Add string attribute
$rootSpan->setAttribute('string.attribute', 'value');
$scope->detach();
$rootSpan->end();
$tracerProvider->shutdown();
OpenTelemetry Instana Propagador
O propagador ` OpenTelemetry ` para ` Instana ` fornece propagação de cabeçalhos ` HTTP ` e propagação de bagagem para uso com o aplicativo ` PHP `. Este propagador converte os cabeçalhos de correlação de rastreamento (X-INSTANA-T/X-INSTANA-S/X-INSTANA-L) Instana em cabeçalhos OpenTelemetrySpanContext e OpenTelemetrySpanContext em Instana.
Você pode encontrar aqui um exemplo simples de aplicativo distribuído do tipo “ PHP ”, que demonstra a instrumentação manual utilizando o propagador de contexto Instana.
TraceState cabeçalho sem um elemento `span` pai.Instalando o propagador
Para instalar a extensão propagator do Instana através do Composer, use o seguinte comando:
composer require open-telemetry/opentelemetry-propagation-instana
Como usar o propagador
O propagador ` Instana ` utiliza os métodos `extract` e `inject` para extrair e inserir o contexto de rastreamento no cabeçalho. O propagador pode ser instanciado das seguintes maneiras:
- Instantiação de uma classe de propagador d Instana.
$propagator = InstanaPropagator::getInstance();
- Usando variáveis de ambiente
OTEL_PROPAGATORS=instana,baggage
Para a propagação de bagagem, use ` OpenTelemetryMultiTextMapPropagator` e, em seguida, passe a lista de propagadores, como ` Instana ` e o propagador de bagagem, da seguinte forma:
$propagator = new MultiTextMapPropagator([InstanaPropagator::getInstance(), BaggagePropagator::getInstance()]);
Opção 3: Usando o Instana OpenTelemetry PHP Exporter
O exportador Instana OpenTelemetry PHP é um exportador dedicado que converte spans do OpenTelemetry em spans nativos do Instana e utiliza a camada de transporte nativa do Instana para encaminhar os rastreamentos para o backend do Instana.
Para obter informações detalhadas sobre a instalação, configuração e uso do exportador Instana OpenTelemetry PHP, consulte o exportador OpenTelemetry PHP.