Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Molte applicazioni e servizi registreranno le informazioni in file di testo invece di servizi di registrazione standard, ad esempio registro eventi di Windows o Syslog. Se questi dati vengono archiviati in formato JSON, possono essere raccolti da Monitoraggio di Azure in una regola di raccolta dati con un'origine dati log JSON personalizzata.
Ulteriori dettagli sulla creazione di DCR sono disponibili in Raccogliere dati con l'agente di Monitoraggio di Azure. Questo articolo fornisce dettagli aggiuntivi per il tipo di log JSON.
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 .
Configurare un'origine dati file JSON personalizzata
Creare la DCR usando il processo in Raccogliere dati dal client di macchina virtuale con Monitoraggio di Azure. Nella scheda Collect and deliver (Raccogli e recapita ) del DCR selezionare Custom JSON Logs (Log JSON personalizzati ) nell'elenco a discesa Tipo di origine dati .
Le opzioni disponibili nella configurazione dei log JSON 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. |
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. Per un esempio, vedere Trasformazione . |
Schema JSON | Proprietà da raccogliere dal file di log JSON e inviate alla tabella di destinazione. L'unica proprietà obbligatoria è TimeGenerated . Se questo valore non viene fornito dal file JSON, verrà usato il tempo di inserimento. Le altre colonne descritte nella tabella dell'area di lavoro Log Analytics non necessarie possono essere incluse e verranno popolate automaticamente. Tutte le altre proprietà popolano le colonne nella tabella con lo stesso nome. Verificare che le proprietà che corrispondono alle colonne della tabella usino lo stesso tipo di dati della colonna corrispondente.L'immagine precedente mostra uno schema JSON per il file JSON di esempio illustrato nei requisiti e nelle procedure consigliate per i file JSON |
Aggiungere destinazioni
I log JSON 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 JSON personalizzata. Se sono necessarie più destinazioni, creare più controller di dominio. Tenere presente, tuttavia, che invierà dati duplicati a ognuno di essi, con un costo aggiuntivo.
Requisiti e procedure consigliate per file JSON
Il file raccolto dall'agente di Monitoraggio di Azure deve soddisfare i requisiti seguenti:
- Il file deve essere archiviato nell'unità locale della macchina dell'agente nella directory monitorata.
- Ogni voce deve essere JSON Line (nota anche come JSONL o NDJSON) che è una singola riga di JSON e delimitata con una fine di riga. Il formato del corpo JSON non è supportato. Vedere l'esempio di seguito.
- 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 log JSON che può essere raccolto da Monitoraggio di Azure. Sono inclusi i campi , Time
Code
, Severity
,Module
e Message
.
{"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."}
Attenersi alle raccomandazioni seguenti per assicurarsi che non si verifichino perdite di dati o problemi di prestazioni:
- Non usare più di 10 directory 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 2 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
L'agente controlla tutti i file JSON nel disco locale che corrispondono al modello di nome specificato. Ogni voce viene raccolta mentre viene scritta nel log e quindi analizzata prima di essere inviata alla tabella specificata in un'area di lavoro Log Analytics. La tabella personalizzata nell'area di lavoro Log Analytics che riceverà i dati deve esistere prima di creare il Registro Azure Container.
Tutte le colonne della tabella che corrispondono al nome di un campo nei dati JSON analizzati verranno popolate con il valore della voce di log. La tabella seguente descrive le colonne obbligatorie e facoltative nella tabella dell'area di lavoro oltre alle colonne identificate nei dati JSON.
colonna | TIPO | Obbligatorio? | Descrizione |
---|---|---|---|
TimeGenerated |
data e ora | Sì | 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 dell'entrata del log. |
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. |
L'esempio seguente mostra una query che restituisce i dati di una tabella creata per il file JSON di esempio illustrato in precedenza. È stato raccolto usando un DCR con lo schema JSON di esempio illustrato in precedenza. Poiché i dati JSON non includono una proprietà per TimeGenerated
, viene usato il tempo di inserimento. Anche le Computer
colonne e FilePath
vengono popolate automaticamente.
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 dal file JSON di esempio precedente. 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": "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
Trasformazione
La trasformazione modifica potenzialmente il flusso in ingresso per filtrare i record o per modificare lo schema in modo che corrisponda alla tabella di destinazione. Se lo schema del flusso in ingresso è uguale alla tabella di destinazione, è possibile usare la trasformazione predefinita di source
. In caso contrario, modificare la sezione transformKql
del modello ARM con una query KQL che restituisce lo schema richiesto.
Nell'esempio precedente, ad esempio, la voce di log include un Time
campo che contiene l'ora di creazione della voce di log. Anziché archiviare questa proprietà come colonna separata nella tabella di destinazione, è possibile usare la trasformazione seguente per eseguire il mapping del valore della Time
proprietà a TimeGenerated
.
source | extend TimeGenerated = todatetime(Time) | project-away Time
Ciò comporta la query di log seguente. Si noti che la Time
colonna è vuota e il valore di tale proprietà viene usato per TimeGenerated
.
Risoluzione dei problemi
Seguire questa procedura se non si stanno raccogliendo dati dal log JSON 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 del flusso in ingresso nella regola di raccolta dati corrisponda allo schema nel file di log.
- 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
- Altre informazioni su agente di Monitoraggio di Azure.
- Altre informazioni su regole di raccolta dati.