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. parsemendukung mode glob menggunakan wildcard, dan ekspresi reguler. Untuk informasi tentang sintaks ekspresi reguler, lihatSintaks ekspresi reguler (regex) yang didukung.

Anda dapat mengurai JSON bidang bersarang dengan ekspresi reguler.

Contoh: Mengurai bidang bersarang JSON

Cuplikan kode menunjukkan cara mengurai peristiwa JSON log yang telah diratakan selama konsumsi.

{'fieldsA': 'logs', 'fieldsB': [{'fA': 'a1'}, {'fA': 'a2'}]}

Cuplikan kode menunjukkan kueri dengan ekspresi reguler yang mengekstrak nilai fieldsB untuk fieldsA dan membuat bidang yang diekstraksi dan. fld array

parse @message "'fieldsA': '*', 'fieldsB': ['*']" as fld, array

Dinamakan menangkap kelompok

Bila Anda menggunakan parsedengan ekspresi reguler, Anda dapat menggunakan grup penangkap bernama untuk menangkap pola ke dalam bidang. Sintaksnya adalah parse @message (?<Name>pattern).

Contoh berikut menggunakan grup menangkap pada log VPC aliran untuk mengekstrak ENI ke dalam bidang bernamaNetworkInterface.

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

JSONperistiwa log diratakan selama konsumsi. Saat ini, mengurai JSON bidang bersarang dengan ekspresi glob tidak didukung. Anda hanya dapat mengurai peristiwa JSON log yang menyertakan tidak lebih dari 200 bidang peristiwa log. Saat mengurai JSON bidang bersarang, Anda harus memformat ekspresi reguler dalam kueri agar sesuai dengan format peristiwa JSON log Anda.

Contoh perintah parse

Gunakan ekspresi glob untuk mengekstrak bidang@user,@method, dan @latency dari bidang log @message dan kembalikan latensi rata-rata untuk setiap kombinasi unik dan. @method @user

parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user

Gunakan ekspresi reguler untuk mengekstrak bidang@user2,@method2, dan @latency2 dari bidang log @message dan kembalikan latensi rata-rata untuk setiap kombinasi unik @method2 dan@user2.

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

Mengekstrak bidangloggingTime, loggingType danloggingMessage, memfilter ke log peristiwa yang berisi ERROR atau INFO string, dan kemudian hanya menampilkan loggingMessage dan loggingType bidang untuk peristiwa yang berisi ERROR string.

FIELDS @message | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage | FILTER loggingType IN ["ERROR", "INFO"] | DISPLAY loggingMessage, loggingType = "ERROR" as isError