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.