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. parse
mendukung 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 parse
dengan 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