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
parsefieldName"pattern" asalias1,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
parsefieldName/regex/
Gunakan grup tangkapan bernama (?< untuk menentukan bidang yang diekstraksi.name>...)
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
parsefieldName/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
parsefieldNamelogfmt asalias
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
parsefieldNamecsv asalias1,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= 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.fieldName
Sintaksis
json field=fieldName"key.subkey" asalias
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