View a markdown version of this page

mengurai - CloudWatch Log Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

mengurai

Gunakan parse untuk mengekstrak data dari bidang log dan membuat bidang yang diekstraksi yang dapat Anda proses dalam kueri Anda. parsePerintah ini mendukung empat mode: ekspresi glob, ekspresi reguler, logfmt, dan CSV.

Jika fieldName dihilangkan, digunakan @message secara default. Anda dapat mengurai dari bidang bernama dengan menentukan nama bidang sebagai argumen pertama.

Jika peristiwa log tidak cocok dengan pola yang ditentukan, Anda masih melihatnya di hasil, tetapi tanpa bidang yang diekstraksi.

Modus glob

Gunakan wildcard (*) sebagai placeholder untuk nilai yang ingin Anda ekstrak, dan tetapkan ke bidang bernama. as

Sintaksis

parse fieldName "pattern" as alias1, alias2

Jumlah * wildcard harus sama dengan jumlah alias.

Contoh

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

Parse dirantai

Ekstrak bidang, lalu uraikan bidang yang diekstraksi lebih lanjut.

parse @message "url=*" as url | parse url "/api/*/users/*" as apiVersion, userId | display apiVersion, userId

Mode Regex

Gunakan ekspresi reguler dengan grup tangkapan bernama untuk mengekstrak bidang. Untuk informasi tentang sintaks ekspresi reguler, lihatSintaks ekspresi reguler (regex) yang didukung.

Sintaksis

parse fieldName /regex/

Gunakan grup tangkapan bernama (?<name>...) untuk menentukan bidang yang diekstraksi.

Contoh

Gunakan grup tangkapan bernama untuk mengekstrak bidang

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

Gunakan grup tangkapan bernama untuk mengekstrak ENI dari log aliran VPC

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

Multi-match modus

Gunakan mode multi-match untuk mengekstrak semua kecocokan ekspresi reguler dari bidang, menghasilkan beberapa baris per peristiwa log. Tambahkan kata kunci multi setelah pola regex.

Sintaksis

parse fieldName /regex/ multi

Contoh

Ekstrak semua alamat IP dari baris log (multi-match)

parse @message /(\d+\.\d+\.\d+\.\d+)/ as ip_addr multi | stats count(*) by ip_addr

Modus Logfmt

Gunakan parse logfmt untuk mengurai baris log berformat logfmt menjadi pasangan nilai kunci. Logfmt adalah format logging terstruktur di mana setiap baris berisi pasangan yang dipisahkan spasikey=value.

Sintaksis

parse fieldName logfmt as alias

Hasilnya adalah peta yang Anda akses dengan notasi titik (misalnya,lf.level,lf.msg).

Contoh

parse @message logfmt as lf | filter lf.level = "error" | display lf.msg, lf.duration
parse @message logfmt as lf | stats count(*) by lf.host

Modus CSV

Gunakan parse csv untuk mengurai baris CSV-formatted log ke dalam bidang terstruktur. Setiap nilai yang dipisahkan koma ditetapkan ke alias yang sesuai.

Sintaksis

parse fieldName csv as alias1, alias2, alias3

Contoh

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

Ekstraksi lapangan JSON

Gunakan json field=fieldName untuk ekstraksi JSON berantai eksplisit dari bidang objek yang sebelumnya diurai. Ini memungkinkan Anda untuk mengekstrak kunci bersarang dari bidang terstruktur tanpa mengurai ulang pesan mentah.

Sintaksis

json field=fieldName "key.subkey" as alias

Contoh

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