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 em uma máquina virtual registrarão informações em arquivos de texto em vez de serviços de log padrão, como log de eventos do Windows ou Syslog. É possível coletar logs de texto personalizados de máquinas virtuais usando uma regra de coleta de dados (DCR) com uma fonte de dados de Logs de Texto Personalizados.
Os detalhes para a criação do DCR são fornecidos na coleta de dados do cliente de VM com o Azure Monitor. Esse artigo fornece detalhes adicionais para o tipo de fonte de dados Logs de Texto Personalizados.
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. Observe que não há suporte para Aarch64 alma8 e rocky8.
Configurar fonte de dados de arquivo de texto personalizado
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 de texto personalizados no menu suspenso Tipo de fonte de dados.
As opções disponíveis na configuração Logs de texto 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 caracteres curinga no nome do arquivo e no nome da pasta de primeiro nível acima apenas 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. Essa tabela já deve existir. |
| Delimitador de registro | Indica o delimitador entre entradas de log.
TimeStamp é o único valor permitido atual. Isso procura uma data no formato especificado timeFormat para identificar o início de um novo registro. Se nenhuma data no formato especificado for encontrada, o fim da linha será usado. Consulte os formatos de hora para obter mais detalhes. |
| Formato de marca temporal | O formato de hora usado no arquivo de log, conforme descrito em formatos de tempo abaixo. |
| 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 e enviados para a RawData coluna. Consulte arquivos de log delimitados para obter um exemplo de como usar uma transformação. |
Adicionar destinos
Os logs de texto 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 Azure Monitor Logs e selecione um espaço de trabalho do Log Analytics. Você só pode adicionar um único espaço de trabalho a um DCR para uma fonte de dados de log de texto 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.
Formatos de hora
A tabela a seguir descreve os formatos de tempo com suporte na timeFormat configuração do DCR. Se um tempo com o formato especificado for incluído na entrada de log, ele será usado para identificar uma nova entrada de log. Se nenhuma data no formato especificado for encontrada, o final da linha será usado como delimitador. Consulte arquivos de log de várias linhas para obter mais descrições sobre como essa configuração é usada.
| Formato de horário | Exemplo |
|---|---|
ISO 8601
1 |
2024-10-29T18:28:34Z |
yyyy-MM-ddTHH:mm:ssk |
2024-10-29T18:28:34Z 2024-10-29T18:28:34+01:11 |
YYYY-MM-DD HH:MM:SS |
2024-10-29 18:28:34 |
M/D/YYYY HH:MM:SS AM/PM |
29/10/2024 06:28:34 PM |
Mon DD, YYYY HH:MM:SS |
29 de outubro de 2024 18:28:34 |
yyMMdd HH:mm:ss |
241029 18:28:34 |
ddMMyy HH:mm:ss |
291024 18:28:34 |
MMM d HH:mm:ss |
29 de outubro 18:28:34 |
dd/MMM/yyyy:HH:mm:ss zzz |
14/out/2024:18:28:34 -00 |
1 Não há suporte para timestamps ISO 8601 com precisão de fração decimal/subsegundo.
Requisitos de arquivo de texto e práticas recomendadas
O arquivo coletado pelo Azure Monitor deve atender aos seguintes requisitos:
- O arquivo deve ser armazenado na unidade local do computador do agente no diretório que está sendo monitorado.
- 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 texto personalizado típico que pode ser coletado pelo Azure Monitor. Embora cada linha comece com uma data, isso não é necessário, pois o fim da linha será usado para identificar cada entrada se nenhuma data for encontrada.
2024-06-21 19:17:34,1423,Error,Sales,Unable to connect to pricing service.
2024-06-21 19:18:23,1420,Information,Sales,Pricing service connection established.
2024-06-21 21:45:13,2011,Warning,Procurement,Module failed and was restarted.
2024-06-21 23:53:31,4100,Information,Data,Nightly 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 permitir 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
Cada entrada no arquivo de log é coletada à medida que é criada e enviada para a tabela especificada em um espaço de trabalho do Log Analytics. A tabela personalizada no workspace do Log Analytics que receberá os dados deve existir antes de criar o DCR.
A tabela a seguir descreve as colunas obrigatórias e opcionais na tabela do workspace. A tabela pode incluir outras colunas, mas elas não serão preenchidas, a menos que você analise os dados com uma transformação, conforme descrito em arquivos de log delimitados.
| Coluna | Tipo | Obrigató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. |
RawData |
cadeia | Sim 1 | A entrada de log inteira em uma única coluna. Você pode usar uma transformação se quiser dividir esses dados em várias colunas antes de enviar para a tabela. |
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. |
1 A tabela não precisará incluir uma RawData coluna se você usar uma transformação para analisar os dados em várias colunas.
Quando coletados usando configurações padrão, os dados do arquivo de log de exemplo mostrado acima aparecerão da seguinte maneira quando recuperados com uma consulta de log.
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 de um log de texto personalizado. 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": "RawData",
"type": "string"
}
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/MyTable_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
Arquivos de log de várias linhas
Alguns arquivos de log podem conter entradas que abrangem várias linhas. Se cada entrada de log começar com uma data, essa data poderá ser usada como delimitador para definir cada entrada de log. Nesse caso, as linhas extras serão unidas na RawData coluna.
Por exemplo, o arquivo de texto no exemplo anterior pode ser formatado da seguinte maneira:
2024-06-21 19:17:34,1423,Error,Sales,
Unable to connect to pricing service.
2024-06-21 19:18:23,1420,Information,Sales,
Pricing service connection established.
2024-06-21 21:45:13,2011,Warning,Procurement,
Module failed and was restarted.
2024-06-21 23:53:31,4100,Information,Data,
Nightly backup complete.
Se o formato YYYY-MM-DD HH:MM:SS de carimbo de data/hora for usado no DCR, os dados serão coletados da mesma forma que o exemplo anterior. As linhas extras seriam incluídas na RawData coluna. Se outro formato de carimbo de data/hora for usado que não corresponda à data na entrada de log, cada entrada será coletada como dois registros separados.
Arquivos de log delimitados
Muitos arquivos de log de texto têm entradas com colunas delimitadas por um caractere, como uma vírgula. Em vez de enviar a entrada inteira para a RawData coluna, você pode analisar os dados em colunas separadas para que cada uma possa ser preenchida na tabela de destino. Use uma transformação com a função de divisão para executar essa análise.
O arquivo de texto de exemplo mostrado acima é delimitado por vírgula e os campos podem ser descritos como: Time, , Code, Severity, e ModuleMessage. Para analisar esses dados em colunas separadas, adicione cada uma das colunas à tabela de destino e adicione a seguinte transformação ao DCR.
Importante
Antes de adicionar essa transformação ao DCR, você deve adicionar essas colunas à tabela de destino. Você pode modificar o script do PowerShell acima para incluir as colunas adicionais quando a tabela é criada. Ou use o portal do Azure conforme descrito em Adicionar ou excluir uma coluna personalizada para adicionar as colunas a uma tabela existente.
Os detalhes notáveis da consulta de transformação incluem o seguinte:
- A consulta gera propriedades que correspondem a um nome de coluna na tabela de destino.
- Este exemplo renomeia a
Timepropriedade no arquivo de log para que esse valor seja usado paraTimeGenerated. Se isso não foi fornecido, entãoTimeGeneratedseria preenchido com o tempo de ingestão. - Como
splitretorna dados dinâmicos, você deve usar funções comotostringetointpara converter os dados no tipo escalar correto.
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])
Recuperar esses dados com uma consulta de log retornaria os seguintes resultados.
Resolução de problemas
Siga as etapas a seguir se você não estiver coletando dados do log de texto que está esperando.
- 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 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.