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

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

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 gruppi di acquisizione denominati (?<name>...) per definire i campi estratti.

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

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

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

parse fieldName logfmt as alias

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

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 di campi JSON

Da utilizzare json field=fieldName 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.

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