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 bidang JSON bersarang dengan ekspresi reguler.
Contoh: Mengurai bidang JSON bersarang
Cuplikan kode menunjukkan cara mengurai peristiwa log JSON 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 aliran VPC untuk mengekstrak ENI ke dalam bidang bernama. NetworkInterface
parse @message /(?<NetworkInterface>eni-.*?) / | display NetworkInterface, @message
catatan
Peristiwa log JSON diratakan selama konsumsi. Saat ini, mengurai bidang JSON bersarang dengan ekspresi glob tidak didukung. Anda hanya dapat mengurai peristiwa log JSON yang menyertakan tidak lebih dari 200 bidang peristiwa log. Saat Anda mengurai bidang JSON bersarang, Anda harus memformat ekspresi reguler dalam kueri agar sesuai dengan format peristiwa log JSON 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