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
, supported
e 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. |
Azure Kubernetes Service