View a markdown version of this page

parse - CloudWatch Registri Amazon

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

parseUtilizzalo per estrarre dati da un campo di registro e creare campi estratti che puoi elaborare nella tua 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 ai campi denominati con. as

Sintassi

parse fieldName "pattern" as alias1, 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

parse fieldName /regex/

Utilizzate i gruppi di acquisizione denominati (?<name>...) per definire i campi estratti.

Esempi

Usa i gruppi di acquisizione denominati per estrarre i campi

parse @message /user=(?<user2>.*?), method:(?<method2>.*?), latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, @user2

Utilizza un gruppo di acquisizione denominato per estrarre l'ENI da un registro di flusso VPC

parse @message /(?<NetworkInterface>eni-.*?) / | display NetworkInterface, @message

Multi-match mode

Usa 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

parse fieldName /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

parse logfmtDa utilizzare 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

parse fieldName logfmt as alias

Il risultato è una mappa a cui si accede con la 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

parse csvDa utilizzare per analizzare le righe di CSV-formatted registro in campi strutturati. Ogni valore separato da virgole viene assegnato all'alias corrispondente.

Sintassi

parse fieldName csv as alias1, 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 del campo JSON

Da utilizzare json field=fieldName per l'estrazione esplicita di JSON concatenati da un campo oggetto precedentemente analizzato. Ciò consente di estrarre chiavi annidate da un campo strutturato senza dover analizzare nuovamente il messaggio non elaborato.

Sintassi

json field=fieldName "key.subkey" as alias

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