Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
O recurso de processadores de telemetria é designado como versão prévia porque não podemos garantir a compatibilidade com versões anteriores de uma versão para outra devido ao estado experimental do atributo de convenções semânticas. No entanto, o recurso foi testado e tem suporte na produção.
O Java 3.x para Application Insights pode processar dados de telemetria antes de os dados serem exportados.
Alguns casos de uso:
- Mascare dados confidenciais.
- Adicione dimensões personalizadas condicionalmente.
- Atualize o nome do span, que é usado para agregar telemetria semelhante no portal do Azure.
- Descartar atributos de span específicos para controlar os custos de ingestão.
- Filtre algumas métricas para controlar os custos de ingestão.
Observação
Se você pretende descartar spans (inteiros) específicos para controlar o custo de ingestão, confira substituições de amostragem.
Terminologia
Antes de saber mais sobre os processadores de telemetria, você deve entender os termos span e log.
Um span é um tipo de telemetria que representa um dos seguintes:
- Uma solicitação recebida.
- Uma dependência externa (por exemplo, uma chamada remota a outro serviço).
- Uma dependência em processo (por exemplo, trabalho sendo feito por subcomponentes do serviço).
Um log é um tipo de telemetria que representa:
- dados de log capturados do Log4j, Logback e java.util.logging
Para processadores de telemetria, os seguintes componentes de span/log são importantes:
- Nome
- Corpo
- Atributos
O nome do span é a exibição primária para solicitações e dependências no portal do Azure. Atributos de span representam propriedades padrão e personalizadas de uma determinada solicitação ou dependência.
A mensagem de rastreamento ou o corpo é a exibição principal para logs no portal do Azure. Atributos de log representam propriedades padrão e personalizadas de um determinado log.
Tipos de processador de telemetria
Atualmente, os quatro tipos de processadores de telemetria são
- Processadores de atributo
- Processadores de span
- Processadores de log
- Filtros de métricas
Um processador de atributos pode inserir, atualizar, excluir ou aplicar hash em atributos de um item de telemetria (span ou log).
Ele também pode usar uma expressão regular para extrair um ou mais atributos novos de um atributo existente.
Um processador de span pode atualizar o nome da telemetria de solicitações e dependências. Ele também pode usar uma expressão regular para extrair um ou mais atributos novos do nome do span.
Um processador de registros pode atualizar o nome de telemetria dos registros. Ele também pode usar uma expressão regular para extrair um ou mais atributos novos do nome do log.
Um filtro de métrica pode filtrar as métricas para ajudar a controlar o custo de ingestão.
Observação
Atualmente, os processadores de telemetria processam apenas atributos do tipo cadeia de caracteres. Eles não processam atributos do tipo booliano ou número.
Introdução
Para começar, crie um arquivo de configuração chamado applicationinsights.jsem. Salve-o no mesmo diretório que applicationinsights-agent-*.jar. Use o modelo a seguir.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
...
},
{
"type": "attribute",
...
},
{
"type": "span",
...
},
{
"type": "log",
...
},
{
"type": "metric-filter",
...
}
]
}
}
Processador de atributos
O processador de atributos muda os atributos de um span ou um log. Ele pode permitir incluir ou excluir span ou log. Ele usa uma lista de ações que são executadas na ordem em que o arquivo de configuração especifica. O processador permite estas ações:
insertupdatedeletehashextractmask
insert
A ação insert insere um novo atributo no item de telemetria em que a key ainda não exista.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"value": "value1",
"action": "insert"
}
]
}
]
A ação insert requer as seguintes configurações:
keyvalueoufromAttributeaction:insert
update
A ação update atualiza um atributo no item de telemetria onde o key já exista.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"value": "newValue",
"action": "update"
}
]
}
]
A ação update requer as seguintes configurações:
keyvalueoufromAttributeaction:update
delete
A ação delete exclui um atributo de um item de telemetria.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"action": "delete"
}
]
}
]
A ação delete requer as seguintes configurações:
keyaction:delete
hash
A ação hash cria um hash (SHA1) de um valor de atributo existente.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"action": "hash"
}
]
}
]
A ação hash requer as seguintes configurações:
keyaction:hash
extract
Observação
O recurso extract está disponível somente na versão 3.0.2 e posterior.
A ação extract extrai valores usando uma regra de expressão regular da chave de entrada para chaves de destino que a regra especifica. Se uma chave de destino já existe, a ação extract substitui a chave de destino. Essa ação se comporta como a configuração do processador de spantoAttributes, em que o atributo existente é a origem.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"pattern": "<regular pattern with named matchers>",
"action": "extract"
}
]
}
]
A ação extract requer as seguintes configurações:
keypatternaction:extract
mask
Observação
O recurso mask está disponível somente na versão 3.2.5 e posterior.
A ação mask mascara valores de atributo usando uma regra de expressão regular especificada no pattern e replace.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attributeName",
"pattern": "<regular expression pattern>",
"replace": "<replacement value>",
"action": "mask"
}
]
}
]
A ação mask requer as seguintes configurações:
keypatternreplaceaction:mask
pattern pode conter um grupo nomeado colocado entre ?< e >:. Exemplo: (?<userGroupName>[a-zA-Z.:\/]+)\d+? O grupo é (?<userGroupName>[a-zA-Z.:\/]+) e userGroupName é o nome do grupo. pattern pode conter o mesmo grupo nomeado colocado entre ${ e } seguido pela máscara. Exemplo em que a máscara é **: ${userGroupName}**.
Confira Exemplos do processador de telemetria para obter exemplos de mascaramento.
Critérios de inclusão e critérios de exclusão
Os processadores de atributo dão suporte aos critérios opcionais include e exclude.
Um processador de atributos é aplicado somente à telemetria que corresponde aos seus critérios include (se disponíveis) e não correspondem aos seus critérios exclude (se disponíveis).
Para configurar essa opção, em include ou exclude (ou em ambos), especifique pelo menos um matchType e um spanNames ou attributes.
A configuração include ou exclude permite mais de uma condição especificada.
Todas as condições especificadas devem ser avaliadas como verdadeiras para resultar em uma correspondência.
Campos obrigatórios:
matchTypecontrola como os itens em matrizesspanNamese matrizesattributessão interpretados. Os valores possíveis sãoregexpestrict. Correspondências de expressão regular são executadas com base no valor do atributo inteiro, portanto, se você quiser corresponder a um valor que contenhaabcem qualquer lugar, use.*abc.*.
Campos opcionais:
spanNamesdeve corresponder a pelo menos um dos itens.attributesespecifica a lista de atributos a serem correspondentes. Todos esses atributos devem corresponder exatamente para resultar em uma correspondência.
Observação
Se ambos include e exclude forem especificados, as propriedades include serão verificadas antes da verificação das propriedades exclude.
Observação
Se as configurações include ou exclude não tiverem spanNames especificado, os critérios de correspondência serão aplicados tanto em spans quanto em logs.
Amostra de uso
"processors": [
{
"type": "attribute",
"include": {
"matchType": "strict",
"spanNames": [
"spanA",
"spanB"
]
},
"exclude": {
"matchType": "strict",
"attributes": [
{
"key": "redact_trace",
"value": "false"
}
]
},
"actions": [
{
"key": "credit_card",
"action": "delete"
},
{
"key": "duplicate_key",
"action": "delete"
}
]
}
]
Para obter mais informações, confira exemplos do processador de telemetria.
Processador de span
O processador de trechos modifica o nome ou os atributos de um trecho com base no nome do mesmo. Ele pode permitir incluir ou excluir spans.
Dar nome a um intervalo
A seção name requer a configuração fromAttributes. Os valores desses atributos são usados para criar um novo nome, concatenado na ordem em que a configuração especifica. O processador só muda o nome do span se todos esses atributos estiverem presentes no span.
A configuração separator é opcional. Essa configuração é uma cadeia de caracteres e você pode usar valores divididos.
Observação
Se a renomeação depender do processador de atributos para mudar os atributos, verifique se o processador de span está especificado após o processador de atributos na especificação do pipeline.
"processors": [
{
"type": "span",
"name": {
"fromAttributes": [
"attributeKey1",
"attributeKey2",
],
"separator": "::"
}
}
]
Extrair atributos do nome do span
A seção toAttributes lista as expressões regulares para correspondência com o nome do span. Ela extrai atributos com base em subexpressões.
A configuração rules é necessária. Essa configuração lista as regras que são usadas para extrair valores de atributo do nome de extensão.
Os nomes de atributos extraídos substituem os valores no nome do span. Cada regra na lista é uma cadeia de caracteres de padrão de expressão regular (regex).
Veja como os nomes de atributos extraídos substituem valores:
- O nome do span é verificado em relação ao regex.
- Se o regex corresponder, todas as subexpressões nomeadas do regex serão extraídas como atributos.
- Os atributos extraídos são adicionados ao span.
- Cada nome de subexpressão se torna um nome de atributo.
- A parte correspondente da subexpressão se torna o valor do atributo.
- O nome do atributo extraído substitui a parte correspondente no nome do span. Se os atributos já existirem no span, eles serão substituídos.
Esse processo é repetido para todas as regras na ordem em que são especificadas. Cada regra seguinte funciona no nome do span que é a saída da regra anterior.
"processors": [
{
"type": "span",
"name": {
"toAttributes": {
"rules": [
"rule1",
"rule2",
"rule3"
]
}
}
}
]
Atributos de span comuns
Esta seção lista alguns atributos de span comuns que os processadores de telemetria podem usar.
Spans HTTP
| Atributo | Tipo | Descrição |
|---|---|---|
http.request.method (costumava ser http.method) |
cadeia de caracteres | Método de solicitação HTTP. |
url.full (intervalo de cliente) ou url.path (intervalo de servidor) (costumava ser http.url) |
cadeia de caracteres | URL de solicitação HTTP completa no formulário scheme://host[:port]/path?query[#fragment]. O fragmento geralmente não é transmitido via HTTP. Mas, se o fragmento for conhecido, ele deverá ser incluído. |
http.response.status_code (costumava ser http.status_code) |
número | Código de status de resposta HTTP. |
network.protocol.version (costumava ser http.flavor) |
cadeia de caracteres | Tipo de protocolo HTTP. |
user_agent.original (costumava ser http.user_agent) |
cadeia de caracteres | Valor do cabeçalho do agente de usuário HTTP enviado pelo cliente. |
Spans do Java Database Connectivity
A tabela a seguir descreve atributos que você pode usar em spans do Java Database Connectivity (JDBC):
| Atributo | Tipo | Descrição |
|---|---|---|
db.system |
cadeia de caracteres | Identificador do produto do DBMS (gerenciador de banco de dados) que está sendo usado. Consulte Convenções semânticas para operações de banco de dados. |
db.connection_string |
cadeia de caracteres | A cadeia de conexão usada para se conectar ao banco de dados. Recomendamos que você remova as credenciais incorporadas. |
db.user |
cadeia de caracteres | Nome de usuário para acessar o banco de dados. |
db.name |
cadeia de caracteres | Cadeia de caracteres usada para relatar o nome do banco de dados que está sendo acessado. Para comandos que mudam o banco de dados, essa cadeia de caracteres deve ser definida para o banco de dados de destino, mesmo que o comando falhe. |
db.statement |
cadeia de caracteres | A instrução do banco de dados que está sendo executada. |
Critérios de inclusão e critérios de exclusão
Os processadores de span oferecem suporte aos critérios opcionais include e exclude.
Um processador de span é aplicado somente à telemetria que corresponde aos seus critérios include (se disponíveis) e não correspondem aos seus critérios exclude (se disponíveis).
Para configurar essa opção, em include ou exclude (ou em ambos), especifique, pelo menos, um matchType e um spanNames ou o intervalo attributes.
A configuração include ou exclude permite mais de uma condição especificada.
Todas as condições especificadas devem ser avaliadas como verdadeiras para resultar em uma correspondência.
Campos obrigatórios:
matchTypecontrola como os itens em matrizesspanNamese matrizesattributessão interpretados. Os valores possíveis sãoregexpestrict. Correspondências de expressão regular são executadas com base no valor do atributo inteiro, portanto, se você quiser corresponder a um valor que contenhaabcem qualquer lugar, use.*abc.*.
Campos opcionais:
spanNamesdeve corresponder a pelo menos um dos itens.attributesespecifica a lista de atributos a serem correspondentes. Todos esses atributos devem corresponder exatamente para resultar em uma correspondência.
Observação
Se ambos include e exclude forem especificados, as propriedades include serão verificadas antes da verificação das propriedades exclude.
Amostra de uso
"processors": [
{
"type": "span",
"include": {
"matchType": "strict",
"spanNames": [
"spanA",
"spanB"
]
},
"exclude": {
"matchType": "strict",
"attributes": [
{
"key": "attribute1",
"value": "attributeValue1"
}
]
},
"name": {
"toAttributes": {
"rules": [
"rule1",
"rule2",
"rule3"
]
}
}
}
]
Para obter mais informações, confira exemplos do processador de telemetria.
Processador de log
Observação
Os processadores de log estão disponíveis a partir da versão 3.1.1.
O processador de log modifica o corpo da mensagem ou os atributos de um log com base no corpo da mensagem do log. Ele pode permitir incluir ou excluir logs.
Atualizar o corpo da mensagem do log
A seção body requer a configuração fromAttributes. Os valores desses atributos são usados para criar um novo corpo, concatenado na ordem em que a configuração especifica. O processador muda o corpo do log somente se todos esses atributos estiverem presentes no log.
A configuração separator é opcional. Essa configuração é uma cadeia de caracteres. Você pode especificá-lo para dividir valores.
Observação
Se o processo de renomeação depender do processador de atributos para modificar os atributos, certifique-se de que o processador de log está especificado após o processador de atributos na especificação do pipeline.
"processors": [
{
"type": "log",
"body": {
"fromAttributes": [
"attributeKey1",
"attributeKey2",
],
"separator": "::"
}
}
]
Extrair atributos do corpo da mensagem de log
A seção toAttributes lista as expressões regulares para correspondência com o corpo da mensagem do log. Ela extrai atributos com base em subexpressões.
A configuração rules é necessária. Essa configuração lista as regras que são usadas para extrair valores de atributo do corpo.
Os nomes de atributos extraídos substituem os valores no corpo da mensagem do log. Cada regra na lista é uma cadeia de caracteres de padrão de expressão regular (regex).
Veja como os nomes de atributos extraídos substituem valores:
- O corpo da mensagem do log é verificado em relação ao regex.
- Se o regex corresponder, todas as subexpressões nomeadas do regex serão extraídas como atributos.
- Os atributos extraídos são adicionados ao log.
- Cada nome de subexpressão se torna um nome de atributo.
- A parte correspondente da subexpressão se torna o valor do atributo.
- O nome do atributo extraído substitui a parte correspondente no nome do log. Se os atributos já existirem no log, eles serão substituídos.
Esse processo é repetido para todas as regras na ordem em que são especificadas. Cada regra seguinte funciona no nome do log que é a saída da regra anterior.
"processors": [
{
"type": "log",
"body": {
"toAttributes": {
"rules": [
"rule1",
"rule2",
"rule3"
]
}
}
}
]
Critérios de inclusão e critérios de exclusão
Os processadores de log oferecem suporte aos critérios opcionais include e exclude.
Um processador de log é aplicado somente à telemetria que corresponde aos seus critérios include (se disponíveis) e não correspondem aos seus critérios exclude (se disponíveis).
Para configurar essa opção, em include ou exclude (ou ambos), especifique o matchType e o attributes.
A configuração include ou exclude permite mais de uma condição especificada.
Todas as condições especificadas devem ser avaliadas como verdadeiras para resultar em uma correspondência.
- Campo obrigatório:
matchTypecontrola como os itens emattributesmatrizes são interpretados. Os valores possíveis sãoregexpestrict. Correspondências de expressão regular são executadas com base no valor do atributo inteiro, portanto, se você quiser corresponder a um valor que contenhaabcem qualquer lugar, use.*abc.*.attributesespecifica a lista de atributos a serem correspondentes. Todos esses atributos devem corresponder exatamente para resultar em uma correspondência.
Observação
Se ambos include e exclude forem especificados, as propriedades include serão verificadas antes da verificação das propriedades exclude.
Observação
Os processadores de log não dão suporte a spanNames.
Amostra de uso
"processors": [
{
"type": "log",
"include": {
"matchType": "strict",
"attributes": [
{
"key": "attribute1",
"value": "value1"
}
]
},
"exclude": {
"matchType": "strict",
"attributes": [
{
"key": "attribute2",
"value": "value2"
}
]
},
"body": {
"toAttributes": {
"rules": [
"rule1",
"rule2",
"rule3"
]
}
}
}
]
Para obter mais informações, confira exemplos do processador de telemetria.
Filtro de métrica
Observação
Os filtros de métrica estão disponíveis a partir da versão 3.1.1.
Os filtros de métricas são usados para excluir algumas métricas a fim de ajudar a controlar o custo de ingestão.
Os filtros de métricas só dão suporte aos critérios exclude. As métricas que atendem aos critérios exclude não são exportadas.
Para configurar essa opção, em exclude, especifique o matchType ou mais metricNames.
- Campo obrigatório:
matchTypecontrola como os itens emmetricNamessão correspondidos. Os valores possíveis sãoregexpestrict. Correspondências de expressão regular são executadas com base no valor do atributo inteiro, portanto, se você quiser corresponder a um valor que contenhaabcem qualquer lugar, use.*abc.*.metricNamesdeve corresponder a pelo menos um dos itens.
Amostra de uso
O exemplo a seguir mostra como excluir métricas com nomes "metricA" e "metricB":
"processors": [
{
"type": "metric-filter",
"exclude": {
"matchType": "strict",
"metricNames": [
"metricA",
"metricB"
]
}
}
]
O exemplo a seguir mostra como desativar todas as métricas, incluindo as métricas de desempenho padrão coletadas automaticamente, como CPU e memória.
"processors": [
{
"type": "metric-filter",
"exclude": {
"matchType": "regexp",
"metricNames": [
".*"
]
}
}
]
Métricas padrão capturadas pelo agente Java
| Nome da métrica | Tipo de métrica | Descrição | Filtrável |
|---|---|---|---|
Current Thread Count |
métricas personalizadas | Consulte ThreadMXBean.getThreadCount(). | sim |
Loaded Class Count |
métricas personalizadas | Consulte ClassLoadingMXBean.getLoadedClassCount(). | sim |
GC Total Count |
métricas personalizadas | Soma das contagens em todas as instâncias de GarbageCollectorMXBean (diferença desde o último relatório). Consulte GarbageCollectorMXBean.getCollectionCount(). | sim |
GC Total Time |
métricas personalizadas | Soma do tempo em todas as instâncias de GarbageCollectorMXBean (diferença desde o último relatório). Consulte GarbageCollectorMXBean.getCollectionTime(). | sim |
Heap Memory Used (MB) |
métricas personalizadas | Consulte MemoryMXBean.getHeapMemoryUsage().getUsed(). | sim |
% Of Max Heap Memory Used |
métricas personalizadas | java.lang:type=Memory / quantidade máxima de memória em bytes. Consulte MemoryUsage | sim |
\Processor(_Total)\% Processor Time |
métricas padrão | Diferença nos contadores em escala de carga de CPU de todo o sistema(Somente Usuário e Sistema) dividida pelo número de contagem de processadores lógicos em um determinado intervalo de tempo | não |
\Process(??APP_WIN32_PROC??)\% Processor Time |
métricas padrão | Consulte OperatingSystemMXBean.getProcessCpuTime() (comparação desde o último relatório, normalizado por tempo e número de CPUs). | não |
\Process(??APP_WIN32_PROC??)\Private Bytes |
métricas padrão | Soma de MemoryMXBean.getHeapMemoryUsage() e MemoryMXBean.getNonHeapMemoryUsage(). | não |
\Process(??APP_WIN32_PROC??)\IO Data Bytes/sec |
métricas padrão | /proc/[pid]/io Soma de bytes lidos e gravados pelo processo (diferença desde o último relatório). Consulte proc(5). |
não |
\Memory\Available Bytes |
métricas padrão | Consulte OperatingSystemMXBean.getFreePhysicalMemorySize(). | não |
Perguntas frequentes
Por que o processador de logs não processa arquivos de log usando TelemetryClient.trackTrace()?
TelemetryClient.trackTrace() faz parte da ponte do SDK Clássico do Application Insights e os processadores de log só funcionam com a nova instrumentação baseada em OpenTelemetry.