Ative o Xtrace no AlbConfig para anexar IDs de rastreamento no ALB Ingress e correlacionar logs de acesso a rastreamentos distribuídos, sem precisar instrumentar cada serviço individualmente.
Pré-requisitos
Verifique se você possui:
-
O ALB Ingress Controller (versão 2.11.1 ou posterior) instalado no cluster
New clusters: Na página Component Configuration, durante a criação do cluster, selecione ALB Ingress no campo Ingress. Consulte Criar um cluster gerenciado ACK, Criar um cluster dedicado ACK (criação de novos clusters descontinuada) ou Criar um cluster serverless ACK.
Existing clusters: Instale ou atualize o componente em Gerenciar componentes.
(Apenas para clusters dedicados ACK) O ALB Ingress Controller deve ter as permissões de acesso necessárias. Conceder permissões de acesso do ALB Ingress Controller a um cluster dedicado ACK.
Managed Service for OpenTelemetry ativado. AtivarManaged Service for OpenTelemetry se necessário.
Como funciona
Quando uma requisição atinge o listener do ALB, ele gera um ID de rastreamento com o algoritmo de amostragem Zipkin e o injeta nos cabeçalhos da requisição. O ALB encaminha a requisição ao backend com o ID de rastreamento anexado. Os logs de acesso, incluindo o ID de rastreamento, são gravados em um Logstore do Simple Log Service (SLS). O Managed Service for OpenTelemetry lê esses logs, reconstrói o rastreamento e o exibe no console OpenTelemetry.
Configure o Xtrace no nível do listener no AlbConfig. A taxa de amostragem aplica-se a todo o tráfego desse listener.
Ative o Xtrace para ALB Ingress
Etapa 1: Ative o Simple Log Service para o cluster
Ative o Simple Log Service no cluster para criar automaticamente um projeto SLS. Consulte Coletar logs de contêineres de cluster ACK.
Etapa 2: Obtenha o ID do projeto SLS
Faça login no console ACK e clique em Clusters.
Clique no nome do cluster e, em seguida, clique em Cluster Information.
Na aba Basic Information, copie o valor de Simple Log Service Project para usar na Etapa 3.
Etapa 3: Crie um AlbConfig
O AlbConfig cria uma instância ALB com logs de acesso do Simple Log Service e Xtrace ativado no listener.
-
Crie o arquivo
alb-test.yaml:Modifique as configurações do Xtrace somente após ativar os logs de acesso do Simple Log Service na instância ALB. Para reutilizar uma instância ALB existente, defina
forceOverride: trueemspec.configpara sobrescrever as propriedades existentes. Consulte Reutilizar uma instância ALB existente .Consulte Criar e gerenciar vSwitches .
Parâmetros do Xtrace
Parameter
Description
Default
Range
tracingEnabledAtiva o Xtrace para o listener
falsetrue/falsetracingSampleTaxa de amostragem. 10000 = 100%, 5000 = 50%, 1 = 0,01%
—
1–10000
tracingTypeAlgoritmo de amostragem
—
ZipkinapiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-demo spec: config: name: alb-test addressType: Intranet zoneMappings: # The vSwitch must be in an ALB-supported zone and the same VPC as the cluster. Select at least two vSwitches in different zones for high availability. - vSwitchId: vsw-2vc82nndnoo********** # Replace with your vSwitch ID. - vSwitchId: vsw-2vc30f5mlhs********** accessLogConfig: logProject: "k8s-log-xz92lvykqj1siwvif****" # Replace with your SLS project ID from Step 2. logStore: alb_xz92lvykqj1siwvif**** # Must start with "alb_". Created automatically if it does not exist. listeners: - port: 80 protocol: HTTP logConfig: accessLogRecordCustomizedHeadersEnabled: false accessLogTracingConfig: tracingEnabled: true # Set to true to enable Xtrace. Default: false. tracingSample: 9999 # Sampling rate. Range: 1-10000, where 10000 = 100%. Example: 9999 = 99.99%. tracingType: Zipkin # Sampling algorithm. Only takes effect when tracingEnabled is true. -
Aplique o AlbConfig:
kubectl apply -f alb-test.yamlSaída esperada:
albconfig.alibabacloud.com/alb-demo created
Etapa 4: Crie uma IngressClass
-
Crie o arquivo
alb.yaml:apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demo -
Aplique a IngressClass:
kubectl apply -f alb.yamlSaída esperada:
ingressclass.networking.k8s.io/alb created
Etapa 5: Implante um serviço e configure o roteamento de Ingress
-
Crie o arquivo
cafe-service.yamlpara implantar um Deploymentcoffeee um Servicecoffee-svc:apiVersion: apps/v1 kind: Deployment metadata: name: coffee spec: replicas: 2 selector: matchLabels: app: coffee template: metadata: labels: app: coffee spec: containers: - name: coffee image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: coffee-svc spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: coffee type: NodePort -
Implante o serviço:
kubectl apply -f cafe-service.yamlSaída esperada:
deployment.apps/coffee created service/coffee-svc created -
Crie o arquivo
cafe-ingress.yamlcom as regras de roteamento de Ingress:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: - path: /coffee pathType: ImplementationSpecific backend: service: name: coffee-svc port: number: 80 -
Aplique o Ingress:
kubectl apply -f cafe-ingress.yamlSaída esperada:
ingress.networking.k8s.io/cafe-ingress created
Etapa 6: Configure a resolução de nome de domínio
Se você definiu um domínio personalizado em spec.rules.host, adicione um registro CNAME apontando para o nome DNS do ALB. Consulte Criar e usar um ALB Ingress para expor Services a tráfego externo.
Etapa 7: Envie requisições para gerar dados de rastreamento
-
Obtenha o endereço do ALB:
kubectl get ingSaída esperada:
NAME CLASS HOSTS ADDRESS PORTS AGE cafe-ingress alb demo.domain.ingress.top alb-u53i28ewt580*****.cn-<Region>.alb.aliyuncs.com 80 16m -
Envie uma requisição:
Os rastreamentos aparecem no console após a amostragem de requisições suficientes. Com
tracingSample: 9999(99,99%), uma única requisição basta. Com uma taxa menor, comotracingSample: 100(1%), envie pelo menos 100 requisições.curl -H Host:demo.domain.ingress.top http://alb-u53i28ewt580*****.cn-<Region>.alb.aliyuncs.com/coffeefor i in $(seq 1 100); do curl -s -o /dev/null -H Host:demo.domain.ingress.top http://alb-u53i28ewt580*****.cn-<Region>.alb.aliyuncs.com/coffee; doneA resposta é uma página HTML intitulada Hello World.
Verifique o rastreamento
Verifique os logs de acesso do SLS
Faça login no console ACK e clique em Clusters.
Clique no nome do cluster e, em seguida, clique em Cluster Information.
-
Na aba Basic Information, clique em Simple Log Service Project para abrir o console SLS. Selecione o Logstore cujo nome começa com
alb_(por exemplo,alb_xz92lvykqj1siwvif****). A busca por xtrace deve corresponder aslb_xtrace(ID de rastreamento) extrace_type(valor zipkin), confirmando que os logs de acesso registram dados de rastreamento.
Visualize rastreamentos no console OpenTelemetry
Faça login no console do Managed Service for OpenTelemetry.
Na página Applications, selecione sua região e clique em API Calls > Trace para visualizar os dados de rastreamento. A aba exibe até 100 rastreamentos de maior duração. Consulte Chamadas de Interface.
Próximos passos
Para usar o Nginx Ingress para rastreamento distribuído, consulte Implementar Tracing Analysis para o add-on Nginx Ingress Controller.
Em caso de problemas, consulte Solucionar problemas de ALB Ingress e Perguntas frequentes sobre ALB Ingress.