Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Muitos aplicativos e serviços registrarão informações em arquivos de texto em vez de serviços de log padrão, como o Log de Eventos do Windows ou o Syslog. Se esses dados forem armazenados no formato JSON, eles poderão ser coletados pelo Azure Monitor em uma DCR (regra de coleta de dados) com uma fonte de dados de Logs JSON Personalizados.
Os detalhes para a criação da DCR são fornecidos em Coleta de dados com o Agente do Azure Monitor. Este artigo fornece detalhes adicionais para o tipo de logs JSON.
Observação
Para trabalhar diretamente com a definição de DCR ou implantar com outros métodos, como modelos do ARM, consulte exemplos de DCR (regra de coleta de dados) no Azure Monitor.
Pré-requisitos
Além dos pré-requisitos listados em Coletar dados do cliente de máquina virtual com o Azure Monitor, você precisa de uma tabela personalizada em um workspace do Log Analytics para receber os dados. Consulte a tabela de workspaces do Log Analytics para obter detalhes sobre os requisitos desta tabela.
Configurar a fonte de dados de arquivo JSON personalizada
Crie o DCR usando o processo em Coletar dados do cliente de máquina virtual com o Azure Monitor. Na guia Coletar e entregar do DCR, selecione Logs JSON personalizados no menu suspenso Tipo de fonte de dados.
As opções disponíveis na configuração de Logs JSON Personalizados são descritas na tabela a seguir.
| Configurações | Descrição |
|---|---|
| Padrão do arquivo | Identifica o local e o nome dos arquivos de log no disco local. Utilize um caractere curinga para nomes de arquivo que variam, por exemplo, quando um novo arquivo é criado a cada dia com um novo nome. Você pode inserir vários padrões de arquivo separados por vírgulas. Você pode usar curingas (*) no nome do arquivo e no nome da pasta de primeiro nível, apenas acima do nome do arquivo. Exemplos: - C:\Logs\MyLog.txt - C:\Logs\MyLog*.txt -C:\Logs\IIS*\*.logs - C:\App01\AppLog.txt, C:\App02\AppLog.txt - /var/mylog.log - /var/mylog*.log |
| Nome da tabela | Nome da tabela de destino no Espaço de Trabalho do Log Analytics. |
| Transformar |
Transformação durante a ingestão para filtrar registros ou formatar os dados recebidos para a tabela de destino. Use source para deixar os dados de entrada inalterados. Consulte a Transformação para obter um exemplo. |
| Esquema JSON | Propriedades a serem coletadas do arquivo de log JSON e enviadas para a tabela de destino. A única propriedade necessária é TimeGenerated. Se esse valor não for fornecido pelo arquivo JSON, o tempo de ingestão será usado. As outras colunas descritas na tabela do workspace do Log Analytics que não são necessárias também podem ser incluídas e serão preenchidas automaticamente. Quaisquer outras propriedades preencherão as colunas da tabela com o mesmo nome. Verifique se as propriedades que correspondem às colunas de tabela usam o mesmo tipo de dados que a coluna correspondente.A imagem acima mostra um esquema JSON para o arquivo JSON de exemplo mostrado nos requisitos de arquivo JSON e práticas recomendadas |
Adicionar destinos
Os logs JSON personalizados só podem ser enviados para um workspace do Log Analytics onde são armazenados na tabela personalizada que você cria. Adicione um destino do tipo Logs do Azure Monitor e selecione um espaço de trabalho do Log Analytics. Você só pode adicionar um único workspace a um DCR para uma fonte de dados de log JSON personalizada. Se você precisar de vários destinos, crie vários DCRs. No entanto, lembre-se de que isso enviará dados duplicados para cada um, o que resultará em custos adicionais.
Requisitos de arquivo JSON e práticas recomendadas
O arquivo que o agente do Azure Monitor está coletando deve atender aos seguintes requisitos:
- O arquivo deve ser armazenado na unidade local do computador do agente no diretório que está sendo monitorado.
- Cada entrada deve ser linha JSON (também conhecida como JSONL ou NDJSON), que é uma única linha de JSON e delineada com um fim de linha. Não há suporte para o formato de corpo JSON. Confira o exemplo abaixo.
- O arquivo deve usar a codificação ASCII ou UTF-8. Não há suporte para outros formatos, como UTF-16.
- Novos registros devem ser acrescentados ao final do arquivo e não substituir registros antigos. A substituição causará perda de dados.
Veja a seguir um exemplo de um arquivo de log JSON típico que pode ser coletado pelo Azure Monitor. Isso inclui os campos: Time, , Code, SeverityeModuleMessage .
{"Time":"2025-03-07 13:17:34","Code":1423,"Severity":"Error","Module":"Sales","Message":"Unable to connect to pricing service."}
{"Time":"2025-03-07 13:18:23","Code":1420,"Severity":"Information","Module":"Sales","Message":"Pricing service connection established."}
{"Time":"2025-03-07 15:45:13","Code":2011,"Severity":"Warning","Module":"Procurement","Message":"Module failed and was restarted."}
{"Time":"2025-03-07 15:53:31","Code":4100,"Severity":"Information","Module":"Data","Message":"Daily backup complete."}
Siga as seguintes recomendações para garantir que você não tenha problemas de perda de dados ou desempenho:
- Não direcione mais de 10 diretórios com arquivos de registro. A sondagem de muitos diretórios leva a um desempenho ruim.
- Limpe continuamente os arquivos de log no diretório monitorado. O acompanhamento de vários arquivos de log pode aumentar o uso da CPU e da memória do agente. Aguarde pelo menos dois dias para dar tempo suficiente para que todos os logs sejam processados.
- Não renomeie um arquivo que corresponda ao padrão de verificação de arquivo para outro nome que também corresponda ao padrão de verificação de arquivo. Isso fará com que dados duplicados sejam ingeridos.
- Não renomeie nem copie arquivos de log grandes que correspondam ao padrão de verificação de arquivo no diretório monitorado. Se for necessário, não exceda 50 MB por minuto.
Tabela do espaço de trabalho do Log Analytics
O agente observa todos os arquivos json no disco local que correspondam ao padrão de nome especificado. Cada entrada é coletada conforme é gravada no log e analisada antes de ser enviada para a tabela especificada em um workspace do Log Analytics. A tabela personalizada no workspace do Log Analytics que receberá os dados deve existir antes de criar o DCR.
Todas as colunas na tabela que correspondem ao nome de um campo nos dados Json analisados serão preenchidas com o valor da entrada de log. A tabela a seguir descreve as colunas obrigatórias e opcionais na tabela do workspace, além das colunas identificadas em seus dados JSON.
| Coluna | Tipo | Necessário? | Descrição |
|---|---|---|---|
TimeGenerated |
datetime | Sim | Esta coluna contém o tempo em que o registro foi gerado e é necessário em todas as tabelas. Esse valor será preenchido automaticamente com a hora em que o registro for adicionado ao espaço de trabalho do Log Analytics. Você pode substituir esse valor usando uma transformação para definir TimeGenerated como um valor da entrada de log. |
Computer |
cadeia | Não | Se a tabela incluir essa coluna, ela será preenchida com o nome do computador do qual a entrada de log foi coletada. |
FilePath |
cadeia | Não | Se a tabela incluir essa coluna, ela será preenchida com o caminho para o arquivo de log do qual a entrada de log foi coletada. |
O exemplo a seguir mostra uma consulta retornando os dados de uma tabela criada para o arquivo JSON de exemplo mostrado acima. Ele foi coletado usando um DCR com o esquema JSON de exemplo mostrado acima. Como os dados JSON não incluem uma propriedade para TimeGenerated, o tempo de ingestão é usado. As colunas Computer e FilePath também são preenchidas automaticamente.
Criar tabela personalizada
Se a tabela de destino ainda não existir, você deverá criá-la antes de criar o DCR. Consulte Criar uma tabela personalizada para diferentes métodos para criar uma tabela. Por exemplo, você pode usar o script do PowerShell a seguir para criar uma tabela personalizada para receber os dados do arquivo JSON de exemplo acima. Este exemplo também adiciona as colunas opcionais.
$tableParams = @'
{
"properties": {
"schema": {
"name": "{TableName}_CL",
"columns": [
{
"name": "TimeGenerated",
"type": "dateTime"
},
{
"name": "Computer",
"type": "string"
},
{
"name": "FilePath",
"type": "string"
},
{
"name": "Time",
"type": "dateTime"
},
{
"name": "Code",
"type": "int"
},
{
"name": "Severity",
"type": "string"
},
{
"name": "Module",
"type": "string"
},
{
"name": "Message",
"type": "string"
}
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{WorkspaceName}/tables/{TableName}_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
Transformação
A transformação potencialmente modifica o fluxo de entrada para filtrar registros ou modificar o esquema para corresponder à tabela de destino. Se o esquema do fluxo de entrada for o mesmo que a tabela de destino, você poderá usar a transformação padrão de source. Caso contrário, modifique a transformKql seção do modelo do ARM com uma consulta KQL que retorna o esquema necessário.
Por exemplo, no exemplo acima, a entrada de log tem um Time campo que contém a hora em que a entrada de log foi criada. Em vez de armazená-lo como uma coluna separada na tabela de destino, você pode usar a transformação a seguir para mapear o valor da Time propriedade para TimeGenerated.
source | extend TimeGenerated = todatetime(Time) | project-away Time
Isso resultaria na consulta de log a seguir. Observe que a Time coluna está em branco e o valor dessa propriedade é usado para TimeGenerated.
Resolução de problemas
Siga as etapas a seguir se você não estiver coletando dados do log JSON esperado.
- Verifique se os dados estão sendo gravados no arquivo de log que está sendo coletado.
- Verifique se o nome e o local do arquivo de log correspondem ao padrão de arquivo especificado.
- Verifique se o esquema do fluxo de entrada na DCR corresponde ao esquema no arquivo de log.
- Verifique se o esquema da tabela de destino corresponde ao fluxo de entrada ou se você tem uma transformação que converterá o fluxo de entrada no esquema correto.
- Consulte Verificar operação para verificar se o agente está operacional e se os dados estão sendo recebidos.
Próximas etapas
- Saiba mais sobre o Agente do Azure Monitor.
- Saiba mais sobre as regras de coleta de dados.