OpenSearch Bahasa Pemrosesan Pipa (PPL) - CloudWatch Log Amazon

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

OpenSearch Bahasa Pemrosesan Pipa (PPL)

Bagian ini berisi pengantar dasar untuk menanyakan CloudWatch Log menggunakan OpenSearch PPL. Dengan PPL, Anda dapat mengambil, menanyakan, dan menganalisis data menggunakan perintah piped-together, sehingga lebih mudah untuk memahami dan menyusun kueri yang kompleks. Sintaksnya didasarkan pada pipa Unix, dan memungkinkan rantai perintah untuk mengubah dan memproses data. Dengan PPL, Anda dapat memfilter dan mengumpulkan data, dan menggunakan serangkaian matematika, string, tanggal, kondisional, dan fungsi lainnya yang kaya untuk analisis.

Termasuk SOURCE dalam kueri PPL adalah cara yang berguna untuk menentukan indeks bidang grup log, dan sumber data untuk disertakan dalam kueri saat Anda menggunakan AWS CLI atau API untuk membuat kueri. SOURCEPerintah hanya didukung di API AWS CLI dan, bukan di CloudWatch konsol. Saat Anda menggunakan CloudWatch konsol untuk memulai kueri, Anda menggunakan antarmuka konsol untuk menentukan grup log dan nama dan jenis sumber data.

Gunakan aws:fieldIndex untuk mengembalikan data yang diindeks saja, dengan memaksa kueri untuk memindai hanya grup log yang diindeks pada bidang yang Anda tentukan dalam kueri. Grup log yang relevan dipilih secara otomatis, berdasarkan bidang yang ditentukan dalam filterIndex perintah. Ini mengurangi volume yang dipindai dengan melewatkan grup log yang tidak memiliki peristiwa log yang berisi bidang yang ditentukan dalam kueri, dan hanya memindai grup log yang cocok dengan nilai yang ditentukan dalam kueri untuk indeks bidang ini. Gunakan aws:fieldIndex untuk menentukan nama bidang, bersama dengan nama bidang dan nilai dalam perintah sumber untuk menanyakan hanya data yang diindeks yang berisi bidang dan nilai yang ditentukan. Untuk informasi selengkapnya, lihat Buat indeks bidang untuk meningkatkan kinerja kueri dan mengurangi volume pemindaian

Anda dapat menggunakan OpenSearch PPL untuk kueri grup log di Kelas Log Standar.

catatan

Untuk informasi tentang semua perintah kueri OpenSearch PPL yang didukung di CloudWatch Log dan informasi terperinci tentang sintaks dan pembatasan, lihat perintah PPL yang didukung di Panduan Pengembang OpenSearch Layanan.

Untuk informasi tentang bahasa kueri lain yang dapat Anda gunakan lihat, Wawasan CloudWatch Log, SQL OpenSearch Layanan, dan CloudWatch Metrics Insights

Perintah atau fungsi Kueri contoh Deskripsi

ladang

fields field1, field2

Menampilkan satu set bidang yang membutuhkan proyeksi.

join

LEFT JOIN left=l, right=r on l.id = r.id `join_right_lg` | fields l.field_1, r.field_2

Bergabung dengan dua kumpulan data bersama-sama.

di mana

where field1="success" | where field2 != "i-023fe0a90929d8822" | fields field3, field4, field5,field6 | head 1000

Memfilter data berdasarkan kondisi yang Anda tentukan.

AWS: FieldIndex

source = [`aws:fieldIndex`="region", `region` = "us-west-2"] | where status = 200 | head 10

Mengembalikan data yang diindeks saja, dengan memaksa kueri untuk memindai hanya grup log yang diindeks pada bidang yang Anda tentukan dalam kueri.

statistik

stats count(), count(field1), min(field1), max(field1), avg(field1) by field2 | head 1000

Melakukan agregasi dan perhitungan

mengurai

parse field1 ".*/(?<field2>[^/]+$)" | where field2 = "requestId" | fields field1, field2 | head 1000

Mengekstrak pola ekspresi reguler (regex) dari string dan menampilkan pola yang diekstraksi. Pola yang diekstraksi dapat digunakan lebih lanjut untuk membuat bidang baru atau menyaring data.

menyortir

stats count(), count(field1), min(field1) as field1Alias, max(`field1`), avg(`field1`) by field2 | sort -field1Alias | head 1000

Urutkan hasil yang ditampilkan dengan nama bidang. Gunakan sort - FieldName untuk mengurutkan dalam urutan menurun.

eval

eval field2 = field1 * 2 | fields field1, field2 | head 20

Memodifikasi atau memproses nilai bidang dan menyimpannya di bidang yang berbeda. Ini berguna untuk memodifikasi kolom secara matematis, menerapkan fungsi string ke kolom, atau menerapkan fungsi tanggal ke kolom.

ganti nama

rename field2 as field1 | fields field1;

Mengganti nama satu atau beberapa bidang di hasil pencarian.

kepala

fields `@message` | head 20

Membatasi hasil kueri yang ditampilkan ke baris N pertama.

atas

top 2 field1 by field2

Menemukan nilai yang paling sering untuk sebuah bidang.

dedup

dedup field1 | fields field1, field2, field3

Menghapus entri duplikat berdasarkan bidang yang Anda tentukan.

langka

rare field1 by field2

Menemukan nilai yang paling tidak sering dari semua bidang dalam daftar bidang.

subkueri

where field_1 IN [ search source= `subquery_lg` | fields field_2 ] | fields id, field_1

Melakukan kueri yang kompleks dan bersarang dalam pernyataan PPL Anda.

garis tren

trendline sma(2, field1) as field1Alias

Menghitung rata-rata bergerak bidang.

EventStats

eventstats sum(field1) by field2

Memperkaya data acara Anda dengan statistik ringkasan yang dihitung. Ini menganalisis bidang tertentu dalam acara Anda, menghitung berbagai ukuran statistik, dan kemudian menambahkan hasil ini ke setiap peristiwa asli sebagai bidang baru.

membesar

eval tags_array_string = json_extract(`@message`, '$.tags')| eval tags_array = json_array(json_extract(tags_string, '$[0]'), json_extract(tags_string, '$[1]'))| expand tags_array as color_tags

Memecah bidang yang berisi beberapa nilai menjadi baris terpisah, membuat baris baru untuk setiap nilai di bidang yang ditentukan.

fillnull

fields `@timestamp`, error_code, status_code | fillnull using status_code = "UNKNOWN", error_code = "UNKNOWN"

Mengisi bidang null dengan nilai yang Anda berikan. Ini dapat digunakan dalam satu atau lebih bidang.

meratakan

eval metadata_struct = json_object('size', json_extract(metadata_string, '$.size'), 'color', json_extract(metadata_string, '$.color')) | flatten metadata_struct as (meta_size, meta_color)

Meratakan bidang. Bidang harus dari jenis ini: struct<?,?> atauarray<struct<?,?>>.

cidrmatch

where cidrmatch(ip, '2003:db8::/32') | fields ip

Memeriksa apakah alamat IP yang ditentukan berada dalam kisaran CIDR yang diberikan.

ringkasan lapangan

where field1 != 200 | fieldsummary includefields= field1 nulls=true

Menghitung statistik dasar untuk setiap bidang (hitungan, hitungan berbeda, min, maks, rata-rata, stddev, dan rata-rata).

grok

grok email '.+@%{HOSTNAME:host}' | fields email, host

Mem-parsing bidang teks dengan pola grok dan menambahkan hasilnya ke hasil pencarian.

Fungsi string

eval field1Len = LENGTH(field1) | fields field1Len

Fungsi bawaan di PPL yang dapat memanipulasi dan mengubah data string dan teks dalam kueri PPL. Misalnya, mengonversi kasus, menggabungkan string, mengekstraksi bagian, dan membersihkan teks.

Fungsi Tanggal-Waktu

eval newDate = ADDDATE(DATE('2020-08-26'), 1) | fields newDate

Fungsi bawaan untuk menangani dan mengubah data tanggal dan stempel waktu dalam kueri PPL. Misalnya, date_add, date_format, datediff, date-sub, timestampadd, timestampdiff, current_timezone, utc_timestamp, dan current_date.

Fungsi syarat

eval field2 = isnull(field1) | fields field2, field1, field3

Fungsi bawaan yang memeriksa kondisi bidang tertentu, dan mengevaluasi ekspresi secara kondisional. Misalnya, jika field1 adalah null, kembalikan field2.

Fungsi matematika

eval field2 = ACOS(field1) | fields field1

Fungsi bawaan untuk melakukan perhitungan dan transformasi matematis dalam kueri PPL. Misalnya, abs (nilai absolut), bulat (angka bulat), sqrt (akar kuadrat), pow (perhitungan daya), dan ceil (membulatkan ke bilangan bulat terdekat).

CryptoGraphic fungsi

eval crypto = MD5(field)| head 1000

Untuk menghitung hash dari bidang yang diberikan

Fungsi JSON

eval valid_json = json('[1,2,3,{"f1":1,"f2":[5,6]},4]') | fields valid_json

Fungsi bawaan untuk menangani JSON termasuk array, ekstraksi, dan validasi. Misalnya, json_object, json_array, to_json_string, json_array_length, json_extract, json_keys, dan json_valid.

Lingkup kueri

Menyertakan SUMBER dalam kueri adalah cara yang berguna untuk menentukan grup log yang akan disertakan dalam kueri saat Anda menggunakan API AWS CLI atau untuk membuat kueri. Perintah SOURCE hanya didukung di API AWS CLI dan, bukan di CloudWatch konsol. Saat Anda menggunakan CloudWatch konsol untuk memulai kueri, Anda menggunakan antarmuka konsol untuk menentukan grup log dan nama dan jenis sumber data.

Perintah sumber PPL sekarang mendukung beberapa cara untuk menentukannya:

  1. Grup log

  2. Indeks bidang - Baru

  3. Sumber dan tipe data - Baru

Grup Log

Pemilihan sumber Grup Log dapat digunakan ketika pelanggan mengetahui grup log yang tepat yang perlu dicari

source = [lg:`/aws/lambda/my-function`] | where status = 200 | head 10

Indeks Lapangan

Pemilihan sumber berbasis indeks bidang mengurangi jumlah data yang ditanyakan dengan membatasi hasil hanya pada data yang diindeks saat filter Anda menargetkan bidang yang telah diindeks. Grup log yang relevan dipilih secara otomatis, berdasarkan bidang yang ditentukan dalam filterIndex perintah. Untuk informasi selengkapnya tentang indeks bidang dan cara membuatnya, lihat Membuat indeks bidang untuk meningkatkan kinerja kueri dan mengurangi volume pemindaian.

Gunakan aws:fieldIndex untuk mengembalikan data yang diindeks saja, dengan memaksa kueri untuk memindai hanya grup log yang diindeks pada bidang yang Anda tentukan dalam kueri. Untuk grup log ini yang diindeks di bidang ini, selanjutnya mengoptimalkan kueri dengan melewatkan grup log yang tidak memiliki peristiwa log yang berisi bidang yang ditentukan dalam kueri untuk bidang yang diindeks. Selanjutnya mengurangi volume yang dipindai dengan mencoba memindai hanya peristiwa log dari grup log ini yang cocok dengan nilai yang ditentukan dalam kueri untuk indeks bidang ini. Untuk informasi selengkapnya tentang indeks bidang dan cara membuatnya, lihat Membuat indeks bidang untuk meningkatkan kinerja kueri dan mengurangi volume pemindaian.

Dalam PPL, aws:fieldIndex digunakan untuk menentukan pasangan nilai kunci mana yang harus diperlakukan sebagai indeks. Sintaksnya adalah sebagai berikut

source = [`aws:fieldIndex`="region", `region` = "us-west-2"] | where status = 200 | head 10

dimana,

  1. `aws:fieldIndex`="region"mengidentifikasi wilayah sebagai Indeks bidang.

    1. Catatan: Alih-alih = pelanggan dapat menggunakan IN untuk menentukan beberapa indeks (contoh di bawah)

  2. `region`="us-west-2"mengidentifikasi kondisi filter yang akan diterapkan

    1. Catatan: Alih-alih = pelanggan dapat menggunakan IN untuk menentukan beberapa nilai (contoh di bawah)

Pelanggan dapat menentukan beberapa FieldIndex sebagai berikut

source = [`aws:fieldIndex` IN ("status", "region"), `status` = 200, `region` IN ("us-west-2", "us-east-1")] | head 10

Sumber dan Jenis Data

Sumber data dan pemilihan sumber berbasis tipe dapat digunakan ketika pelanggan mengetahui sumber data pasti mana yang perlu ditanyakan. Kueri ini dijalankan melalui satu atau lebih grup log yang berisi sumber dan jenis data yang ditentukan.

source = [ds:`data_source.type`] | where status = 200 | head 10

PPL yang didukung untuk kueri sumber data

Untuk mendukung kasus penggunaan kueri sumber data di PPL, Anda dapat menggunakan klausa pemilih sumber dinamis. Dengan menggunakan sintaks ini, Anda dapat meminta sumber data dengan menentukannya dalam perintah pencarian. Anda dapat menentukan hingga 10 sumber data.

Sintaksis

source=[ds:`DataSource1.Type1`, ds:`DataSource2.Type2`, ...ds:`DataSourcen.Typen`]

Contoh kueri

search source=[ds:`DataSource1.Type1`, ds:`DataSource2.Type2`] | fields field1, field2

Contoh gabungan

Pelanggan dapat menentukan semua operator pemilihan sumber dalam urutan apa pun & hasilnya akan menjadi persimpangan dari semua kondisi yang diterapkan.

Misalnya,/aws/lambda/my-function-1 mungkin berisi beberapa sumber & tipe data termasuk berbagai indeks, ketika kueri berikut dijalankan, hasil yang dikembalikan hanya akan memiliki peristiwa sumber dan tipe DataSource 1.Type1 dan cocok dengan kriteria 'status' = 200.

search source=[ ds:`DataSource1.Type1`, lg:`/aws/lambda/my-function-1`, `aws:fieldIndex` IN ("status"), `status` = 200 ]

Pembatasan

Pembatasan berikut berlaku saat Anda menggunakan OpenSearch PPL untuk melakukan kueri di Wawasan CloudWatch Log.

  • Anda tidak dapat menggunakan perintah bergabung atau subquery dengan kueri sumber data.