Se a versão da sua instância do Service Mesh (ASM) for anterior à v1.18.0.124, você só poderá exportar os dados de rastreamento para um sistema autogerenciado compatível com Zipkin. Se a instância do ASM for v1.18.0.124 ou posterior, a exportação ocorrerá exclusivamente para o Managed Service for OpenTelemetry. Este tópico descreve como exportar dados de rastreamento do ASM para um sistema autogerenciado compatível com Zipkin ou para o Managed Service for OpenTelemetry.
Pré-requisitos
Um sistema autogerenciado compatível com Zipkin está configurado e escutando na porta 9411 do servidor Zipkin. Se você usar Jaeger, implante os coletores do Zipkin.
O sistema autogerenciado está implantado em um cluster no plano de dados.
Uma instância do ASM foi criada e um cluster Kubernetes foi adicionado a ela. Para mais informações, consulte Add a cluster to an ASM instance.
Um gateway de entrada foi criado na instância do ASM. Para mais informações, consulte Create an ingress gateway.
Procedimento
Execute as operações conforme a versão da sua instância do ASM.
Para uma instância do ASM v1.18.0.124 ou posterior
Etapa 1: Implantar o Zipkin
-
Execute o comando abaixo para criar um namespace chamado zipkin destinado à implantação do Zipkin:
kubectl create namespace zipkin -
Instale o Zipkin usando o Helm com o seguinte comando:
helm install --namespace zipkin my-zipkin carlosjgp/zipkin --version 0.2.0 -
Verifique se o Zipkin está funcionando corretamente com este comando:
kubectl -n zipkin get podsSaída esperada:
NAME READY STATUS RESTARTS AGE my-zipkin-collector-79c6dc9cd7-jmswm 1/1 Running 0 29m my-zipkin-ui-64c97b4d6c-f742j 1/1 Running 0 29m
Etapa 2: Implantar o OpenTelemetry Operator
-
No ambiente kubeconfig do seu cluster ACK, execute o comando a seguir para criar o namespace
opentelemetry-operator-system:kubectl create namespace opentelemetry-operator-system -
Instale o OpenTelemetry Operator no namespace opentelemetry-operator-system usando o Helm com o comando abaixo:
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm install --namespace=opentelemetry-operator-system opentelemetry-operator open-telemetry/opentelemetry-operator \ --set "manager.collectorImage.repository=otel/opentelemetry-collector-k8s" \ --set admissionWebhooks.certManager.enabled=false \ --set admissionWebhooks.autoGenerateCert.enabled=true -
Confirme se o OpenTelemetry Operator está em execução adequada com este comando:
kubectl get pod -n opentelemetry-operator-systemSaída esperada:
NAME READY STATUS RESTARTS AGE opentelemetry-operator-854fb558b5-pvllj 2/2 Running 0 1mUm
STATUSdefinido comoRunningindica que o OpenTelemetry Operator está ativo.
Etapa 3: Criar um OpenTelemetry Collector
-
Crie um arquivo collector.yaml contendo o conteúdo exibido no bloco de código a seguir.
Substitua
${ENDPOINT}no arquivo YAML por um endpoint de virtual private cloud (VPC) que suporte o protocolo gRPC. Substitua${TOKEN}pelo token de autenticação. Para obter detalhes sobre como conseguir os endpoints suportados pelo Managed Service for OpenTelemetry e os tokens de autenticação, consulte Connect to Managed Service for OpenTelemetry and authenticate clients. -
Conecte-se a um cluster Container Service for Kubernetes (ACK) via kubectl utilizando as informações do arquivo kubeconfig e implante o OpenTelemetry Collector no cluster com o comando:
kubectl apply -f collector.yaml -
Valide se o OpenTelemetry Collector foi iniciado executando o comando abaixo:
kubectl get pod -n opentelemetry-operator-systemSaída esperada:
NAME READY STATUS RESTARTS AGE opentelemetry-operator-854fb558b5-pvllj 2/2 Running 0 3m default-collector-5cbb4497f4-2hjqv 1/1 Running 0 30sEssa saída confirma que o OpenTelemetry Collector iniciou normalmente.
-
Verifique se existe um service criado para o OpenTelemetry Collector com este comando:
kubectl get svc -n opentelemetry-operator-systemSaída esperada:
opentelemetry-operator ClusterIP 172.16.138.165 <none> 8443/TCP,8080/TCP 3m opentelemetry-operator-webhook ClusterIP 172.16.127.0 <none> 443/TCP 3m default-collector ClusterIP 172.16.145.93 <none> 4317/TCP 30s default-collector-headless ClusterIP None <none> 4317/TCP 30s default-collector-monitoring ClusterIP 172.16.136.5 <none> 8888/TCP 30sA saída acima demonstra que um service foi provisionado para o OpenTelemetry Collector.
Etapa 4: Implantar aplicações de teste
-
Implante a aplicação de exemplo Bookinfo.
-
Crie o arquivo bookinfo.yaml com o conteúdo a seguir.
-
Implante a aplicação Bookinfo no cluster do plano de dados.
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f bookinfo.yaml
-
-
Implante a aplicação sleep.
-
Crie um arquivo chamado sleep.yaml com o conteúdo abaixo.
-
Implante a aplicação sleep.
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f sleep.yaml
-
Etapa 5: Acessar a aplicação productpage e visualizar os dados de rastreamento
-
Acesse a aplicação productpage executando o comando a seguir:
kubectl exec -it deploy/sleep -c sleep -- curl productpage:9080/productpage?u=normal -
Após o acesso bem-sucedido, visualize os logs do OpenTelemetry Collector e a saída impressa pelo debug exporter.
2023-11-20T08:44:27.531Z info TracesExporter {"kind": "exporter", "data_type": "traces", "name": "debug", "resource spans": 1, "spans": 3}
Etapa 6: Configurar um gateway do ASM e visualizar dados de rastreamento no serviço Zipkin
-
Crie um gateway Istio.
-
Utilize o conteúdo abaixo para criar o arquivo ingressgateway.yaml:
-
Conecte-se à instância do ASM via kubectl usando as informações do arquivo kubeconfig. Em seguida, configure o gateway do ASM para escutar na porta 80 e defina uma rota para o serviço Zipkin com o comando:
kubectl apply -f ingressgateway.yaml
-
-
Acesse o serviço Zipkin utilizando o endereço IP do gateway do ASM para visualizar os dados de rastreamento.

Para uma instância do ASM com versão anterior à v1.18.0.124
Etapa 1: Ativar o recurso de rastreamento na instância do ASM
Para instâncias do ASM com versão anterior à v1.17.2.28, ative o rastreamento seguindo estes passos: faça login no console do ASM. Na página Base Information da instância, clique em Settings. Na tela seguinte, selecione Enable Tracing Analysis, ajuste os parâmetros necessários e clique em OK.
Caso a versão da instância seja v1.17.2.28 ou superior, habilite o rastreamento consultando a seção "Description of Tracing Analysis Settings" em Configure Observability Settings.
Etapa 2: Implantar o Zipkin no cluster Kubernetes do plano de dados
-
Crie um arquivo zipkin-server.yaml utilizando o conteúdo a seguir:
NotaAo utilizar um arquivo YAML personalizado para implantar o Zipkin, certifique-se de que a implantação ocorra no namespace istio-system.
-
Implante o Zipkin no cluster Kubernetes do plano de dados executando o comando abaixo:
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f zipkin-server.yamlNotaSe estiver usando o código de exemplo deste tópico, substitua
${DATA_PLANE_KUBECONFIG}no comando pelo caminho do arquivo kubeconfig do cluster Kubernetes no plano de dados. Além disso, substitua${ASM_KUBECONFIG}pelo caminho do arquivo kubeconfig da instância do ASM. Após concluir a implantação anterior, verifique se o pod onde o servidor Zipkin reside iniciou corretamente.
Etapa 3: Criar um service para expor o servidor Zipkin
Crie um service denominado zipkin no namespace istio-system para receber os dados de rastreamento do ASM.
Para expor o servidor Zipkin à internet, utilize o arquivo zipkin-svc-expose-public.yaml.
Caso contrário, use o arquivo zipkin-svc.yaml.
Neste exemplo, utilizamos o arquivo zipkin-svc-expose-public.yaml para expor o servidor Zipkin publicamente, facilitando a visualização dos dados de rastreamento.
O nome do service criado deve ser obrigatoriamente zipkin.
-
Crie um arquivo YAML conforme suas necessidades de negócio usando o código abaixo.
-
Para expor o servidor Zipkin à internet, utilize o arquivo zipkin-svc-expose-public.yaml com o seguinte conteúdo:
-
Se não for necessário expor o servidor Zipkin à internet, utilize o arquivo zipkin-svc.yaml com o conteúdo abaixo:
NotaAo usar um arquivo YAML personalizado para implantar o service zipkin, garanta que ele esteja no namespace istio-system.
-
-
Execute os comandos a seguir para implantar o service zipkin no cluster Kubernetes do plano de dados:
# Deploy the zipkin service to expose the Zipkin server to the internal network. kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f zipkin-svc.yaml # Deploy the zipkin service to expose the Zipkin server to the Internet. kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f zipkin-svc-expose-public.yaml
Etapa 4: Implantar a aplicação Bookinfo
-
Implante a aplicação Bookinfo no cluster Kubernetes do plano de dados com o comando:
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f bookinfo.yaml -
No cliente kubectl, implante os virtual services para o Bookinfo executando:
kubectl --kubeconfig=${ASM_KUBECONFIG} apply -f virtual-service-all-v1.yaml -
Configure as destination rules para o Bookinfo no cliente kubectl com o comando:
kubectl --kubeconfig=${ASM_KUBECONFIG} apply -f destination-rule-all.yaml -
Implante um gateway para o Bookinfo através do cliente kubectl executando:
kubectl --kubeconfig=${ASM_KUBECONFIG} apply -f bookinfo-gateway.yaml
Etapa 5: Gerar dados de rastreamento
-
Obtenha o endereço IP do gateway de entrada com o comando:
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} get svc -n istio-system|grep ingressgateway|awk -F ' ' '{print $4}' Insira
IP address of the ingress gateway/productpagena barra de endereços do navegador para acessar o Bookinfo.
Etapa 6: Visualizar dados de rastreamento
-
Recupere o endereço do service zipkin executando:
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG}get svc -n istio-system|grep zipkin|awk -F ' ' '{print $4}' -
Digite
IP address of the zipkin service:9411na barra de endereços do seu navegador para abrir o console do Zipkin e visualizar os dados de rastreamento.