Exemplos de transformações no Azure Monitor
As transformações no Azure Monitor permitem filtrar ou modificar dados de entrada antes de serem 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).
Reduza os custos de dados
Como é cobrado o custo de ingestão por todos os dados enviados para um espaço de trabalho do Log Analytics, você deseja filtrar todos os dados que não são necessários para reduzir seus custos.
Filtrar linhas de dados
Use uma instrução para filtrar dados where
de entrada que correspondam a requisitos específicos. Se o registro de entrada não corresponder à instrução, o registro não será enviado para o destino. No exemplo a seguir, apenas registros com uma severidade de Critical
são coletados.
source | where severity == "Critical"
Filtrar colunas de dados
Remova colunas da fonte de dados que não são necessárias para economizar nos custos de ingestão de dados. Use uma project
instrução para especificar as colunas em sua saída ou use project-away
para especificar apenas colunas a serem removidas. No exemplo a seguir, a RawData
coluna é removida da saída.
source | project-away RawData
Analisar dados importantes de uma coluna
Você pode ter uma coluna com dados importantes enterrados em texto excessivo. Guarde 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
para remover a coluna original.
Aviso
Consulte Dividir comandos de análise grande para obter dicas sobre como usar comandos de análise complexos.
No exemplo a seguir, a RequestContext
coluna contém JSON com o espaço de trabalho ResourceId. As parse_json
funções e split
são usadas para extrair o nome simples do espaço de trabalho. 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 linhas em seus dados que exigem recursos básicos de consulta para tabelas de logs básicas para um custo de ingestão mais baixo. Consulte Enviar dados para várias tabelas para obter detalhes sobre como enviar dados para várias tabelas.
Remover dados confidenciais
Você pode ter uma fonte de dados que envia informações que você não deseja que sejam armazenadas 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 contenham informações confidenciais. No exemplo a seguir, a ClientIP
coluna é 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 diferentes configurações de controle de acesso baseadas em função. Consulte Enviar dados para várias tabelas para obter detalhes sobre como enviar dados para várias tabelas.
Enriqueça dados
Use uma transformação para adicionar informações aos dados que fornecem contexto de negócios ou simplificam 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 extend
instrução 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 split
operador 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 Dividir comandos de análise grande para obter dicas sobre como usar comandos de análise complexos.