Compartilhar via


Transformações de exemplo no Azure Monitor

As transformações no Azure Monitor permitem que você filtre ou modifique os dados recebidos antes que eles sejam enviados para um espaço de trabalho do Log Analytics. Este artigo fornece consultas de exemplo para cenários comuns que você pode usar para começar a criar suas próprias transformações. Consulte Criar uma transformação no Azure Monitor para obter detalhes sobre como testar essas transformações e adicioná-las a uma regra de coleta de dados (DCR).

Reduzir custos de dados

Como você é cobrado pelo custo de ingestão de todos os dados enviados a um workspace do Log Analytics, filtre aqueles que são desnecessários para reduzir os custos.

Filtrar linhas de dados

Use uma instrução where para filtrar dados de entrada que correspondam a requisitos específicos. Se o registro recebido não corresponder à instrução, esse registro não será enviado para o destino. No exemplo a seguir, somente os registros com uma gravidade de Critical são coletados.

source | where severity == "Critical" 

Filtrar colunas de dados

Remova da fonte de dados as colunas que não são necessárias para economizar nos custos de ingestão de dados. Use uma instrução project para especificar as colunas em sua saída ou use project-away para especificar apenas colunas a serem removidas. No exemplo a seguir, a coluna RawData é removida da saída.

source | project-away RawData

Analisar dados importantes de uma coluna

Você pode ter uma coluna com dados importantes submersos em texto excessivo. Mantenha apenas os dados valiosos e remova o texto que não é necessário. Use funções de cadeia de caracteres como substring e extract para analisar os dados desejados. Você também pode analisar os dados usando parse ou split para quebrar uma única coluna em vários valores e selecionar o que você deseja. Em seguida, use extend para criar uma nova coluna com os dados analisados e project-away remover a coluna original.

Aviso

Consulte Quebrar comandos de análise grandes para obter dicas sobre como usar comandos de análise complexos.

No exemplo a seguir, a coluna RequestContext contém JSON com o ResourceId do workspace. As funções parse_json e split são usadas para extrair o nome simples do workspace. Uma nova coluna é criada para esse valor e as outras colunas são removidas.

source
| extend Context = parse_json(RequestContext)
| extend Workspace_CF = tostring(Context['workspaces'][0])
| extend WorkspaceName_CF = split(Workspace_CF,"/")[8]
| project-away RequestContext, Context, Workspace_CF

Enviar linhas para logs básicos

Envie as linhas em seus dados que exigem recursos básicos de consulta para tabelas de logs básicas a fim de obter um custo de ingestão menor. Consulte Enviar dados para várias tabelas para obter detalhes sobre como enviar dados para várias tabelas.

Remover dados confidenciais

É possível ter uma fonte de dados que envia informações que você não deseja armazenar por motivos de privacidade ou conformidade.

Filtrar informações confidenciais

Use as mesmas estratégias descritas em Reduzir custos de dados para filtrar linhas inteiras ou colunas específicas que contêm informações confidenciais. No exemplo a seguir, a coluna ClientIP é removida da saída.

source | project-away ClientIP

Ofuscar informações confidenciais

Use funções de cadeia de caracteres para substituir informações como dígitos em um endereço IP ou número de telefone por um caractere comum. O exemplo a seguir substitui o nome de usuário em um endereço de email por "*****".

source | extend Email = replace_string(Email,substring(Email,0,indexof(Email,"@")),"*****")

Enviar para uma tabela alternativa

Envie registros confidenciais para uma tabela alternativa com uma configuração diferente de controle de acesso baseado em função. Consulte Enviar dados para várias tabelas para obter detalhes sobre como enviar dados para várias tabelas.

Enriquecer dados

Use uma transformação para adicionar informações aos dados que fornecem contexto empresarial ou simplifica a consulta dos dados posteriormente. Use funções de cadeia de caracteres para extrair informações críticas de uma coluna e, em seguida, use a instrução extend para adicionar uma nova coluna à fonte de dados. O exemplo a seguir adiciona uma coluna identificando se um endereço IP em outra coluna é interno ou externo.

source | extend IpLocation = iff(split(ClientIp,".")[0] in ("10","192"), "Internal", "External")

Formatar dados para o destino

Você pode ter uma fonte de dados que envia dados em um formato que não corresponde à estrutura da tabela de destino. Use uma transformação para reformatar os dados para o esquema necessário.

Modificar esquema

Use comandos como extend e project para modificar o esquema dos dados de entrada para corresponder à tabela de destino. No exemplo a seguir, uma nova coluna chamada TimeGenerated é adicionada aos dados de saída usando uma função KQL para retornar a hora atual.

source | extend TimeGenerated = now()

Analisar dados

Use o operador split ou parse para analisar dados em várias colunas na tabela de destino. No exemplo a seguir, os dados de entrada têm uma coluna delimitada por vírgulas chamada RawData, que é dividida em colunas individuais para a tabela de destino.

source 
| project d = split(RawData,",") 
| project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])

Aviso

Consulte Quebrar comandos de análise grandes para obter dicas sobre como usar comandos de análise complexos.

Próximas etapas