OpenSearch bahasa SQL - 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 SQL

Bagian ini berisi pengantar dasar untuk query CloudWatch Log menggunakan OpenSearch SQL. Ini memberikan opsi yang akrab jika Anda terbiasa bekerja dengan database relasional. OpenSearch SQL menawarkan subset fungsionalitas SQL, menjadikannya pilihan yang baik untuk melakukan kueri ad-hoc dan tugas analisis data. Dengan OpenSearch SQL, Anda dapat menggunakan perintah seperti SELECT, FROM, WHERE, GROUP BY, HAVING, dan berbagai perintah dan fungsi SQL lainnya. Anda dapat mengeksekusi JOINs di seluruh grup log, mengkorelasikan data di seluruh grup log menggunakan sub-kueri, dan menggunakan kumpulan kaya fungsi JSON, matematika, string, kondisional, dan SQL lainnya untuk melakukan analisis yang kuat pada data log dan keamanan.

Anda dapat menggunakan OpenSearch SQL hanya untuk kueri grup log di Kelas Log Standar. Saat memilih grup log mana yang akan ditanyakan, Anda dapat memilih satu grup log, kumpulan grup log yang berbagi awalan, atau memilih semua grup log

catatan

Tabel berikut mencantumkan perintah dan fungsi SQL yang didukung di CloudWatch Log Untuk informasi tentang semua perintah OpenSearch SQL termasuk sintaks, lihat perintah SQL yang didukung dalam Panduan Pengembang OpenSearch Layanan.

Perintah SQL yang didukung

catatan

Di kolom query contoh, ganti sesuai <logGroup> kebutuhan tergantung pada sumber data yang Anda kueri.

Perintah atau fungsi Kueri contoh Deskripsi

SELECT

SELECT `@message`, Operation FROM `LogGroupA`

Menampilkan nilai yang diproyeksikan.

FROM

SELECT `@message`, Operation FROM `LogGroupA`

Klausa bawaan yang menentukan tabel sumber atau tampilan untuk mengambil data, mendukung berbagai jenis gabungan dan subkueri.

WHERE

SELECT * FROM `LogGroupA` WHERE Operation = 'x'

Memfilter peristiwa log berdasarkan kriteria bidang yang disediakan.

GROUP BY

SELECT `@logStream`, COUNT(*) as log_count FROM `LogGroupA` GROUP BY `@logStream`

Grup mencatat peristiwa berdasarkan kategori dan menemukan rata-rata berdasarkan statistik.

MEMILIKI

SELECT `@logStream`, COUNT(*) as log_count FROM `LogGroupA` GROUP BY `@logStream` HAVING log_count > 100

Memfilter hasil berdasarkan kondisi pengelompokan.

ORDER BY

SELECT * FROM `LogGroupA` ORDER BY `@timestamp` DESC

Memesan hasil berdasarkan bidang dalam klausa ORDER BY. Anda dapat mengurutkan dalam urutan menurun atau naik.

BERGABUNG

SELECT A.`@message`, B.`@timestamp`FROM `LogGroupA` as A INNER JOIN `LogGroupB` as B ON A.`requestId` = B.`requestId`

Bergabung dengan hasil untuk dua tabel berdasarkan bidang umum. Inner JOIN atau Left Outer Join harus ditentukan

LIMIT

Select * from `LogGroupA` limit 10

Membatasi hasil kueri yang ditampilkan ke baris N pertama.

Fungsi string

SELECT upper(Operation) , lower(Operation), Operation FROM `LogGroupA`

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

Fungsi tanggal

SELECT current_date() as today, date_add(current_date(), 30) as thirty_days_later, last_day(current_date()) as month_end FROM `LogGroupA`

Fungsi bawaan untuk menangani dan mengubah data tanggal dan stempel waktu dalam kueri SQL. Misalnya, date_add, date_format, datediff, dan current_date.

Fungsi kondisional

SELECT Operation, IF(Error > 0, 'High', 'Low') as error_category FROM `LogGroupA`;

Fungsi bawaan yang melakukan tindakan berdasarkan kondisi tertentu, atau yang mengevaluasi ekspresi secara kondisional. Misalnya, CASE dan IF.

Fungsi Aggegrate

SELECT AVG(bytes) as bytesWritten FROM `LogGroupA`

Fungsi bawaan yang melakukan perhitungan pada beberapa baris untuk menghasilkan nilai ringkasan tunggal. Misalnya, SUM, COUNT, AVG, MAX, dan MIN.

Fungsi JSON

SELECT get_json_object(json_column, '$.name') as name FROM `LogGroupA`

Fungsi bawaan untuk mengurai, mengekstrak, memodifikasi, dan menanyakan data berformat JSON dalam kueri SQL (misalnya, from_json, to_json, get_json_object, json_tuple) yang memungkinkan manipulasi struktur JSON dalam kumpulan data.

Fungsi array

SELECT scores, size(scores) as length, array_contains(scores, 90) as has_90 FROM `LogGroupA`;

Fungsi bawaan untuk bekerja dengan kolom tipe array dalam kueri SQL, memungkinkan operasi seperti mengakses, memodifikasi, dan menganalisis data array (misalnya, size, explode, array_contains).

Fungsi jendela

SELECT field1, field2, RANK() OVER (ORDER BY field2 DESC) as field2Rank FROM `LogGroupA`;

Fungsi bawaan yang melakukan perhitungan di serangkaian baris tertentu yang terkait dengan baris (jendela) saat ini, memungkinkan operasi seperti peringkat, total berjalan, dan rata-rata bergerak. Misalnya, ROW_NUMBER, RANK, LAG, dan LEAD

Fungsi konversi

SELECT CAST('123' AS INT) as converted_number, CAST(123 AS STRING) as converted_string FROM `LogGroupA`

Fungsi bawaan untuk mengonversi data dari satu jenis ke jenis lainnya dalam kueri SQL, memungkinkan transformasi tipe data dan konversi format. Misalnya, CAST, TO_DATE, TO_TIMESTAMP, dan BINARY.

Fungsi predikat

SELECT scores, size(scores) as length, array_contains(scores, 90) as has_90 FROM `LogGroupA`;

Fungsi bawaan yang mengevaluasi kondisi dan mengembalikan nilai boolean (benar/salah) berdasarkan kriteria atau pola yang ditentukan. Misalnya, IN, LIKE, BETHER, IS NULL, dan EXISTS.

Pilih beberapa grup log

SELECT lg1.field1, lg1.field2 from `logGroups( logGroupIdentifier: ['LogGroup1', 'LogGroup2'])` as lg1 where lg1.field3= "Success"

Memungkinkan Anda menentukan beberapa grup log dalam pernyataan SELECT

SQL yang didukung untuk multi-log-group kueri

Untuk mendukung kasus penggunaan untuk menanyakan beberapa grup log di SQL, Anda dapat menggunakan perintah. logGroups Dengan menggunakan sintaks ini, Anda dapat menanyakan beberapa grup log dengan menentukannya dalam perintah FROM.

Sintaksis:

`logGroups( logGroupIdentifier: ['LogGroup1','LogGroup2', ...'LogGroupn'] )

Dalam sintaks ini, Anda dapat menentukan hingga 50 grup log dalam logGroupIdentifier parameter. Untuk mereferensikan grup log di akun pemantauan, gunakan ARNs alih-alih LogGroup nama.

Contoh kueri:

SELECT LG1.Column1, LG1.Column2 from `logGroups( logGroupIdentifier: ['LogGroup1', 'LogGroup2'] )` as LG1 WHERE LG1.Column1 = 'ABC'

Sintaks berikut yang melibatkan beberapa grup log setelah FROM pernyataan TIDAK didukung saat menanyakan CloudWatch Log.

SELECT Column1, Column2 FROM 'LogGroup1', 'LogGroup2', ...'LogGroupn' WHERE Column1 = 'ABC'

Pembatasan

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

  • Anda hanya dapat menyertakan satu JOIN dalam pernyataan SELECT.

  • Hanya satu tingkat subkueri bersarang yang didukung.

  • Beberapa kueri pernyataan yang dipisahkan oleh titik dua (;) tidak didukung.

  • Kueri yang berisi nama bidang yang identik tetapi berbeda hanya dalam kasus (seperti field1 dan FIELD1) tidak didukung.

    Misalnya, kueri berikut tidak didukung:

    Select AWSAccountId, AwsAccountId from LogGroup

    Namun, kueri berikut didukung karena nama bidang (@logStream) identik di kedua grup log:

    Select a.`@logStream`, b.`@logStream` from Table A INNER Join Table B on a.id = b.id
  • Fungsi dan ekspresi harus beroperasi pada nama bidang dan menjadi bagian dari pernyataan SELECT dengan grup log yang ditentukan dalam klausa FROM.

    Misalnya, kueri ini tidak didukung:

    SELECT cos(10) FROM LogGroup

    Kueri ini didukung:

    SELECT cos(field1) FROM LogGroup
  • Saat menggunakan perintah SQL atau PPL, lampirkan bidang tertentu di backticks agar berhasil menanyakannya. Backticks diperlukan untuk bidang dengan karakter khusus (non-alfabet dan non-numerik). Misalnya, lampirkan, @messageOperation.Export, dan Test::Field di backticks. Anda tidak perlu melampirkan bidang dengan nama abjad murni di backticks.

    Contoh kueri dengan bidang sederhana:

    SELECT SessionToken, Operation, StartTime FROM `LogGroup-A` LIMIT 1000;

    Kueri serupa dengan backticks ditambahkan:

    SELECT `@SessionToken`, `@Operation`, `@StartTime` FROM `LogGroup-A` LIMIT 1000;