Todos os produtos
Search
Central de documentação

Cloud Monitor:Extraia parâmetros de negócio para sua aplicação Python

Última atualização: Jul 31, 2026

O Application Real-Time Monitoring Service (ARMS) permite extrair parâmetros de negócio de forma não intrusiva a partir dos rastreamentos de chamadas de aplicações Python. Configure regras de extração no console do ARMS para gravar parâmetros específicos de requisições e respostas HTTP nos Span Attributes, sem modificar o código da aplicação. Os atributos extraídos ajudam a localizar causas raiz, rastrear informações de requisição e acionar marcações de erro personalizadas em Spans correspondentes.

Pré-requisitos

  • O agente Python do ARMS está instalado na aplicação Python.

  • A versão do agente Python é 3.1.0 ou superior.

Escopo suportado

A tabela a seguir descreve os tipos e as fontes de extração de parâmetros compatíveis com a versão Python.

Tipo de extração de parâmetro

Fonte do parâmetro

Frameworks compatíveis

Descrição

Requisição de servidor HTTP

Header, Query Parameter, Cookie, Body

Flask, Django, FastAPI

O body deve estar no formato JSON. Para mais informações, consulte FAQs.

Resposta de servidor HTTP

Header, Body, Cookie

Flask, Django, FastAPI

O body deve estar no formato JSON. A fonte Cookie lê o cookie do lado da requisição.

Requisição de cliente HTTP

Header, Query Parameter

requests, httpx, aiohttp, urllib3

O cliente não oferece suporte às fontes Body ou Cookie.

Resposta de cliente HTTP

Header

requests, httpx, aiohttp, urllib3

-

Caso a source de parâmetro necessária não esteja no escopo suportado, adicione instrumentação personalizada usando o SDK do OpenTelemetry para gravar parâmetros de negócio como Attributes em um Span.

Acesse a página de configuração

  1. Faça login no console do ARMS.

  2. No painel de navegação à esquerda, escolha Application Monitoring > Application List. Na barra de menu superior, selecione a região de destino e clique em nome da aplicação Python desejada.

  3. No painel de navegação à esquerda, clique em Configuration. Em seguida, clique em aba Parameter Extraction Rule.

A página de configuração contém duas seções:

  • Parameter Extraction Rule — Crie, visualize e modifique regras de extração de parâmetros de negócio. O agente do ARMS detecta dinamicamente alterações nas regras e extrai parâmetros de negócio com base em todas as regras ativadas.

  • Custom Error Settings — Configure regras de erro personalizadas para corresponder aos valores dos parâmetros de negócio extraídos. Se houver correspondência, o sistema marcará o Span correspondente como erro.

Crie uma regra de extração

Na seção Parameter Extraction Rule, execute as etapas a seguir:

  1. Clique em Create Rule.

  2. Insira um nome para a regra e um nome de Attribute.

  3. Selecione um tipo de extração de parâmetro, configure a interface ativa e especifique o escopo da interface para a regra.

  4. Na seção de regra de extração de parâmetro, adicione fontes de parâmetro e configure as etapas de processamento. É possível configurar múltiplas fontes e etapas de processamento. Se várias fontes puderem extrair o parâmetro, a fonte listada primeiro terá maior prioridade.

  5. Defina se deseja ativar a regra e clique em Save.

Importante

Ao criar uma regra de extração pela primeira vez, reinicie a aplicação para que o recurso entre em vigor. Adições ou modificações subsequentes de regras não exigem reinicialização. O agente entrega as regras dinamicamente por meio da atualização de configuração dinâmica (hot configuration update), e elas entram em vigor dentro de 1 a 2 minutos.

Após a criação e ativação de uma regra, ela é entregue ao agente Python do ARMS em tempo real. Os parâmetros de negócio extraídos são registrados nos Attributes do Span de rastreamento de chamada correspondente. Você pode filtrar e consultar os parâmetros na página de análise de rastreamento. Os nomes de Attribute possuem o prefixo biz. por padrão. Nomes de Attribute duplicados não são permitidos.

Configuração da regra

Parâmetro

Descrição

Nome da regra

Um nome legível para a regra.

Nome do Attribute

O nome do Span Attribute para o valor extraído. O nome começa com biz. por padrão, seguido por múltiplas palavras. Cada palavra pode conter apenas letras, dígitos, hifens (-) e sublinhados (_). As palavras devem ser separadas por pontos (.). São permitidas no máximo 10 palavras.

Tipo de extração de parâmetro

O tipo de parâmetro a extrair (requisição/resposta de servidor HTTP, requisição/resposta de cliente HTTP).

Interface ativa

O escopo da interface para a regra. O agente extrai parâmetros apenas de interfaces que correspondem a esta regra. Para mais informações, consulte How the active interface matches.

Regra de extração de parâmetro

A source e o método de processamento para o parâmetro. É possível configurar múltiplas fontes de parâmetro e etapas de extração. Se várias fontes puderem extrair o parâmetro, a fonte listada primeiro terá maior prioridade.

Fonte do parâmetro

A source real do parâmetro (Header, Query Parameter, Cookie ou Body).

Etapas de processamento de parâmetro

Etapas sequenciais de processamento para analisar a source do parâmetro e extrair o valor final. É possível adicionar múltiplas etapas. A saída da etapa anterior torna-se a entrada da próxima etapa. Se nenhuma etapa de processamento for adicionada, o valor extraído será o texto JSON do objeto de source.

Enable

Especifica se a regra deve ser ativada.

Métodos de processamento de parâmetro

A tabela abaixo detalha os métodos de processamento de parâmetros compatíveis com a versão Python.

Método de processamento

Entrada

Saída

Descrição

JsonPath

String JSON ou objeto JSON

String

Oferece suporte a instruções JsonPath com notação de ponto. Se vários valores corresponderem, o sistema usará o primeiro. Exemplo: $.data.code.

Regex

String

String

Oferece suporte a expressões regulares com grupos nomeados. A substring a extrair corresponde a um grupo chamado res. Utiliza semântica de correspondência total (a expressão regular deve corresponder a toda a entrada, não sendo uma busca por substring). Exemplo: .*from:(?<res>[a-z]+).*.

Como funciona a correspondência da interface ativa

O alvo da correspondência é o nome do Span, no formato Request method Route, como POST /api/order ou GET /api/user/{id}. Tenha em mente o seguinte:

  • Equals /api/order não corresponde. Configure como Equals POST /api/order.

  • Alternativamente, use Ends with /api/order.

  • Ou utilize a expressão regular .*/api/order (expressões regulares também usam semântica de correspondência total).

Processamento de valores

  • Truncamento — Se um valor extraído exceder o limite máximo de comprimento (100 caracteres por padrão), ele será truncado com ... anexado ao final. Para extrair campos Body mais longos, aumente o limite de comprimento do valor extraído.

  • Mesclagem de múltiplos valores — Caso existam vários valores para o mesmo nome de Header ou Query Parameter, eles serão mesclados em uma string no formato [a,b,c].

  • Dessensibilização — Quando a dessensibilização estiver ativada, o valor extraído será substituído por ***.

  • Cookie — Se múltiplos cookies tiverem o mesmo nome, o último valor será utilizado. A fonte Cookie na fase de resposta lê o cookie do lado da requisição.

Verifique a configuração

Depois que uma regra de extração de parâmetro é configurada, ela entra em vigor imediatamente (exceto pela primeira regra, que exige reinicialização da aplicação). Para verificar se a extração está funcionando:

  1. Localize o nome do Attribute para a nova regra. Por exemplo, se você definir o nome do Attribute como orderCode, o nome completo do Attribute será biz.orderCode.

  2. Na página de análise de rastreamento, adicione o nome do Attribute no formato attributes.<Attribute name> (por exemplo, attributes.biz.orderCode) como condição de consulta para filtrar os Spans relevantes.

  3. Clique em um rastreamento e verifique o painel Span Attributes. Se o atributo biz.orderCode aparecer com o valor extraído esperado, a regra de extração entrou em vigor.

Gerencie regras

  • Ativar ou desativar uma regra — Alterne o interruptor Enable no lado direito da regra de destino.

  • Editar ou excluir uma regra — Clique em Edit ou Delete no lado direito da regra de destino.

  • Exclusão em lote — Selecione as regras de extração a excluir e clique em Batch Delete.

  • Cópia em lote — Selecione as regras de extração a copiar e clique em Batch Copy to Other Applications. Na caixa de diálogo, escolha se deseja copiar as regras para todas as outras aplicações ou para aplicações específicas.

    • A cópia em lote leva de 1 a 2 minutos para entrar em vigor.

    • Apenas as regras de extração de parâmetro são copiadas. As regras de erro personalizadas associadas não são copiadas para a aplicação de destino.

    • Uma regra não será copiada se a aplicação de destino já possuir uma regra com o mesmo nome de Attribute.

Perguntas frequentes

O que causa falha na extração de parâmetros?

  • O tipo ou a source de extração de parâmetro não está no escopo suportado (por exemplo, a fonte Body ou Cookie para o cliente). Consulte Supported scope para verificar se o framework e a source atuais são compatíveis.

  • A regra de correspondência da interface ativa está configurada incorretamente. O alvo da correspondência é o nome do Span no formato Request method Route. Uma regra como Equals /api/order não corresponde. Consulte How the active interface matches.

  • A sintaxe da etapa de processamento de parâmetro está incorreta ou o tipo de entrada não corresponde aos requisitos do método de processamento:

    • Regex deve conter um grupo nomeado chamado res e usa semântica de correspondência total. Para corresponder a uma substring, adicione .* em ambos os lados.

    • A entrada para JsonPath deve ser um objeto JSON ou texto JSON. Executar JsonPath em uma string simples (como o valor de Header abc) não produz resultado.

  • A versão do agente Python é anterior à 3.1.0, que não oferece suporte à extração de parâmetros de negócio.

  • A aplicação não foi reiniciada após a criação da primeira regra.

O que causa falha na extração do Body?

Para evitar afetar a leitura do corpo da requisição ou resposta pela própria aplicação, o agente realiza uma verificação de admissão antes de ler o Body. Se qualquer uma das condições a seguir não for atendida, a source Body será totalmente ignorada (não truncada antes da análise):

  • Content-Type não é JSON — Apenas application/json ou tipos de mídia terminados com +json são compatíveis. Tipos como text/plain, application/x-www-form-urlencoded, multipart/form-data e tipos binários não são extraídos.

  • Content-Length ausente ou excede o limite — Se o cabeçalho da requisição não contiver Content-Length (por exemplo, codificação de transferência chunked), ou se o comprimento do Body exceder o limite superior (64 KB por padrão), todo o Body será ignorado.

  • Body não é JSON válido codificado em UTF-8 — Se a decodificação ou a análise JSON falhar, o Body será ignorado.

  • Resposta em streaming — Respostas de streaming do Flask ou direct_passthrough, StreamingHttpResponse do Django e StreamingResponse do FastAPI/Starlette (incluindo SSE) não extraem o Body da resposta.

A seguir estão cenários específicos de frameworks:

  • FastAPI — O Body da requisição fica visível apenas quando a aplicação realmente o lê — ou seja, o endpoint declara um parâmetro Body (como um modelo Pydantic ou Body()), ou o código chama await request.body() ou await request.json(). Se o endpoint não ler o corpo da requisição, o agente não consome ativamente o fluxo da requisição e o Body não pode ser extraído.

  • Django — Se a aplicação consumir primeiro o fluxo da requisição usando request.read() (acionando RawPostDataException), ou se o Body exceder o limite DATA_UPLOAD_MAX_MEMORY_SIZE do Django (acionando RequestDataTooBig), o Body não poderá ser extraído. A leitura normal através de request.body não é afetada (o Django armazena o body em cache, então a aplicação ainda pode lê-lo normalmente).

  • Flask — O agente lê e armazena em cache o corpo da requisição usando request.get_data(cache=True). A aplicação ainda pode ler o corpo normalmente depois disso, sem limitações adicionais.

E se o valor extraído não corresponder às expectativas?

  • Valor termina com ...: O valor excedeu o limite de comprimento do valor extraído (100 caracteres por padrão) e foi truncado. Aumente o limite de comprimento.

  • Valor é ***: A dessensibilização está ativada para esta regra ou globalmente.

  • Valor está no formato [a,b]: Existem múltiplos valores para o mesmo Header ou Query Parameter e eles foram mesclados.

  • Quando o JsonPath corresponde a múltiplos nós, apenas o primeiro resultado é retornado.

  • Quando múltiplas regras gravam no mesmo nome de Attribute, a regra aplicada posteriormente sobrescreve a anterior.

Posso usar a source Query Parameter para extrair campos de formulário de um Body de requisição codificado como formulário?

Não. Quando o Content-Type da requisição é application/x-www-form-urlencoded, a source Query Parameter é totalmente ignorada para evitar que o agente acione a análise de formulário do framework e afete a leitura do corpo da requisição pela própria aplicação. Para tais parâmetros, passe-os através de strings de consulta de URL ou Headers, ou adicione instrumentação personalizada conforme descrito na próxima pergunta.

Como extraio fontes de parâmetros de negócio não compatíveis com a versão Python?

Adicione instrumentação personalizada usando o SDK do OpenTelemetry para aplicações Python para gravar parâmetros de negócio como Attributes em um Span.