A CustomResourceDefinition (CRD) Telemetry define e configura políticas e comportamentos relacionados à observação e coleta de dados em uma instância do Service Mesh (ASM). Ela permite gerenciar os recursos de telemetria do Istio com alta granularidade, incluindo logs, métricas e rastreamento. Com a CRD Telemetry, você personaliza e ajusta os métodos de coleta e processamento de dados de telemetria conforme as necessidades do seu negócio. Este tópico descreve como configurar uma CRD Telemetry e detalha seus campos.
Exemplos de configuração
O Istio oferece suporte a configurações de observabilidade em três níveis, correspondentes às seguintes opções no console do ASM:
Configurações globais (aba Global no console do ASM)
Configurações específicas de namespace (aba Namespace no console do ASM)
Configurações específicas de workload (aba Custom no console do ASM)
Os arquivos YAML de exemplo a seguir demonstram como configurar a observabilidade em diferentes níveis:
Configurações globais
Configurações específicas de namespace
Configurações específicas de workload
Descrição dos campos
Telemetry
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
selector |
Não |
Define os workloads aos quais a política de Telemetry se aplica. |
|
|
tracing |
Tracing[] |
Não |
Especifica o comportamento de rastreamento para todos os workloads selecionados. |
|
metrics |
Metrics[] |
Não |
Determina o comportamento das métricas para todos os workloads selecionados. |
|
accessLogging |
Não |
Indica o comportamento de log de acesso para todos os workloads selecionados. |
Tracing
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
randomSamplingPercentage |
double |
Não |
Defina a taxa de tráfego selecionada para rastreamento. O valor 0 indica ausência de amostragem. |
|
customTags |
map<string, CustomTag> |
Não |
Especifica tags personalizadas adicionais para incluir nos spans de rastreamento gerados. |
Metrics
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
overrides |
Não |
Defina o método de geração personalizado e a apresentação para uma métrica específica ou para todas as métricas padrão predefinidas. |
|
|
providers |
Não |
Indica o nome dos provedores aos quais a configuração se aplica. Defina o valor como prometheus. |
AccessLogging
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
disabled |
bool |
Não |
Controla o comportamento de log. |
|
providers |
Não |
Especifica o nome dos provedores aos quais a configuração se aplica. Defina o valor como envoy. |
WorkloadSelector
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
matchLabels |
map<string, string> |
Não |
Defina um ou mais rótulos que indicam o conjunto de pods ou máquinas virtuais (VMs) aos quais a política se aplica. A busca por rótulos restringe-se ao namespace de configuração onde o recurso reside. |
CustomTag
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
literal |
Não |
Adiciona o mesmo valor codificado a cada span. |
|
|
environment |
Não |
Inclui o valor de uma variável de ambiente em cada span. |
|
|
header |
Não |
Acrescenta o valor de um cabeçalho da requisição a cada span. |
MetricsOverrides
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
match |
Não |
Corresponde às métricas a substituir. Adicione e configure todas as métricas de cliente e servidor. |
|
|
disabled |
bool |
Não |
Indica se o relatório de métricas deve ser desativado. Se definido como true, o sistema desativa o relatório de métricas. |
|
tagOverrides |
map<string, MetricsOverrides> |
Não |
Especifica uma coleção de nomes e expressões de tags a substituir na métrica selecionada. |
MetricSelector
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
metric |
Não |
Identifica uma métrica. |
|
|
mode |
Não |
Defina o modo de geração de métricas. Valores válidos: CLIENT e SERVER. |
ProviderRef
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
name |
string |
Sim |
Especifica o nome do provedor de Telemetry no MeshConfig. |
Tracing.Literal
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
value |
string |
Sim |
Valor da tag a utilizar. |
Tracing.Environment
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
name |
string |
Sim |
Nome da variável de ambiente da qual extrair o valor da tag. |
|
defaultValue |
string |
Não |
Valor padrão utilizado caso a variável de ambiente não seja encontrada. |
Tracing.RequestHeader
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
name |
string |
Sim |
Nome do cabeçalho do qual extrair o valor da tag. |
|
defaultValue |
string |
Não |
Valor padrão utilizado caso o cabeçalho não seja encontrado. |
MetricsOverrides.TagOverride
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
operation |
Não |
Determina se uma tag deve ser atualizada, adicionada ou removida. |
|
|
value |
string |
Não |
Valor da tag, utilizado apenas quando |
MetricSelector.IstioMetric
|
Nome |
Descrição |
|
REQUEST_COUNT |
Contador de requisições HTTP, HTTP/2 e gRPC enviadas para ou recebidas de uma aplicação |
|
REQUEST_DURATION |
Duração das requisições HTTP, HTTP/2 e gRPC |
|
REQUEST_SIZE |
Tamanho do corpo das requisições HTTP, HTTP/2 e gRPC |
|
RESPONSE_SIZE |
Tamanho do corpo das respostas HTTP, HTTP/2 e gRPC |
|
TCP_OPENED_CONNECTIONS |
Contador de conexões TCP abertas durante o ciclo de vida de um workload |
|
TCP_CLOSED_CONNECTIONS |
Contador de conexões TCP fechadas durante o ciclo de vida de um workload |
|
TCP_SENT_BYTES |
Contador de bytes enviados durante uma resposta em uma conexão TCP |
|
TCP_RECEIVED_BYTES |
Contador de bytes recebidos durante uma resposta em uma conexão TCP |
|
GRPC_REQUEST_MESSAGES |
Contador de mensagens gRPC enviadas por um cliente |
|
GRPC_RESPONSE_MESSAGES |
Contador de mensagens gRPC enviadas por um servidor |
MetricsOverrides.TagOverride.Operation
|
Nome |
Descrição |
|
UPSERT |
Indica que a tag deve ser inserida ou atualizada. |
|
REMOVE |
Determina que a tag não deve ser incluída na métrica durante sua geração. |
WorkloadMode
|
Nome |
Descrição |
|
CLIENT |
Selecione este valor para cenários em que o workload é a origem do tráfego de rede. |
|
SERVER |
Utilize este valor para cenários em que o workload é o destino do tráfego de rede. |
Precauções
Em princípio, os campos não descritos neste tópico mantêm compatibilidade entre o ASM e a versão correspondente do Istio. Como o console do ASM não oferece suporte à edição desses campos, atualize-os diretamente no recurso personalizado (CR) Telemetry correspondente por meio do kubectl ou de outros métodos. Para obter mais informações sobre os campos da CRD Telemetry, consulte Telemetry.