Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
parse
parseUtilizzatelo per estrarre dati da un campo di registro e creare campi estratti da elaborare nella query. Il parse comando supporta quattro modalità: espressioni glob, espressioni regolari, logfmt e CSV.
Se fieldName viene omesso, @message viene utilizzato per impostazione predefinita. È possibile eseguire l'analisi da qualsiasi campo denominato specificando il nome del campo come primo argomento.
Se un evento di registro non corrisponde al modello specificato, lo vedrai comunque nei risultati, ma senza i campi estratti.
modalità Glob
Usa i caratteri jolly (*) come segnaposto per i valori che desideri estrarre e assegnali a campi denominati con. as
Sintassi
parsefieldName"pattern" asalias1,alias2
Il numero di caratteri * jolly deve essere uguale al numero di alias.
Esempi
parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user
parse @logStream "*/*/*/*" as env, service, instance, shard | stats count(*) by env, service
Analisi concatenata
Estrai un campo, quindi analizza ulteriormente il campo estratto.
parse @message "url=*" as url | parse url "/api/*/users/*" as apiVersion, userId | display apiVersion, userId
Modalità Regex
Usa un'espressione regolare con gruppi di acquisizione denominati per estrarre i campi. Per informazioni sulla sintassi delle espressioni regolari, vedereSintassi delle espressioni regolari (regex) supportate.
Sintassi
parsefieldName/regex/
Utilizzate gruppi di acquisizione denominati (?< per definire i campi estratti.name>...)
Esempi
Usa gruppi di acquisizione denominati per estrarre i campi
parse @message /user=(?<user2>.*?), method:(?<method2>.*?), latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, @user2
Usa un gruppo di acquisizione denominato per estrarre l'ENI da un log di flusso VPC
parse @message /(?<NetworkInterface>eni-.*?) / | display NetworkInterface, @message
Multi-match mode
Utilizza la modalità multi-match per estrarre tutte le corrispondenze di un'espressione regolare da un campo, producendo più righe per evento di registro. Aggiungi la parola chiave multi dopo il modello regex.
Sintassi
parsefieldName/regex/ multi
Esempi
Estrai tutti gli indirizzi IP da una riga di registro (multi-match)
parse @message /(\d+\.\d+\.\d+\.\d+)/ as ip_addr multi | stats count(*) by ip_addr
modalità Logfmt
Si usa parse logfmt per analizzare le righe di registro in formato logfmt in coppie chiave-valore. Logfmt è un formato di registrazione strutturato in cui ogni riga contiene coppie separate da spazi. key=value
Sintassi
parsefieldNamelogfmt asalias
Il risultato è una mappa a cui si accede con notazione a punti (ad esempio,). lf.level lf.msg
Esempi
parse @message logfmt as lf | filter lf.level = "error" | display lf.msg, lf.duration
parse @message logfmt as lf | stats count(*) by lf.host
modalità CSV
Utilizzato parse csv per analizzare le righe di CSV-formatted registro in campi strutturati. Ogni valore separato da virgole viene assegnato all'alias corrispondente.
Sintassi
parsefieldNamecsv asalias1,alias2,alias3
Esempi
parse @message csv as timestamp, level, message | filter level = "ERROR" | display timestamp, message
parse @message csv as host, method, path, status, duration | stats avg(duration) by method
Estrazione di campi JSON
Da utilizzare json field= per l'estrazione JSON concatenata esplicita da un campo oggetto analizzato in precedenza. Ciò consente di estrarre chiavi annidate da un campo strutturato senza dover analizzare nuovamente il messaggio non elaborato.fieldName
Sintassi
json field=fieldName"key.subkey" asalias
Esempi
parse @message /(?<payload>\{.*\})/ as payload | json field=payload "user.name" as username | display username
json field=requestContext "identity.sourceIp" as caller_ip | stats count(*) by caller_ip