Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Nota
O recurso de processadores de telemetria é designado como visualização porque não podemos garantir compatibilidade retroativa de uma versão para a outra devido ao estado experimental das convenções semânticas. No entanto, o recurso foi testado e é suportado na produção.
O Application Insights Java 3.x pode processar dados de telemetria antes que os dados sejam exportados.
Alguns casos de uso:
- Mascarar dados confidenciais.
- Adicione condicionalmente dimensões personalizadas.
- Atualize o nome do intervalo, que é usado para agregar telemetria semelhante no portal do Azure.
- Remova atributos específicos de span para controlar os custos de ingestão.
- Filtre algumas métricas para controlar os custos de ingestão.
Nota
Se você estiver procurando eliminar extensões específicas (inteiras) para controlar o custo de ingestão, consulte substituições de amostragem.
Terminologia
Antes de aprender sobre 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 de entrada.
- Uma dependência de saída (por exemplo, uma chamada remota para 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, estes componentes de extensão/log são importantes:
- Nome
- Corpo
- Atributos
O nome do intervalo é a exibição principal para solicitações e dependências no portal do Azure. Os atributos Span representam propriedades padrão e personalizadas de uma determinada solicitação ou dependência.
A mensagem ou corpo de rastreamento é a exibição principal para logs no portal do Azure. Os atributos de log representam as propriedades padrão e personalizadas de um determinado log.
Tipos de processadores de telemetria
Atualmente, os quatro tipos de processadores de telemetria são
- Processadores de atributos
- Processadores Span
- Processadores de log
- Filtros métricos
Um processador de atributos pode inserir, atualizar, eliminar ou fazer hash de atributos de um item de telemetria (span ou log).
Ele também pode usar uma expressão regular para extrair um ou mais novos atributos de um atributo existente.
Um processador span pode atualizar o nome de telemetria de solicitações e dependências. Ele também pode usar uma expressão regular para extrair um ou mais novos atributos do nome da extensão.
Um processador de registos pode atualizar o nome da telemetria dos registos. Ele também pode usar uma expressão regular para extrair um ou mais novos atributos do nome do log.
Um filtro de métricas pode filtrar métricas para ajudar a controlar o custo de ingestão.
Nota
Atualmente, os processadores de telemetria processam apenas atributos do tipo string. Eles não processam atributos do tipo booleano ou número.
Primeiros Passos
Para começar, crie um arquivo de configuração chamado applicationinsights.json. Salve-o no mesmo diretório que applicationinsights-agent-*.jar. Utilize o modelo seguinte.
{
"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 modifica atributos de um span ou um logarquivo . Pode apoiar a capacidade de span incluir ou excluir ou log. Ele usa uma lista de ações que são executadas na ordem especificada pelo arquivo de configuração. O processador suporta estas ações:
insertupdatedeletehashextractmask
insert
A insert ação insere um novo atributo no item de telemetria onde o key ainda não existe.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"value": "value1",
"action": "insert"
}
]
}
]
A insert ação requer as seguintes configurações:
key- Tanto
valuecomofromAttribute -
action:insert
update
A update ação atualiza um atributo no item de telemetria onde o key já existe.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"value": "newValue",
"action": "update"
}
]
}
]
A update ação requer as seguintes configurações:
key- Tanto
valuecomofromAttribute -
action:update
delete
A delete ação exclui um atributo de um item de telemetria.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"action": "delete"
}
]
}
]
A delete ação requer as seguintes configurações:
key-
action: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 hash ação requer as seguintes configurações:
key-
action:hash
extract
Nota
O extract recurso está disponível apenas na versão 3.0.2 e posterior.
A extract ação extrai valores usando uma regra de expressão regular da chave de entrada para as chaves de destino especificadas pela regra. Se já existir uma chave de destino, a extract ação substitui a chave de destino. Essa ação comporta-se como a configuração do processador spantoAttributes, onde o atributo existente é a origem.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"pattern": "<regular pattern with named matchers>",
"action": "extract"
}
]
}
]
A extract ação requer as seguintes configurações:
keypattern-
action:extract
mask
Nota
O mask recurso está disponível apenas na versão 3.2.5 e posterior.
A mask ação 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 mask ação requer as seguintes configurações:
keypatternreplace-
action: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 então conter o mesmo grupo nomeado colocado entre ${ e } seguido pela máscara. Exemplo em que a máscara é **: ${userGroupName}**.
Consulte Exemplos de processadores de telemetria para obter exemplos de mascaramento.
Incluir critérios e excluir critérios
Os processadores de atributos suportam opcionais include e exclude critérios.
Um processador de atributos é aplicado apenas à telemetria que corresponde aos seus include critérios (se estiver disponível) e não corresponde aos seus exclude critérios (se estiver disponível).
Para configurar essa opção, em include ou exclude (ou ambos), especifique pelo menos um matchType e um spanNames ou attributes.
A include configuração 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 emspanNamesmatrizes eattributesmatrizes são interpretados. Os valores possíveis sãoregexpestrict. As correspondências de expressão regular são realizadas em relação ao valor do atributo inteiro, portanto, se você quiser corresponder a um valor que contenhaabcqualquer lugar nele, precisará usar.*abc.*o .
-
Campos opcionais:
-
spanNamesdeve corresponder a pelo menos um dos itens. -
attributesespecifica a lista de atributos a corresponder. Todos esses atributos devem corresponder exatamente para resultar em uma correspondência.
-
Nota
Se ambos include e exclude forem especificados, as propriedades include são verificadas antes das propriedades exclude.
Nota
Se a configuração include ou exclude não tiverem spanNames especificado, os critérios de correspondência serão aplicados em ambos spans e logs.
Uso da amostra
"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, consulte Exemplos de processadores de telemetria.
Processador Span
O processador span modifica o nome da extensão ou os atributos de uma extensão com base no nome da extensão. Permite incluir ou excluir intervalos.
Nomeie uma extensão
A name seção requer a configuração fromAttributes. Os valores desses atributos são usados para criar um novo nome, concatenado na ordem especificada pela configuração. O processador altera o nome da extensão somente se todos esses atributos estiverem presentes na extensão.
A separator configuração é opcional. Essa configuração é uma cadeia de caracteres e você pode usar valores divididos.
Nota
Se a renomeação depender do processador de atributos para modificar atributos, certifique-se de que o processador span seja 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 toAttributes seção lista as expressões regulares para corresponder ao nome da extensão. Ele extrai atributos com base em subexpressões.
A rules configuração é necessária. Esta configuração lista as regras usadas para extrair valores de atributos do nome do span.
Os nomes de atributos extraídos substituem os valores no nome da extensão. 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 os valores:
- O nome da extensão é verificado em relação ao regex.
- Todas as subexpressões nomeadas da expressão regular (regex) são extraídas como atributos se corresponder ao regex.
- Os atributos extraídos são adicionados ao trecho.
- Cada nome de subexpressão torna-se um nome de atributo.
- A parte correspondente da subexpressão torna-se o valor do atributo.
- O nome do atributo extraído substitui a parte correspondente no nome da extensão. Se os atributos já existirem na span, serão substituídos.
Esse processo é repetido para todas as regras na ordem em que são especificadas. Cada regra subsequente aplica-se ao nome do intervalo que é o resultado da regra anterior.
"processors": [
{
"type": "span",
"name": {
"toAttributes": {
"rules": [
"rule1",
"rule2",
"rule3"
]
}
}
}
]
Atributos comuns de span
Esta seção lista alguns atributos de span comuns que os processadores de telemetria podem usar.
Intervalos HTTP
| Atributo | Tipo | Descrição |
|---|---|---|
http.request.method (costumava ser http.method) |
corda | Método de solicitação HTTP. |
url.full (client span) ou url.path (server span) (costumava ser http.url) |
corda | URL de solicitação HTTP completa no formato scheme://host[:port]/path?query[#fragment]. O fragmento normalmente não é transmitido por HTTP. Mas se o fragmento for conhecido, deve ser incluído. |
http.response.status_code (costumava ser http.status_code) |
Número | Código de estado de resposta HTTP. |
network.protocol.version (costumava ser http.flavor) |
corda | Tipo de protocolo HTTP. |
user_agent.original (costumava ser http.user_agent) |
corda | Valor do cabeçalho HTTP User-Agent que é enviado pelo cliente. |
A conectividade de banco de dados Java abrange
A tabela a seguir descreve os atributos que você pode usar em extensões JDBC (Java Database Connectivity):
| Atributo | Tipo | Descrição |
|---|---|---|
db.system |
corda | Identificador do produto DBMS (sistema de gerenciamento de banco de dados) que está sendo usado. Consulte Convenções semânticas para operações de banco de dados. |
db.connection_string |
corda | Cadeia de conexão usada para se conectar ao banco de dados. Recomendamos que remova as credenciais incorporadas. |
db.user |
corda | Nome de utilizador para aceder à base de dados. |
db.name |
corda | String usada para relatar o nome do banco de dados que está sendo acessado. Para comandos que alternam o banco de dados, essa cadeia de caracteres deve ser definida como o banco de dados de destino, mesmo que o comando falhe. |
db.statement |
corda | Instrução de banco de dados que está sendo executada. |
Incluir critérios e excluir critérios
Os processadores Span suportam opcionais include e exclude critérios.
Um processador span é aplicado apenas à telemetria que corresponde aos seus include critérios (se estiver disponível) e não corresponde aos seus exclude critérios (se estiver disponível).
Para configurar esta opção, em include ou exclude (ou ambos), especifique pelo menos um matchType e um spanNames ou um intervalo attributes.
A include configuração 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 emspanNamesmatrizes eattributesmatrizes são interpretados. Os valores possíveis sãoregexpestrict. As correspondências de expressão regular são realizadas em relação ao valor do atributo inteiro, portanto, se você quiser corresponder a um valor que contenhaabcqualquer lugar nele, precisará usar.*abc.*o .
-
Campos opcionais:
-
spanNamesdeve corresponder a pelo menos um dos itens. -
attributesespecifica a lista de atributos a corresponder. Todos esses atributos devem corresponder exatamente para resultar em uma correspondência.
-
Nota
Se ambos include e exclude forem especificados, as propriedades include são verificadas antes das propriedades exclude.
Uso da amostra
"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, consulte Exemplos de processadores de telemetria.
Processador de log
Nota
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 de log ou os atributos de um log com base no corpo da mensagem de log. Pode suportar a inclusão ou exclusão de registos.
Corpo da mensagem Atualizar Log
A body seção requer a configuração fromAttributes. Os valores desses atributos são usados para criar um novo corpo, concatenado na ordem especificada pela configuração. O processador altera o corpo do log somente se todos esses atributos estiverem presentes no log.
A separator configuração é opcional. Essa configuração é uma cadeia de caracteres. Você pode especificá-lo para dividir valores.
Nota
Se a renomeação depender do processador de atributos para modificar atributos, assegure-se de que o processador de log seja mencionado depois do processador de atributos na definição do pipeline.
"processors": [
{
"type": "log",
"body": {
"fromAttributes": [
"attributeKey1",
"attributeKey2",
],
"separator": "::"
}
}
]
Extrair atributos do corpo da mensagem de log
A toAttributes seção lista as expressões regulares para corresponder ao corpo da mensagem de log. Ele extrai atributos com base em subexpressões.
A rules configuração é necessária. Essa configuração lista as regras usadas para extrair valores de atributos do corpo.
Os nomes de atributos extraídos substituem os valores no corpo da mensagem de 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 os valores:
- O corpo da mensagem de log é verificado em relação ao regex.
- Todas as subexpressões nomeadas da expressão regular (regex) são extraídas como atributos se corresponder ao regex.
- Os atributos extraídos são adicionados ao log.
- Cada nome de subexpressão torna-se um nome de atributo.
- A parte correspondente da subexpressão torna-se 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 subsequente aplica-se ao nome do log, que é a saída da regra anterior.
"processors": [
{
"type": "log",
"body": {
"toAttributes": {
"rules": [
"rule1",
"rule2",
"rule3"
]
}
}
}
]
Incluir critérios e excluir critérios
Os processadores de log suportam critérios opcionais, assim como include e exclude.
Um processador de log é aplicado apenas à telemetria que corresponde aos seus include critérios (se estiver disponível) e não corresponde aos seus exclude critérios (se estiver disponível).
Para configurar essa opção, em include ou exclude (ou ambos), especifique o matchType e attributes.
A include configuração 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. As correspondências de expressão regular são realizadas em relação ao valor do atributo inteiro, portanto, se você quiser corresponder a um valor que contenhaabcqualquer lugar nele, precisará usar.*abc.*o . -
attributesespecifica a lista de atributos a corresponder. Todos esses atributos devem corresponder exatamente para resultar em uma correspondência.
-
Nota
Se ambos include e exclude forem especificados, as propriedades include são verificadas antes das propriedades exclude.
Nota
Os processadores de log não suportam spanNames.
Uso da amostra
"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, consulte Exemplos de processadores de telemetria.
Filtro métrico
Nota
Os filtros métricos estão disponíveis a partir da versão 3.1.1.
Os filtros métricos são usados para excluir algumas métricas, a fim de ajudar a controlar o custo de ingestão.
Os filtros métricos apenas suportam critérios exclude. As métricas que correspondem aos seus exclude critérios não são exportadas.
Para configurar essa opção, em exclude, especifique um matchType ou mais metricNames.
-
Campo obrigatório:
-
matchTypecontrola como os itens emmetricNamessão correspondidos. Os valores possíveis sãoregexpestrict. As correspondências de expressão regular são realizadas em relação ao valor do atributo inteiro, portanto, se você quiser corresponder a um valor que contenhaabcqualquer lugar nele, precisará usar.*abc.*o . -
metricNamesdeve corresponder a pelo menos um dos itens.
-
Uso da amostra
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 de tempo em todas as instâncias GarbageCollectorMXBean (diff desde o último relatado). 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=Memória / quantidade máxima de memória em bytes. Consulte MemoryUsage | sim |
\Processor(_Total)\% Processor Time |
Métricas padrão | Diferença nos contadores de ticks de carga da CPU em todo o sistema (Somente Usuário e Sistema) dividida pelo número de processadores lógicos contados em um determinado intervalo de tempo | não |
\Process(??APP_WIN32_PROC??)\% Processor Time |
Métricas padrão | Consulte OperatingSystemMXBean.getProcessCpuTime() (diferença desde a última comunicação, normalizada pelo tempo e número de CPU). | 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 a última vez relatada). Ver proc(5). |
não |
\Memory\Available Bytes |
Métricas padrão | Consulte OperatingSystemMXBean.getFreePhysicalMemorySize(). | não |
Próximos passos
- Para rever as perguntas frequentes (FAQ), consulte Perguntas frequentes sobre processadores de telemetria