Partilhar via


API de telemetria para complemento de malha de serviço baseado em Istio para o Serviço Kubernetes do Azure

O Istio pode gerar métricas, rastreamentos distribuídos e logs de acesso para todas as cargas de trabalho na malha. O complemento de malha de serviço baseado em Istio para o Serviço Kubernetes do Azure (AKS) fornece opções de personalização de telemetria por meio do MeshConfig compartilhado e da API v1 de Telemetria do Istio para revisões asm-1-22 menores e superiores do complemento Istio.

Nota

Enquanto o Istio MeshConfig também fornece opções para configurar a telemetria globalmente em toda a malha, a API de Telemetria oferece um controle mais granular sobre as configurações de telemetria por serviço ou por carga de trabalho. Como a comunidade Istio continua a investir na API de Telemetria, ela agora é o método preferido para configuração de telemetria. Incentivamos a migração para a API de Telemetria para configurar a telemetria a ser coletada na malha.

Pré-requisitos

  • Você deve estar em revisão asm-1-22 ou superior. Para obter informações sobre como executar atualizações de versões secundárias, consulte a documentação de atualização do complemento Istio.

Configurar recursos de Telemetria

O exemplo a seguir demonstra como o log de acesso do Envoy pode ser habilitado na malha para o complemento Istio por meio da API de Telemetria usando asm-1-22 (ajuste a revisão conforme necessário). Para obter orientação sobre outras personalizações da API de Telemetria para o complemento, consulte a seção Escopo de suporte da API de Telemetria e a documentação do Istio.

Implantar aplicativos de exemplo

Rotule o namespace para injeção de sidecar:

kubectl label ns default istio.io/rev=asm-1-22

Implante o sleep aplicativo e defina a variável de SOURCE_POD ambiente:

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/sleep/sleep.yaml
export SOURCE_POD=$(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name})

Em seguida, implante o httpbin aplicativo:

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/httpbin/httpbin.yaml

Habilite o log de acesso do Envoy com a API de Telemetria do Istio

Implante o seguinte recurso da API de Telemetria do Istio v1 para habilitar o log de acesso do Envoy para toda a malha:

cat <<EOF | kubectl apply -n aks-istio-system -f -
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: mesh-logging-default
spec:
  accessLogging:
  - providers:
    - name: envoy
EOF

Testar logs de acesso

Envie um pedido de sleep para httpbin:

kubectl exec "$SOURCE_POD" -c sleep -- curl -sS -v httpbin:8000/status/418

Verifique se os logs de acesso estão visíveis para o sleep pod:

kubectl logs -l app=sleep -c istio-proxy

Deverá ver o seguinte resultado:

[2024-08-13T00:31:47.690Z] "GET /status/418 HTTP/1.1" 418 - via_upstream - "-" 0 135 12 11 "-" "curl/8.9.1" "cdecaca5-5964-48f3-b42d-f474dfa623d5" "httpbin:8000" "10.244.0.13:8080" outbound|8000||httpbin.default.svc.cluster.local 10.244.0.12:53336 10.0.112.220:8000 10.244.0.12:42360 - default

Agora, verifique se os logs de acesso estão visíveis para o httpbin pod:

kubectl logs -l app=httpbin -c istio-proxy

Deverá ver o seguinte resultado:

[2024-08-13T00:31:47.696Z] "GET /status/418 HTTP/1.1" 418 - via_upstream - "-" 0 135 2 1 "-" "curl/8.9.1" "cdecaca5-5964-48f3-b42d-f474dfa623d5" "httpbin:8000" "10.244.0.13:8080" inbound|8080|| 127.0.0.6:55401 10.244.0.13:8080 10.244.0.12:53336 outbound_.8000_._.httpbin.default.svc.cluster.local default

Escopo de suporte da API de telemetria

Para o complemento de malha de serviço Istio para AKS, os campos da API de Telemetria são classificados como allowed, supportede blocked valores. Para obter mais informações sobre a política de suporte do complemento Istio para recursos e configurações de malha, consulte o documento de política de suporte do complemento Istio.

As seguintes configurações de API de Telemetria são ou allowed supported para o complemento Istio. Qualquer campo não incluído nesta tabela é blocked.

Campo API de Telemetria Suportado/Permitido Notas
accessLogging.match Suportado -
accessLogging.disabled Suportado -
accessLogging.providers Permitido O provedor de log de acesso padrão envoy é suportado. Para obter uma experiência gerenciada para coleta e consulta de logs, consulte Azure Monitor Container Insights Log Analytics. As soluções de coleta e análise de logs de terceiros ou de código aberto não são allowed suportadas.
metrics.overrides Suportado -
metrics.providers Permitido A coleta de métricas com o Azure Monitor Managed Prometheus é suportada. As soluções de raspagem de métricas de terceiros ou de código aberto não são allowed suportadas.
tracing.* Permitido Todas as configurações de rastreamento não são allowed suportadas.