O ASMExtensionProvider é uma Custom Resource Definition (CRD) que configura backends de telemetria para o Alibaba Cloud Service Mesh (ASM). Cada recurso ASMExtensionProvider mapeia um serviço de backend, como Zipkin, OpenTelemetry ou um logger de acesso baseado em arquivo do Envoy.
Para ativar um provedor, referencie-o pelo nome em uma Telemetry CRD.
Antes de começar
O
namedo provedor deve corresponder a um serviço Kubernetes acessível na malha. Para serviços externos, registre-os primeiro por meio de uma ServiceEntry.O campo
serviceusa o formato de nome de domínio totalmente qualificado (FQDN):<service-name>.<namespace>.svc.cluster.local. Para referenciar um serviço em outro namespace, inclua o namespace no FQDN.
Exemplos
Reportar rastreamentos ao Zipkin
apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
name: zipkin
spec:
zipkin:
port: 8090
service: zipkin.istio-system.svc.cluster.local
Personalizar o formato de log de acesso do Envoy
Defina um formato de log JSON personalizado para os logs de acesso do proxy Envoy e direcione a saída para stdout:
apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
name: envoy
spec:
envoyFileAccessLog:
logFormat:
text: '{"bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","downstream_local_address":"%DOWNSTREAM_LOCAL_ADDRESS%","downstream_remote_address":"%DOWNSTREAM_REMOTE_ADDRESS%","duration":"%DURATION%","istio_policy_status":"%DYNAMIC_METADATA(istio.mixer:status)%","method":"%REQ(:METHOD)%","path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","protocol":"%PROTOCOL%","request_id":"%REQ(X-REQUEST-ID)%","requested_server_name":"%REQUESTED_SERVER_NAME%","response_code":"%RESPONSE_CODE%","response_flags":"%RESPONSE_FLAGS%","route_name":"%ROUTE_NAME%","start_time":"%START_TIME%","trace_id":"%REQ(X-B3-TRACEID)%","upstream_cluster":"%UPSTREAM_CLUSTER%","upstream_host":"%UPSTREAM_HOST%","upstream_local_address":"%UPSTREAM_LOCAL_ADDRESS%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_response_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_transport_failure_reason":"%UPSTREAM_TRANSPORT_FAILURE_REASON%","user_agent":"%REQ(USER-AGENT)%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","authority_for":"%REQ(:AUTHORITY)%"}'
path: /dev/stdout
A string de formatação usa operadores de comando do Envoy, como %RESPONSE_CODE% e %DURATION%. Inclua apenas os campos relevantes para o seu caso de uso. O exemplo acima é um modelo abrangente.
Roteamento de rastreamentos para diferentes backends por cluster
Use um provedor agregado para enviar dados de rastreamento de clusters específicos a backends designados. No exemplo a seguir, o cluster-a reporta rastreamentos ao Zipkin, enquanto todos os outros clusters usam OpenTelemetry.
O provedor agregado requer a versão 1.22.6.89 ou posterior do ASM.
Etapa 1: Defina o provedor agregado e os provedores de rastreamento individuais.
apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
name: aggregate-provider
spec:
aggregate:
defaultProvider:
name: opentelemetry
uniqueProviders:
- clusters:
- id: cluster-a
region: cn-hangzhou
provider:
name: zipkin
---
apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
name: zipkin
spec:
zipkin:
port: 8090
service: zipkin.istio-system.svc.cluster.local
---
apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
name: opentelemetry
spec:
opentelemetry:
port: 8090
service: otel.istio-system.svc.cluster.local
Etapa 2: Referencie os provedores em uma Telemetry CRD para ativá-los.
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: default
namespace: istio-system
spec:
accessLogging:
- disabled: false
providers:
- name: envoy
tracing:
- providers:
- name: zipkin
Referência de campos
ASMExtensionProvider
Cada recurso ASMExtensionProvider contém exatamente uma configuração de provedor. Defina o campo correspondente ao seu backend de destino.
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
ZipkinTracingProvider |
Não |
Backend de rastreamento Zipkin. Consulte ZipkinTracingProvider. |
|
|
LightstepTracingProvider |
Não |
Backend de rastreamento Lightstep. Consulte LightstepTracingProvider. |
|
|
DatadogTracingProvider |
Não |
Backend de rastreamento Datadog. Consulte DatadogTracingProvider. |
|
|
StackdriverProvider |
Não |
Backend de rastreamento Stackdriver. Consulte StackdriverProvider. |
|
|
OpenCensusAgentTracingProvider |
Não |
Backend de rastreamento OpenCensus. Consulte OpenCensusAgentTracingProvider. |
|
|
SkywalkingTracingProvider |
Não |
Backend de rastreamento Skywalking. Consulte SkywalkingTracingProvider. |
|
|
OpenTelemetryProvider |
Não |
Backend de rastreamento OpenTelemetry. Consulte OpenTelemetryProvider. |
|
|
EnvoyFileAccessLogProvider |
Não |
Provedor de log de acesso baseado em arquivo do Envoy. Consulte EnvoyFileAccessLogProvider. |
|
|
AggregateProvider |
Não |
Roteia telemetria para diferentes provedores com base na identidade do cluster. Consulte AggregateProvider. |
ZipkinTracingProvider
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
FQDN do serviço Zipkin. Exemplo: |
|
|
string |
Sim |
Caminho do endpoint de API do serviço Zipkin. |
|
|
uint32 |
Não |
Porta do serviço Zipkin. |
|
|
uint32 |
Não |
Comprimento máximo de caracteres por tag. Padrão: |
LightstepTracingProvider
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
FQDN do serviço Lightstep. |
|
|
uint32 |
Sim |
Porta do serviço Lightstep. |
|
|
string |
Não |
Token de acesso para autenticação no Lightstep. |
|
|
uint32 |
Não |
Comprimento máximo de caracteres por tag. Padrão: |
DatadogTracingProvider
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
FQDN do serviço de agente Datadog. |
|
|
uint32 |
Sim |
Porta do serviço de agente Datadog. |
|
|
uint32 |
Não |
Comprimento máximo de caracteres por tag. Padrão: |
StackdriverProvider
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
uint32 |
Não |
Comprimento máximo de caracteres por tag. Padrão: |
|
|
StackdriverProvider_Logging |
Não |
Configuração de logging do Stackdriver. Consulte StackdriverProvider_Logging. |
OpenCensusAgentTracingProvider
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
FQDN do serviço de agente OpenCensus. |
|
|
uint32 |
Sim |
Porta do serviço de agente OpenCensus. |
|
|
[]string |
Não |
Headers de propagação de contexto de rastreamento. Padrão: |
|
|
uint32 |
Não |
Comprimento máximo de caracteres por tag. Padrão: |
SkywalkingTracingProvider
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
FQDN do serviço Skywalking. |
|
|
uint32 |
Sim |
Porta do serviço Skywalking. |
OpenTelemetryProvider
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
FQDN do serviço coletor OpenTelemetry. |
|
|
uint32 |
Sim |
Porta do serviço coletor OpenTelemetry. |
|
|
uint32 |
Não |
Comprimento máximo de caracteres por tag. Padrão: |
|
|
OpenTelemetryProvider_GrpcService |
Não |
Configuração de transporte gRPC. Consulte OpenTelemetryProvider_GrpcService. |
|
|
OpenTelemetryProvider_HttpService |
Não |
Configuração de transporte HTTP. Se omitido, o gRPC será usado por padrão. Consulte OpenTelemetryProvider_HttpService. |
EnvoyFileAccessLogProvider
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Não |
Caminho do arquivo para saída de log. Exemplo: |
|
|
EnvoyFileAccessLogProvider_LogFormat |
Não |
Formato de saída de log. Suporta |
AggregateProvider
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
ProviderRef |
Sim |
Provedor usado para clusters que não correspondem a nenhuma entrada em |
|
|
[]UniqueProvider |
Não |
Atribuições de provedor por cluster. Consulte UniqueProvider. |
UniqueProvider
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
ProviderRef |
Não |
Provedor a ser usado para os clusters especificados. Consulte ProviderRef. |
|
|
[]ClusterRef |
Não |
Clusters atribuídos a este provedor. Consulte ClusterRef. |
StackdriverProvider_Logging
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
map[string]string |
Não |
Nomes de rótulos e expressões incluídos nas entradas de log. Exemplo: |
OpenTelemetryProvider_HttpService
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Caminho do endpoint de API do serviço coletor. |
|
|
string |
Não |
Timeout para requisições HTTP. |
|
|
[]HeaderValue |
Não |
Headers HTTP personalizados anexados a cada requisição. Consulte HeaderValue. |
OpenTelemetryProvider_GrpcService
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Não |
Timeout para requisições gRPC. |
|
|
[]HeaderValue |
Não |
Headers de metadados personalizados anexados a cada requisição gRPC. Consulte HeaderValue. |
HeaderValue
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Nome do header. |
|
|
string |
Sim |
Valor do header. |
EnvoyFileAccessLogProvider_LogFormat
Especifique o formato de log como texto simples ou JSON estruturado. Use operadores de comando do Envoy para referenciar atributos de requisição e resposta.
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Não |
Formato de log em texto simples. Exemplo: |
|
|
map[string]string |
Não |
Formato de log estruturado em JSON. Exemplo: |
ProviderRef
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Não |
Nome do recurso ASMExtensionProvider a ser referenciado. |
ClusterRef
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
ID do cluster. |
|
|
string |
Não |
Nome do cluster. |
|
|
string |
Não |
Região onde o cluster está implantado. |