Condividi tramite


Raccogliere un file di testo dalla macchina virtuale con Monitoraggio di Azure

Molte applicazioni e servizi in una macchina virtuale registreranno informazioni in file di testo anziché servizi di registrazione standard, ad esempio registro eventi di Windows o Syslog. È possibile raccogliere log di testo personalizzati dalle macchine virtuali usando una regola di raccolta dati (DCR) con un'origine dati log di testo personalizzata .

Altri dettagli sulla creazione di regole di raccolta dati sono disponibili in Raccogliere dati dal client di macchina virtuale con Monitoraggio di Azure. Questo articolo fornisce dettagli aggiuntivi per il tipo di origine dati Log di testo personalizzati.

Annotazioni

Per usare direttamente la definizione DCR o distribuire con altri metodi, ad esempio i modelli ARM, consulta gli esempi di regole di raccolta dati in Monitoraggio di Azure.

Prerequisiti

Oltre ai prerequisiti elencati in Raccogliere dati dal client di macchine virtuali con Monitoraggio di Azure, è necessaria una tabella personalizzata in un'area di lavoro Log Analytics per ricevere i dati. Per informazioni dettagliate sui requisiti di questa tabella, vedere la tabella dell'area di lavoro Log Analytics . Si noti che Aarch64 non è supportato.

Configurare l'origine dati del file di testo personalizzata

Creare la DCR usando il processo in Raccogliere dati dal client di macchina virtuale con Monitoraggio di Azure. Nella scheda Raccogli e recapita del DCR, selezionare Log di testo personalizzati dall'elenco a discesa Tipo di origine dati.

Screenshot che mostra la configurazione della raccolta di file di testo.

Le opzioni disponibili nella configurazione Log di testo personalizzati sono descritte nella tabella seguente.

Impostazione Descrizione
Criterio di file Identifica il percorso e il nome di file di log nel disco locale. Usare un carattere jolly per nomi di file che variano, ad esempio quando viene creato un nuovo file ogni giorno con un nuovo nome. È possibile immettere più pattern di file separati da virgole.

Esempi:
- C:\Logs\MyLog.txt
- C:\Logs\MyLog*.txt
- C:\App01\AppLog.txt, C:\App02\AppLog.txt
- /var/mylog.log
- /var/mylog*.log
Nome della tabella Nome della tabella di destinazione nell'area di lavoro Log Analytics. Questa tabella deve già esistere.
Delimitatore di record Indica il delimitatore tra le voci di log. TimeStamp è l'unico valore consentito corrente. Cerca una data nel formato specificato in timeFormat per identificare l'inizio di un nuovo record. Se non viene trovata alcuna data nel formato specificato, viene utilizzata la fine della riga. Per altri dettagli, vedere Formati ora.
Formato del timestamp Formato ora usato nel file di log, come descritto in Formati ora riportati di seguito.
Trasformare Trasformazione in fase di inserimento per filtrare i record o per formattare i dati in ingresso per la tabella di destinazione. Usare source per lasciare invariati i dati in ingresso e inviati alla RawData colonna. Per un esempio di utilizzo di una trasformazione, vedere File di log delimitati .

Aggiungere destinazioni

I log di testo personalizzati possono essere inviati solo a un'area di lavoro Log Analytics in cui è archiviata nella tabella personalizzata creata. Aggiungere una destinazione di tipo Log di Monitoraggio di Azure e selezionare un'area di lavoro Log Analytics. È possibile aggiungere una singola area di lavoro a un record di dominio per un'origine dati di log di testo personalizzata. Se si hanno bisogno di più destinazioni, creare più DCR. Tenere presente, tuttavia, che invierà dati duplicati a ognuno di essi, con un costo aggiuntivo.

Screenshot che mostra la configurazione di una destinazione dei log di Azure Monitor in una regola di raccolta dati.

Formati di ora

Nella tabella seguente vengono descritti i formati di ora supportati nell'impostazione timeFormat del DCR. Se nella voce di log viene inclusa un'ora con il formato specificato, verrà usata per identificare una nuova voce di log. Se non viene trovata alcuna data nel formato specificato, la fine della riga viene utilizzata come delimitatore. Per altre informazioni sull'uso di questa impostazione, vedere File di log su più righe .

Formato orario Esempio
ISO 86011 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 10/29/2024 06:28:34 PM
Mon DD, YYYY HH:MM:SS 29 ottobre 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 ottobre 18:28:34
dd/MMM/yyyy:HH:mm:ss zzz 14 ottobre/2024:18:28:34 -00

1 Il timestamp ISO 8601 con precisione frazionaria/sottosecondo decimale non è supportato.

Requisiti e procedure consigliate per file di testo

Il file raccolto da Monitoraggio di Azure deve soddisfare i requisiti seguenti:

  • Il file deve essere archiviato nell'unità locale del computer agente nella directory monitorata.
  • Il file deve usare la codifica ASCII o UTF-8. Non sono supportati altri formati, ad esempio UTF-16.
  • I nuovi record devono essere aggiunti alla fine del file e non sovrascrivere i record precedenti. La sovrascrittura causerà la perdita di dati.

Di seguito è riportato un esempio di un tipico file di testo personalizzato che può essere raccolto da Monitoraggio di Azure. Anche se ogni riga inizia con una data, questa operazione non è necessaria perché la fine della riga verrà usata per identificare ogni voce se non viene trovata alcuna data.

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.

Attenersi alle raccomandazioni seguenti per assicurarsi che non si verifichino perdite di dati o problemi di prestazioni:

  • Non prendere di mira più di 10 cartelle con i file di log. Il polling di troppe directory comporta prestazioni scarse.
  • Pulire continuamente i file di log nella directory monitorata. Il rilevamento di molti file di log può aumentare l'utilizzo della CPU e della memoria dell'agente. Attendere almeno due giorni per consentire l'elaborazione di tutti i log.
  • Non rinominare un file che corrisponde al modello di analisi dei file con un altro nome che corrisponde anche al modello di analisi dei file. Ciò potrebbe causare l’inserimento di dati duplicati.
  • Non rinominare o copiare file di log di grandi dimensioni che corrispondono al modello di analisi dei file nella directory monitorata. Se necessario, non superare i 50 MB al minuto.

Tabella dell'area di lavoro Log Analytics

Ogni voce nel file di log viene raccolta in tempo reale durante la sua creazione e inviata alla tabella specificata in un'area di lavoro di Log Analytics. La tabella personalizzata nell'area di lavoro Log Analytics che riceverà i dati deve esistere prima di creare il DCR.

Nella tabella seguente vengono descritte le colonne obbligatorie e facoltative nella tabella dell'area di lavoro. La tabella può includere altre colonne, ma non verranno popolate a meno che non si analizzino i dati con una trasformazione come descritto in File di log delimitati.

colonna TIPO Obbligatorio? Descrizione
TimeGenerated data e ora Questa colonna contiene l'ora in cui il record è stato generato ed è necessario in tutte le tabelle. Questo valore verrà popolato automaticamente con l'ora in cui il record viene aggiunto all'area di lavoro Log Analytics. È possibile eseguire l'override di questo valore usando una trasformazione per impostare TimeGenerated su un valore dalla voce di log.
RawData corda 1 L'intera voce di log in una singola colonna. Se si desidera suddividere questi dati in più colonne prima dell'invio alla tabella, è possibile usare una trasformazione.
Computer corda NO Se la tabella include questa colonna, verrà popolata con il nome del computer da cui è stata raccolta la voce di log.
FilePath corda NO Se la tabella include questa colonna, verrà popolata con il percorso del file di log da cui è stata raccolta la voce di log.

1 La tabella non deve includere una colonna se si usa una RawData trasformazione per analizzare i dati in più colonne.

Quando vengono raccolte usando le impostazioni predefinite, i dati del file di log di esempio illustrato in precedenza vengono visualizzati come segue quando vengono recuperati con una query di log.

Screenshot che mostra la query di log che restituisce i risultati della raccolta di file predefinita.

Creare una tabella personalizzata

Se la tabella di destinazione non esiste già, è necessario crearla prima di creare il DCR. Vedere Creare una tabella personalizzata per metodi diversi per creare una tabella.

Ad esempio, è possibile usare lo script di PowerShell seguente per creare una tabella personalizzata per ricevere i dati da un log di testo personalizzato. In questo esempio vengono aggiunte anche le colonne facoltative.

$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

File di log su più righe

Alcuni file di log possono contenere voci che si estendono su più righe. Se ogni voce di log inizia con una data, questa data può essere usata come delimitatore per definire ogni voce di log. In questo caso, le righe aggiuntive verranno unite insieme nella RawData colonna .

Ad esempio, il file di testo nell'esempio precedente potrebbe essere formattato come segue:

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 il formato YYYY-MM-DD HH:MM:SS timestamp è utilizzato nel DCR, allora i dati verrebbero raccolti nello stesso modo dell'esempio precedente. Le righe aggiuntive verranno incluse nella RawData colonna . Se è stato usato un altro formato timestamp che non corrisponde alla data nella voce di log, ogni voce verrà raccolta come due record separati.

File di log delimitati

Molti file di log di testo hanno voci con colonne delimitate da un carattere, ad esempio una virgola. Anziché inviare l'intera voce alla RawData colonna, è possibile analizzare i dati in colonne separate in modo che ognuno possa essere popolato nella tabella di destinazione. Usare una trasformazione con la funzione split per eseguire questa analisi.

Il file di testo di esempio illustrato sopra è delimitato da virgole e i campi possono essere descritti come: Time, CodeSeverity, Module, e Message. Per analizzare questi dati in colonne separate, aggiungere ognuna delle colonne alla tabella di destinazione e aggiungere la trasformazione seguente a DCR.

Importante

Prima di aggiungere questa trasformazione al DCR, è necessario aggiungere queste colonne alla tabella di destinazione. È possibile modificare lo script di PowerShell precedente per includere le colonne aggiuntive al momento della creazione della tabella. In alternativa, usare il portale di Azure come descritto in Aggiungere o eliminare una colonna personalizzata per aggiungere le colonne a una tabella esistente.

I dettagli rilevanti della query di trasformazione includono quanto segue:

  • La query restituisce le proprietà che corrispondono a un nome di colonna nella tabella di destinazione.
  • In questo esempio la proprietà viene Time rinominata nel file di log in modo che questo valore venga usato per TimeGenerated. Se non è stato specificato, TimeGenerated verrà popolato con il tempo di inserimento.
  • Poiché split restituisce dati dinamici, è necessario usare funzioni come tostring e toint per convertire i dati nel tipo scalare corretto.
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])

Screenshot che mostra la configurazione della raccolta di file delimitati da virgole.

Il recupero di questi dati con una query di log restituirà i risultati seguenti.

Screenshot che mostra la query di log che restituisce i risultati di una raccolta di file delimitati da virgole.

Risoluzione dei problemi

Seguire questa procedura se non si stanno raccogliendo dati dal log di testo previsto.

  • Verificare che i dati vengano scritti nel file di log da raccogliere.
  • Verificare che il nome e il percorso del file di log corrispondano al pattern di file specificato.
  • Verificare che lo schema della tabella di destinazione corrisponda al flusso in ingresso o che sia presente una trasformazione che converta il flusso in ingresso nello schema corretto.
  • Vedere Verificare l'operazione per verificare se l'agente sia operativo e i dati vengano ricevuti.

Passaggi successivi