Partilhar via


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.

Próximos passos