Esta página se aplica à Apigee e à Apigee híbrida.
Confira a documentação da
Apigee Edge.
Nesta página, mostramos as etapas necessárias para configurar rastreamento distribuído para o ambiente de execução da Apigee. Se você não estiver familiarizado com o uso de sistemas de rastreamento distribuídos e quiser mais informações, consulte Noções básicas sobre rastreamento distribuído.
Para mais informações sobre os termos usados nesta página, consulte a visão geral do Cloud Trace.
Introdução
Os sistemas de rastreamento distribuído permitem rastrear uma solicitação em um sistema de software distribuído em vários aplicativos, serviços e bancos de dados, além de intermediários como proxies. Esses sistemas de rastreamento geram relatórios que mostram o tempo gasto por uma solicitação em cada etapa. Os relatórios de rastreamento também podem fornecer uma visão granular dos vários serviços chamados durante uma solicitação, permitindo uma compreensão mais profunda do que acontece em cada etapa do sistema de software.
A ferramenta de trace no Apigee Edge e a ferramenta de depuração no Apigee são úteis para resolver problemas e monitorar os proxies de API. No entanto, essas ferramentas não enviam dados para servidores de rastreamento distribuído, como o Cloud Trace, o Jaeger ou um coletor OpenTelemetry.
Para ver os dados do ambiente de execução da Apigee em um relatório de rastreamento distribuído, você precisa ativar explicitamente o rastreamento distribuído no ambiente de execução da Apigee. Depois que o rastreamento é ativado, o ambiente de execução pode enviar dados de trace para servidores de rastreamento distribuído e participar de um trace existente. Assim, é possível visualizar dados de dentro e fora do ecossistema da Apigee em um único local.
É possível ver as seguintes informações nos relatórios de rastreamento distribuído:
- Tempo de execução de um fluxo inteiro.
- Horário em que a solicitação é recebida.
- Horário em que a solicitação é enviada para o destino.
- Horário em que a resposta é recebida no destino.
- Tempo de execução de cada política em um fluxo.
- Chamadas de tempo de execução e fluxos de destino.
- Horário em que a resposta é enviada ao cliente.
No relatório de rastreamento distribuído, é possível ver os detalhes de execução dos fluxos como períodos. Um período refere-se ao tempo gasto por um fluxo em um trace. O tempo necessário para executar um fluxo é exibido como um agregado do tempo necessário para executar cada política no fluxo. É possível ver cada um dos seguintes fluxos como períodos individuais:
| Fase | Endpoint | Flow |
|---|---|---|
| Solicitação | Proxy | Pré-fluxo |
| Pós-fluxo | ||
| Destino | Pré-fluxo | |
| Pós-fluxo | ||
| Resposta | Proxy | Pré-fluxo |
| Pós-fluxo | ||
| Destino | Pré-fluxo | |
| Pós-fluxo |
Depois de ativar o rastreamento distribuído, o ambiente de execução da Apigee rastreará um conjunto de variáveis predefinidas por padrão. Saiba mais em Variáveis de trace padrão no relatório de rastreamento. Use a política TraceCapture para ampliar o comportamento padrão do ambiente de execução e rastrear outros fluxos, políticas ou variáveis personalizadas. Para saber mais, consulte a política TraceCapture.
Variáveis de trace padrão no relatório de rastreamento
Depois que o rastreamento distribuído for ativado, será possível visualizar o seguinte conjunto de variáveis predefinidas no relatório de rastreamento. As variáveis são visíveis nos seguintes períodos:
RESP_SENT: esse período é adicionado depois que uma resposta é recebida do servidor de destino. Ele carrega os atributos do lado de destino listados em Variáveis no períodoRESP_SENT.PROXY_POST_RESP_SENT: Esse período é adicionado após o envio da resposta do proxy ao cliente. Ele transmite os atributos do lado do proxy listados em Variáveis no intervaloPROXY_POST_RESP_SENT.EVENT_FLOW_RESPeEVENT_FLOW_END: esses intervalos são adicionados para proxies de API que processam respostas de streaming de eventos enviados pelo servidor (SSE).EVENT_FLOW_RESPmarca o fluxo de resposta do SSE (executado uma vez por mensagem de resposta).EVENT_FLOW_ENDmarca o fim do fluxo de SSE. Esses intervalos não têm atributos padrão. Eles aparecem no rastreamento como intervalos nomeados para tornar as fases de SSE do proxy visíveis no relatório de rastreamento.
Atributos de período padrão (OpenTelemetry)
Quando você usa o OpenTelemetry, cada período emitido pelo ambiente de execução do Apigee inclui os seguintes atributos padrão, além das variáveis específicas do período descritas nas seções a seguir:
| Atributo | Descrição |
|---|---|
apigee.proxy.name |
Identifica o proxy de API pai a que o intervalo está associado. |
cloud.provider |
O provedor de nuvem que hospeda o ambiente de execução do Apigee. Sempre
gcp. |
cloud.resource.id |
Os detalhes da organização e do ambiente associados ao período. |
gcp.project_id |
O ID do projeto Google Cloud associado ao intervalo. |
Variáveis no período RESP_SENT
As variáveis a seguir ficam visíveis no período RESP_SENT:
| Variável | Atributo | Descrição |
|---|---|---|
REQUEST_URL |
request.url |
URL completo da solicitação do cliente recebida pelo proxy. |
REQUEST_VERB |
request.verb |
Verbo HTTP da solicitação do cliente recebida (por exemplo, GET ou POST). |
RESPONSE_STATUS_CODE |
response.status.code |
Código de status da resposta retornado pelo servidor de destino. |
ROUTE_NAME |
route.name |
Nome da regra de rota que selecionou o destino para esta solicitação. |
ROUTE_TARGET |
route.target |
Nome do endpoint de destino selecionado pela regra de rota. |
TARGET_BASE_PATH |
target.basepath |
Parte do caminho base do URL de destino. |
TARGET_HOST |
target.host |
Nome do host do servidor de destino contatado pelo proxy. |
TARGET_IP |
target.ip |
Endereço IP resolvido do servidor de destino. |
TARGET_NAME |
target.name |
Nome do endpoint de destino definido no proxy de API. |
TARGET_PORT |
target.port |
Porta TCP usada para se conectar ao servidor de destino. |
TARGET_RECEIVED_END_TIMESTAMP |
target.received.end.timestamp |
Carimbo de data/hora (milissegundos de época) em que o proxy terminou de receber a resposta do servidor de destino. |
TARGET_RECEIVED_START_TIMESTAMP |
target.received.start.timestamp |
Carimbo de data/hora (milissegundos de época) em que o proxy começou a receber a resposta do servidor de destino. |
TARGET_SENT_END_TIMESTAMP |
target.sent.end.timestamp |
Carimbo de data/hora (milissegundos da época) em que o proxy terminou de enviar a solicitação ao servidor de destino. |
TARGET_SENT_START_TIMESTAMP |
target.sent.start.timestamp |
Carimbo de data/hora (milissegundos da época) em que o proxy começou a enviar a solicitação ao servidor de destino. |
TARGET_SSL_ENABLED |
target.ssl.enabled |
Booleano que indica se a conexão com o servidor de destino usou TLS. |
TARGET_URL |
target.url |
URL completo do servidor de destino contatado pelo proxy. |
Variáveis no período
PROXY_POST_RESP_SENT
As variáveis a seguir ficam visíveis no período PROXY_POST_RESP_SENT:
| Variável | Atributo | Descrição |
|---|---|---|
API_PROXY_REVISION |
apiproxy.revision |
Número da revisão do proxy de API que processou a solicitação. |
APIPROXY_NAME |
apiproxy.name |
Nome do proxy de API que processou a solicitação. |
CLIENT_RECEIVED_END_TIMESTAMP |
client.received.end.timestamp |
Carimbo de data/hora (milissegundos da época) em que o proxy terminou de receber a solicitação do cliente. |
CLIENT_RECEIVED_START_TIMESTAMP |
client.received.start.timestamp |
Carimbo de data/hora (milissegundos de época) em que o proxy começou a receber a solicitação do cliente. |
CLIENT_SENT_END_TIMESTAMP |
client.sent.end.timestamp |
Carimbo de data/hora (milissegundos de época) em que o proxy terminou de enviar a resposta ao cliente. |
CLIENT_SENT_START_TIMESTAMP |
client.sent.start.timestamp |
Carimbo de data/hora (milissegundos de época) em que o proxy começou a enviar a resposta ao cliente. |
ENVIRONMENT_NAME |
environment.name |
Nome do ambiente da Apigee em que o proxy foi executado. |
FAULT_SOURCE |
message.header.X-Apigee-fault-source |
Origem da falha quando ocorre um erro durante a execução do proxy. Preenchido apenas em fluxos de erro. |
IS_ERROR |
is.error |
Booleano que indica se a execução do proxy terminou em um fluxo de erros. |
MESSAGE_ID |
message.id |
Identificador exclusivo atribuído pela Apigee à solicitação, útil para correlacionar registros e intervalos de rastreamento. |
MESSAGE_STATUS_CODE |
message.status.code |
Código de status da resposta final, incluindo chamadas sem destinos e fluxos de erro. |
PROXY_BASE_PATH |
proxy.basepath |
Caminho base do proxy de API que correspondeu à solicitação recebida. |
PROXY_CLIENT_IP |
proxy.client.ip |
Endereço IP do cliente que enviou a solicitação ao proxy. |
PROXY_NAME |
proxy.name |
Nome do endpoint de proxy no proxy de API que processou a solicitação. |
PROXY_PATH_SUFFIX |
proxy.pathsuffix |
Parte do caminho do URL da solicitação que segue o caminho de base do proxy. |
PROXY_URL |
proxy.url |
URL completo do endpoint de proxy recebido do cliente. |
Sistemas de rastreamento distribuído com suporte
É possível configurar o ambiente de execução da Apigee para enviar dados de rastreamento aos seguintes sistemas de rastreamento distribuído:
| Sistemas de rastreamento distribuído | Descrição |
|---|---|
| Cloud Trace com OpenTelemetry | Ideal para usuários que querem uma configuração simples com o OpenTelemetry e cujo back-end de rastreamento principal ou único é o Cloud Trace. Para enviar dados de traces ao Cloud Trace com o OpenTelemetry, faça o seguinte: |
| Coletor do OpenTelemetry | Gerencie seu próprio OpenTelemetry Collector para controlar a coleta e o processamento de dados de rastreamento. Isso é ideal se você precisar enviar dados para vários sistemas (incluindo os que não são do Google) ou personalizar como os dados são tratados, agrupados ou aprimorados. Para enviar dados de rastreamento a um coletor do OpenTelemetry, faça o seguinte:
Consulte Considerações ao usar um coletor do OpenTelemetry para saber mais sobre os requisitos de capacidade de rede, TLS, transporte e custo que você precisa atender antes de ativar essa opção. |
| Cloud Trace com OpenCensus | Para enviar dados de traces ao Cloud Trace com o OpenCensus, faça o seguinte: |
| Jaeger com OpenCensus | Para enviar dados de rastreamento ao Jaeger com o OpenCensus, ative o rastreamento distribuído para o Jaeger. |
Variáveis de ambiente
Os procedimentos nesta página usam as seguintes variáveis de ambiente. Recomendamos que você defina essas variáveis no seu ambiente antes de começar.
TOKEN="Authorization: Bearer $(gcloud auth application-default print-access-token)"ENV_NAME=YOUR_ENVIRONMENT_NAMEPROJECT_ID=YOUR_GOOGLE_CLOUD_PROJECT_ID
Em que:
TOKENdefine o cabeçalho Authentication com um token do portador. Você usará esse cabeçalho ao chamar as APIs da Apigee. Saiba mais na página de referência do comando print-access-token.ENV_NAMEé o nome de um ambiente na organização.PROJECT_IDé o ID do projeto do Google Cloud .
Configurar o ambiente de execução da Apigee para OpenTelemetry ou OpenCensus
O ambiente de execução da Apigee é compatível com dois padrões de rastreamento: OpenTelemetry (recomendado para novas implantações) e OpenCensus. Escolha o padrão de rastreamento adequado para seu ambiente e siga as etapas de configuração correspondentes na guia abaixo.
Para o OpenTelemetry, o ambiente de execução da Apigee reconhece o formato de cabeçalho W3C, incluindo os cabeçalhos traceparent e tracestate. Ele ignora os cabeçalhos B3, mesmo que estejam presentes na solicitação.
OpenTelemetry (recomendado)
Configurar ambientes de execução da Apigee para o Cloud Trace (OpenTelemetry)
Tanto o ambiente de execução do Apigee quanto o ambiente de execução híbrido da Apigee são compatíveis com o rastreamento distribuído usando o Cloud Trace. Se você estiver usando um OpenTelemetry Collector gerenciado pelo cliente, pule esta seção e acesse Como ativar o rastreamento distribuído para um OpenTelemetry Collector.
Configurar o ambiente de execução do ApigeeX para o Cloud Trace
Para configurar o ambiente de execução do Apigee para o Cloud Trace, seu projeto Google Cloud precisa ter as seguintes APIs ativadas:
- API Cloud Trace (trace.googleapis.com)
- API Telemetry (telemetry.googleapis.com)
- API Service Usage (serviceusage.googleapis.com)
Ao ativar essas APIs, seu projeto do Google Cloud pode receber dados de rastreamento do OpenTelemetry de fontes autenticadas.
Para ativar as APIs, faça o seguinte:
- No console do Google Cloud , acesse APIs e serviços:
- Clique em Ativar APIs e serviços.
- Ative a API Cloud Trace, a API Telemetry e a API Service Usage.
Além de ativar as APIs, é necessário conceder os seguintes papéis à conta do agente de serviço:
roles/telemetry.tracesWriterroles/serviceusage.serviceUsageConsumer
A conta de serviço específica depende do seu ambiente da Apigee:
- Apigee (não híbrido): conceda os papéis ao agente de serviço da Apigee. A conta do agente de serviço geralmente tem o formato:
service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com. - Apigee híbrida:conceda os papéis à conta de serviço do ambiente de execução conforme descrito em Configurar o ambiente de execução híbrido da Apigee para o Cloud Trace.
Consulte Conceder um papel do IAM usando o console do Google Cloud .
Configurar o ambiente de execução híbrido da Apigee para o Cloud Trace
Para configurar o ambiente de execução híbrido da Apigee para o Cloud Trace, ative as APIs descritas em Configurar o ambiente de execução da Apigee para o Cloud Trace.
Além de ativar as APIs, você precisa adicionar a conta de serviço iam.gserviceaccount.com para usar o Cloud Trace com o ambiente de execução híbrido. Para adicionar a conta de serviço com as funções e chaves necessárias, execute as seguintes etapas:
- Crie uma nova conta de serviço:
gcloud iam service-accounts create \ apigee-runtime --display-name "Service Account Apigee hybrid runtime" \ --project PROJECT_ID - Adicione vinculações de política do IAM à conta de serviço para conceder a ela os papéis necessários:
gcloud projects add-iam-policy-binding \ PROJECT_ID --member "serviceAccount:apigee-runtime@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/telemetry.tracesWriter --project PROJECT_IDgcloud projects add-iam-policy-binding \ PROJECT_ID --member "serviceAccount:apigee-runtime@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/serviceusage.serviceUsageConsumer --project PROJECT_ID - Crie uma chave de conta de serviço:
gcloud iam service-accounts keys \ create ~/apigee-runtime.json --iam-account apigee-runtime@PROJECT_ID.iam.gserviceaccount.com - Adicione a conta de serviço ao arquivo
overrides.yaml.envs: - name: ENV_NAME serviceAccountPaths: runtime: apigee-runtime.json synchronizer: apigee-sync.json udca: apigee-udca.json - Aplique as mudanças ao ambiente de execução usando
Helm:
helm upgrade ENV_NAME apigee-env/ \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ --atomic \ -f overrides.yaml
Ativar o rastreamento distribuído (OpenTelemetry)
Antes de ativar o rastreamento distribuído, crie as variáveis de ambiente necessárias.
Ativar o rastreamento distribuído para o Cloud Trace com o OpenTelemetry
O exemplo a seguir mostra como ativar o rastreamento distribuído para o Cloud Trace com o OpenTelemetry:
- Execute esta chamada de API da Apigee:
curl -H "$TOKEN" \ -H "Content-Type: application/json" \ https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENV_NAME/traceConfig \ -X PATCH \ -d '{ "exporter":"OPEN_TELEMETRY_CLOUD_TRACE", "endpoint": "'"$PROJECT_ID"'", "samplingConfig": {"sampler": "PROBABILITY","samplingRate": 0.05}, "traceProtocol": "OTLP" }'O corpo da solicitação de exemplo consiste nos seguintes elementos:
- Para oferecer suporte ao Cloud Trace com o OpenTelemetry, o parâmetro
exporteré definido comoOPEN_TELEMETRY_CLOUD_TRACEe o parâmetrotraceProtocolé definido comoOTLP. - O
samplingRateé definido como 0,05. Isso significa que aproximadamente 5% das chamadas de API são enviadas para o rastreamento distribuído. No OpenTelemetry, é possível especificar uma taxa de amostragem de até1.0(100%). Para mais informações, consulte Considerações sobre desempenho. - O parâmetro
endpointé definido como o Google Cloud ID do projeto que vai receber os dados de rastreamento (uma string de ID do projeto simples, não um URL).
Uma resposta bem-sucedida é semelhante a esta:
{ "exporter": "OPEN_TELEMETRY_CLOUD_TRACE", "endpoint": "my-gcp-project-id", "samplingConfig": { "sampler": "PROBABILITY", "samplingRate": 0.05 }, "traceProtocol": "OTLP" } - Para oferecer suporte ao Cloud Trace com o OpenTelemetry, o parâmetro
Ativar o rastreamento distribuído para um coletor do OpenTelemetry
Para ativar o rastreamento distribuído em um coletor OpenTelemetry gerenciado pelo cliente, execute esta chamada de API da Apigee:
curl -H "$TOKEN" \
-H "Content-Type: application/json" \
https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENV_NAME/traceConfig \
-X PATCH \
-d '{
"exporter":"OPEN_TELEMETRY_COLLECTOR",
"endpoint": "https://my-otel-collector.example.com:4318/v1/traces",
"samplingConfig": {"sampler": "PROBABILITY","samplingRate": 0.05},
"traceProtocol": "OTLP"
}'O corpo da solicitação de exemplo consiste nos seguintes elementos:
- Para oferecer suporte a um OpenTelemetry Collector gerenciado pelo cliente, o parâmetro
exporteré definido comoOPEN_TELEMETRY_COLLECTORe o parâmetrotraceProtocolé definido comoOTLP. - O parâmetro
endpointé definido como o URL HTTPS completo do endpoint de ingestão OTLP do coletor do OpenTelemetry (por exemplo,https://my-otel-collector.example.com:4318/v1/traces). Ao contrário do exportador do Cloud Trace, que usa um ID do projeto Google Cloud simples, o exportadorOPEN_TELEMETRY_COLLECTORexige um URL completo que inclua esquema, host, porta e caminho. - O
samplingRateestá definido como 0,05. Isso significa que aproximadamente 5% das chamadas de API são enviadas para o rastreamento distribuído. Veja mais informações em Considerações sobre desempenho.
Uma resposta bem-sucedida é semelhante a esta:
{
"exporter": "OPEN_TELEMETRY_COLLECTOR",
"endpoint": "https://my-otel-collector.example.com:4318/v1/traces",
"samplingConfig": {
"sampler": "PROBABILITY",
"samplingRate": 0.05
},
"traceProtocol": "OTLP"
}Considerações ao usar um coletor do OpenTelemetry
Antes de ativar o rastreamento distribuído em um coletor OpenTelemetry gerenciado pelo cliente, revise os requisitos a seguir.
Acessibilidade da rede
- Verifique se o Apigee pode acessar o OpenTelemetry Collector.
- Para acessar um coletor que não está exposto na Internet pública, use o Private Service Connect (PSC).
- Para a Apigee híbrida, se um proxy de encaminhamento estiver configurado, os dados de rastreamento passarão por ele até o OpenTelemetry Collector e seu back-end.
Protocolo de transporte
Somente o transporte OTLP/HTTP é compatível com coletores do OpenTelemetry
(porta 4318 e caminho /v1/traces pela convenção OTLP).
OTLP/gRPC (porta 4317) não é compatível.
TLS e mTLS
- Validação do certificado do servidor TLS:quando o endpoint do coletor
usa
https://, o ambiente de execução do Apigee valida o certificado do servidor em relação ao truststore padrão do JDK, que contém o conjunto padrão de autoridades de certificação publicamente confiáveis. Portanto, seu coletor precisa apresentar um certificado emitido por uma CA publicamente confiável. Certificados autoassinados e emitidos por uma CA particular não são aceitos no Apigee. No Apigee híbrido, é possível adicionar uma CA particular ao truststore do processador de mensagens usando a configuração da JVM. - O TLS mútuo (mTLS) não é compatível:o Apigee não apresenta um certificado de cliente ao coletor. Se o coletor exigir autenticação de certificado de cliente, coloque um proxy de encerramento de TLS na frente dele que não exija mTLS.
Restrições de URL do endpoint
O valor endpoint do coletor é validado no lado do servidor no momento da configuração. Para evitar a sondagem de falsificação de solicitação do lado do servidor (SSRF) da infraestrutura interna Google Cloud , as solicitações com qualquer uma das seguintes formas de endpoint são rejeitadas com um erro FailedPrecondition:
- Esquemas diferentes de
httpouhttps. - URLs que incorporam credenciais (por exemplo,
https://user:password@host:4318/v1/traces). As credenciais não podem ser fornecidas no URL do endpoint. - Nomes de host
localhost,metadataoumetadata.google.internal. - Literais de IP que resolvem para loopback (
127.0.0.0/8,::1), link-local (169.254.0.0/16, incluindo o endereço de metadados da nuvem169.254.169.254), não especificados (0.0.0.0,::) ou intervalos de rede privada do IETF (10.0.0.0/8,172.16.0.0/12,192.168.0.0/16). - Codificações numéricas de IPv4 que são decodificadas para qualquer um dos endereços bloqueados acima. Por exemplo,
http://2130706433/,http://0x7f000001/ehttp://0177.0.0.1/são decodificados para127.0.0.1e são rejeitados.
Custo
Você é responsável por todos os custos relacionados ao OpenTelemetry Collector.
OpenCensus
Configurar ambientes de execução da Apigee para o Cloud Trace (OpenCensus)
Tanto o ambiente de execução do Apigee quanto o ambiente de execução híbrido da Apigee são compatíveis com o rastreamento distribuído usando o Cloud Trace com o OpenCensus. Se você estiver usando o Jaeger, pule esta seção e acesse Como ativar o rastreamento distribuído para o Jaeger com o OpenCensus.
Configurar o ambiente de execução da Apigee para o Cloud Trace
Para configurar o ambiente de execução do Apigee para o Cloud Trace, seu projeto Google Cloud precisa ter a API Cloud Trace ativada.
Para ativar a API, faça o seguinte:
- No console do Google Cloud , acesse APIs e serviços:
- Clique em Ativar APIs e serviços.
- Ative a API Cloud Trace.
Configurar o ambiente de execução híbrido da Apigee para o Cloud Trace
Para configurar o ambiente de execução híbrido da Apigee para o Cloud Trace, ative a API Cloud Trace.
Além de ativar a API, você precisa adicionar a conta de serviço iam.gserviceaccount.com para usar o Cloud Trace com o ambiente de execução híbrido. Para adicionar a conta de serviço com o papel e as chaves roles/cloudtrace.agent necessários, siga estas etapas:
- Crie uma nova conta de serviço:
gcloud iam service-accounts create \ apigee-runtime --display-name "Service Account Apigee hybrid runtime" \ --project PROJECT_ID - Adicione uma vinculação de política do IAM à conta de serviço:
gcloud projects add-iam-policy-binding \ PROJECT_ID --member "serviceAccount:apigee-runtime@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/cloudtrace.agent --project PROJECT_ID - Crie uma chave de conta de serviço e atualize seu
overrides.yamlconforme descrito nas etapas a seguir. - Crie uma chave de conta de serviço:
gcloud iam service-accounts keys \ create ~/apigee-runtime.json --iam-account apigee-runtime@PROJECT_ID.iam.gserviceaccount.com - Adicione a conta de serviço ao arquivo
overrides.yaml.envs: - name: ENV_NAME serviceAccountPaths: runtime: apigee-runtime.json synchronizer: apigee-sync.json udca: apigee-udca.json - Aplique as mudanças ao ambiente de execução usando
Helm:
helm upgrade ENV_NAME apigee-env/ \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ --atomic \ -f overrides.yaml
Ativar o rastreamento distribuído (OpenCensus)
Antes de ativar o rastreamento distribuído, crie as variáveis de ambiente necessárias.
Ativar o rastreamento distribuído para o Cloud Trace com o OpenCensus
O exemplo a seguir mostra como ativar o rastreamento distribuído para o Cloud Trace com o OpenCensus:
- Execute esta chamada de API da Apigee:
curl -H "$TOKEN" \ -H "Content-Type: application/json" \ https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENV_NAME/traceConfig \ -X PATCH \ -d '{ "exporter":"CLOUD_TRACE", "endpoint": "'"$PROJECT_ID"'", "samplingConfig": {"sampler": "PROBABILITY","samplingRate": 0.1} }'O corpo da solicitação de exemplo consiste nos seguintes elementos:
- Para oferecer suporte ao Cloud Trace, o parâmetro
exporteré definido comoCLOUD_TRACE. O parâmetrotraceProtocol, que não está especificado, temOpenCensuscomo padrão. - O parâmetro
endpointestá definido como o projeto Google Cloud para onde você quer enviar o trace. - O
samplingRateestá definido como 0.1. Isso significa que aproximadamente 10% das chamadas de API são enviadas para o rastreamento distribuído. Para o OpenCensus, a taxa de amostragem máxima configurável é0.5.
Uma resposta bem-sucedida é semelhante a esta:
{ "exporter": "CLOUD_TRACE", "endpoint": "staging", "samplingConfig": { "sampler": "PROBABILITY", "samplingRate": 0.1 } } - Para oferecer suporte ao Cloud Trace, o parâmetro
Ativar o rastreamento distribuído para o Jaeger com o OpenCensus
O exemplo a seguir mostra como ativar o rastreamento distribuído para o Jaeger:
curl -s -H "$TOKEN" \
'https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENV_NAME/traceConfig' \
-X PATCH \
-H "content-type:application/json" -d '{
"samplingConfig": {
"samplingRate": 0.4,
"sampler": "PROBABILITY"},
"endpoint": "http://DOMAIN:9411/api/v2/spans",
"exporter": "JAEGER"
}'Neste exemplo:
- Para oferecer suporte ao Jaeger, o parâmetro
exporteré definido comoJAEGER. O parâmetrotraceProtocol, que não está especificado, temOpenCensuscomo padrão. - O parâmetro
endpointé definido como o local em que o Jaeger está instalado e configurado. - O
samplingRateestá definido como 0.4. Isso significa que aproximadamente 40% das chamadas de API são enviadas para o rastreamento distribuído.
É esperado um impacto no desempenho quando você ativa o rastreamento distribuído em um ambiente de execução da Apigee. O impacto pode resultar em aumento no uso da memória, nos requisitos de CPU e na latência.
A magnitude do impacto depende em parte da complexidade do proxy de API (por exemplo, o número de políticas) e da taxa de amostragem probabilística (definida como samplingRate). Quanto maior a taxa de amostragem, maior o impacto no desempenho.
Para mais informações, consulte Considerações sobre desempenho.
Visualizar a configuração de rastreamento distribuído
Para visualizar a configuração de rastreamento distribuído atual no ambiente de execução, faça login no ambiente de execução e execute o seguinte comando:
curl -H "$TOKEN" \
-H "Content-Type: application/json" \
https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENV_NAME/traceConfigAo executar o comando, você vai ver uma resposta semelhante a esta:
{
"exporter": "CLOUD_TRACE",
"endpoint": "my-gcp-project-id",
"samplingConfig": {
"sampler": "PROBABILITY",
"samplingRate": 0.1
},
"revisionId": "7",
"updateTime": "2026-06-08T14:25:13.512000Z"
}O revisionId aumenta com cada atualização bem-sucedida, e o updateTime reflete o carimbo de data/hora do servidor da mudança mais recente. Use esses dois campos para confirmar se o plano de controle aceitou uma
atualização de configuração. Ambos também são retornados pela resposta
PATCH .../traceConfig.
Atualizar a configuração de rastreamento distribuído
O comando a seguir mostra como atualizar a configuração de rastreamento distribuído atual para o Cloud Trace:
curl -H "$TOKEN" \
-H "Content-Type: application/json" \
https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENV_NAME/traceConfig \
-X PATCH \
-d '{
"samplingConfig": {"sampler": "PROBABILITY","samplingRate": 0.6}
}'Ao executar o comando, você vai ver uma resposta semelhante a esta:
{
"samplingConfig": {
"sampler": "PROBABILITY",
"samplingRate": 0.6
},
"traceProtocol": "OTLP"
}0.6.
Desativar a configuração de rastreamento distribuído
O exemplo a seguir mostra como desativar o rastreamento distribuído configurado para o Cloud Trace:
curl -H "$TOKEN" \
-H "Content-Type: application/json" \
https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENV_NAME/traceConfig \
-X PATCH \
-d '{
"samplingConfig": {"sampler": "OFF"}
}'Ao executar o comando, você vai ver uma resposta semelhante a esta:
{
"samplingConfig": {
"sampler": "OFF"
},
"traceProtocol": "OTLP"
}Modificar as configurações de trace para proxies de API
Quando você ativa o rastreamento distribuído no ambiente de execução da Apigee, todos os proxies de API no ambiente de execução usam a mesma configuração de rastreamento. No entanto, é possível modificar a configuração de rastreamento distribuído para um proxy de API ou um grupo de proxies de API. Isso oferece um controle mais granular sobre a configuração de rastreamento.
O exemplo a seguir modifica a configuração de rastreamento distribuído para o
proxy de API hello-world:
curl -s -H "$TOKEN" \
'https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENV_NAME/traceConfig/overrides' \
-X POST \
-H "content-type:application/json" \
-d '{"apiProxy": "hello-world","samplingConfig": {"sampler": "PROBABILITY","samplingRate": 0.1}}'É possível substituir a configuração para resolver problemas específicos de um proxy de API sem precisar alterar a configuração de todos os proxies de API.
Atualizar substituições de configurações de trace
Para atualizar uma substituição da configuração de rastreamento de um proxy de API ou grupo de proxies de API, siga estas etapas:
- Use o comando a seguir para recuperar as substituições existentes da configuração de rastreamento:
curl -s -H "$TOKEN" \ 'https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENV_NAME/traceConfig/overrides' \ -X GETEsse comando retorna algo semelhante à seguinte resposta, que contém um campo "name" que identifica o proxy ou os proxies regidos pela modificação:
{ "traceConfigOverrides": [ { "name": "dc8437ea-4faa-4b57-a14f-4b8d3a15fec1", "apiProxy": "proxy1", "samplingConfig": { "sampler": "PROBABILITY", "samplingRate": 0.25 } } ] } - Para atualizar o proxy, use o valor do campo "name" para enviar uma solicitação POST à configuração de substituição para o proxy com os valores de campo atualizados. Por exemplo:
curl -s -H "$TOKEN" \ 'https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENV_NAME/traceConfig/overrides/dc8437ea-4faa-4b57-a14f-4b8d3a15fec1' \ -X POST \ -H "content-type:application/json" \ -d '{"apiProxy": "proxy1","samplingConfig": {"sampler": "PROBABILITY","samplingRate": 0.05}}'
Excluir substituições de configuração de trace
Para excluir uma substituição da configuração de rastreamento de um proxy de API ou grupo de proxies de API, siga estas etapas:
- Use o comando a seguir para recuperar as substituições existentes da configuração de rastreamento:
curl -s -H "$TOKEN" \ 'https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENV_NAME/traceConfig/overrides' \ -X GETEsse comando retorna algo semelhante à seguinte resposta, que contém um campo "name" que identifica o proxy ou os proxies regidos pela modificação:
{ "traceConfigOverrides": [ { "name": "dc8437ea-4faa-4b57-a14f-4b8d3a15fec1", "apiProxy": "proxy1", "samplingConfig": { "sampler": "PROBABILITY", "samplingRate": 0.25 } } ] } - Para excluir o proxy, use o valor do campo "name" para enviar uma solicitação DELETE para a configuração de substituição desse proxy com os valores de campo atualizados. Por exemplo:
curl -s -H "$TOKEN" \ 'https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENV_NAME/traceConfig/overrides/dc8437ea-4faa-4b57-a14f-4b8d3a15fec1' \ -X DELETE \
Considerações sobre desempenho
É esperado um impacto no desempenho quando você ativa o rastreamento distribuído em um ambiente de execução da Apigee. O impacto pode resultar em aumento no uso da memória, nos requisitos de CPU e na latência. A magnitude do impacto depende da complexidade do proxy de API (por exemplo, o número de políticas), da taxa de amostragem probabilística (definida como samplingRate) e, principalmente, do volume de tráfego rastreado em relação à capacidade de exportação de períodos por processador de mensagens (MP).
O MP do Apigee tem uma taxa de exportação de períodos finita. Com a configuração padrão, um único MP pode exportar de forma sustentável aproximadamente 820 períodos por segundo. Uma execução típica de proxy de API emite aproximadamente 10 períodos (pré-fluxo do proxy, fluxo de destino, pós-fluxos, políticas anexadas). Assim, um único MP pode rastrear de forma sustentável aproximadamente 82 solicitações por segundo com amostragem de 100% . O escalonamento da contagem de réplicas do MP aumenta o limite agregado de maneira linear.
A tabela a seguir resume o impacto esperado em samplingRate=1.0 (100% de probabilidade) em dois regimes de tráfego:
| Regime de tráfego (por MP) | Impacto esperado em samplingRate=1.0 |
Ação recomendada |
|---|---|---|
| Trânsito tranquilo (menos de aproximadamente 82 solicitações rastreadas por segundo por MP) | A capacidade de processamento cai em aproximadamente 1 a 2%, a latência média aumenta em cerca de 1% e a latência p99 aumenta em aproximadamente 15 a 20%. Negligenciável na prática. | Pode ser ativada em 100%. |
| Tráfego intenso (significativamente acima de aproximadamente 82 solicitações rastreadas por segundo por MP) | A capacidade de processamento cai em aproximadamente 14%, a latência média aumenta em aproximadamente 24%, a latência p75 aumenta em aproximadamente 52% e a taxa de erros aumenta em aproximadamente 1 ponto percentual. | Diminua samplingRate (por exemplo, para 0.1 ou 0.05) ou escalonar verticalmente a contagem de réplicas do MP para que cada MP atenda a menos solicitações rastreadas por segundo. |
Para ambientes com tráfego alto e requisitos de baixa latência, a taxa de amostragem probabilística recomendada é menor ou igual a 10%. Se você quiser usar o rastreamento distribuído para resolver problemas, aumente a amostragem probabilística (samplingRate) apenas para proxies de API específicos usando substituições por proxy.
Detectar intervalos descartados
Se o tráfego rastreado exceder a capacidade de processamento de intervalos do MP do Apigee ou se o destino não puder aceitar o tráfego, os intervalos serão descartados antes de chegarem ao back-end de rastreamento. Para detectar intervalos descartados, use os seguintes indicadores específicos do back-end:
- Cloud Trace (
OPEN_TELEMETRY_CLOUD_TRACEouCLOUD_TRACE): revise as cotas e os limites do Cloud Trace para o projeto de destino. Erros de cota persistentes resultam em períodos descartados. Monitore o uso da cota da API Cloud Trace no console Google Cloud . - OpenTelemetry Collector gerenciado pelo cliente: monitore as métricas padrão do receptor do seu coletor (por exemplo,
otelcol_receiver_refused_spanseotelcol_exporter_send_failed_spans) para detectar intervalos rejeitados ou que não são encaminhados para o back-end downstream.
Resolver problemas de rastreamento distribuído
Para resolver problemas de rastreamento distribuído, faça o seguinte:
- Verifique a configuração de rastreamento distribuído usando a API
traceConfigpara garantir que ela atenda às suas necessidades. - Confirme se a conta de serviço tem as permissões (papéis) corretas do IAM no projeto de destino.
- Se você estiver usando o Cloud Trace com o OpenTelemetry, verifique os períodos de entrada e os erros de ativação ou cota da API.
- Se você estiver usando um coletor do OpenTelemetry gerenciado pelo cliente, faça o seguinte:
- Confirme se o Apigee pode acessar o endpoint do coletor. Verifique a configuração do Private Service Connect (PSC), se usado.
- Verifique os registros do OpenTelemetry Collector para problemas de dados ou conexão.
- Verifique se o certificado TLS do coletor é válido.
- Examine os registros do ambiente de execução da Apigee em busca de erros de exportação de rastreamento.