Komponen kueri dan sintaks di CloudWatch Metrics Insights - Amazon CloudWatch

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

Komponen kueri dan sintaks di CloudWatch Metrics Insights

CloudWatch Sintaks Metrics Insights adalah sebagai berikut.

SELECT FUNCTION(metricName) FROM namespace | SCHEMA(...) [ WHERE labelKey OPERATOR labelValue [AND ... ] ] [ GROUP BY labelKey [ , ... ] ] [ ORDER BY FUNCTION() [ DESC | ASC ] ] [ LIMIT number ]

Klausa yang mungkin dalam kueri Wawasan Metrik adalah sebagai berikut. Tidak ada kata kunci yang peka huruf besar/kecil, tetapi pengidentifikasi seperti nama metrik, namespace, dan dimensi peka huruf besar/kecil.

SELECT

Wajib. Menentukan fungsi yang akan digunakan untuk agregat pengamatan di setiap bucket waktu (ditentukan oleh periode yang disediakan). Juga menentukan nama metrik untuk kueri.

Nilai yang valid untuk FUNCTIONadalahAVG,COUNT,MAX,MIN, danSUM.

  • AVG menghitung rata-rata observasi yang dicocokkan berdasarkan kueri.

  • COUNT mengembalikan jumlah observasi yang dicocokkan berdasarkan kueri.

  • MAX mengembalikan nilai maksimal observasi yang dicocokkan berdasarkan kueri.

  • MIN mengembalikan nilai minimal observasi yang dicocokkan berdasarkan kueri.

  • SUM menghitung jumlah observasi yang dicocokkan berdasarkan kueri.

FROM

Wajib. Menentukan sumber metrik. Anda dapat menentukan namespace metrik yang berisi metrik yang akan ditanyakan, atau fungsi tabel. SCHEMA Contoh namespace metrik meliputi"AWS/EC2", "AWS/Lambda", dan namespace metrik yang telah Anda buat untuk metrik kustom Anda.

Namespace metrik yang menyertakan / atau karakter lain yang bukan huruf, angka, atau garis bawah harus dikelilingi dengan tanda kutip ganda. Untuk informasi selengkapnya, lihat Apa yang membutuhkan tanda kutip atau karakter pelarian?.

SCHEMA

Fungsi tabel opsional yang dapat digunakan dalam FROMklausa. Gunakan SCHEMAuntuk mencatat hasil kueri hanya ke metrik yang sama persis dengan daftar dimensi, atau metrik yang tidak memiliki dimensi.

Jika Anda menggunakan SCHEMAklausa, klausa harus berisi setidaknya satu argumen, dan argumen pertama ini harus berupa namespace metrik yang ditanyakan. Jika Anda menentukan hanya SCHEMAdengan argumen namespace ini, hasilnya akan tercakup ke hanya metrik yang tidak memiliki dimensi apa pun.

Jika Anda menentukan SCHEMAdengan argumen tambahan, argumen tambahan setelah argumen namespace harus kunci label. Kunci label harus berupa nama dimensi. Jika Anda menentukan satu atau beberapa kunci label ini, hasilnya akan tercakup hanya ke metrik yang memiliki kumpulan dimensi yang tepat. Urutan kunci label ini tidak masalah.

Sebagai contoh:

  • SELECTAVG(CPUUtilization) FROM "AWS/EC2" cocok dengan semua CPUUtilization metrik di AWS/EC2 namespace, apa pun dimensinya, dan mengembalikan satu deret waktu gabungan.

  • SELECTAVG(CPUUtilization) FROM SCHEMA (”AWS/EC2“) hanya cocok dengan CPUUtilization metrik di AWS/EC2 namespace yang tidak memiliki dimensi yang ditentukan.

  • SELECTAVG(CPUUtilization) FROM SCHEMA (”AWS/EC2“, InstanceId) hanya cocok dengan CPUUtilization metrik yang dilaporkan CloudWatch dengan tepat satu dimensi,InstanceId.

  • SELECTSUM(RequestCount) FROM SCHEMA (” AWS /Application ELB “ LoadBalancer,, AvailabilityZone) hanya cocok dengan RequestCount metrik yang dilaporkan CloudWatch dari AWS/ApplicationELB dengan tepat dua dimensi, LoadBalancer dan. AvailabilityZone

WHERE

Tidak wajib. Memfilter hasil hanya ke metrik yang cocok dengan ekspresi yang Anda tentukan menggunakan nilai label tertentu untuk satu kunci label atau lebih. Misalnya, WHERE InstanceType = 'c3.4xlarge' memfilter hasil hanya ke tipe c3.4xlarge instance, dan! WHERE InstanceType = 'c3.4xlarge' memfilter hasil ke semua jenis instance kecuali. c3.4xlarge

Saat Anda menjalankan kueri dalam sebuah akun pemantauan, Anda dapat memilih WHERE AWS.AccountId untuk membatasi hasilnya hanya untuk akun yang Anda tentukan. Sebagai contoh, metrik kueri WHERE AWS.AccountId=444455556666 hanya dari akun 444455556666. Untuk membatasi kueri Anda hanya pada metrik-metrik yang ada di akun pemantauan itu sendiri, gunakan WHERE AWS.AccountId=CURRENT_ACCOUNT_ID().

Nilai label harus selalu diapit dengan tanda kutip tunggal.

Operator yang didukung

WHEREKlausul mendukung operator berikut:

  • Nilai label = harus cocok dengan string yang ditentukan.

  • Nilai label != tidak harus cocok dengan string yang ditentukan.

  • ANDKedua kondisi yang ditentukan harus benar agar cocok. Anda dapat menggunakan beberapa ANDkata kunci untuk menentukan dua atau lebih kondisi.

GROUPOLEH

Tidak wajib. Kelompokkan hasil kueri ke dalam beberapa deret waktu, masing-masing sesuai dengan nilai yang berbeda untuk kunci atau beberapa kunci label yang ditentukan. Misalnya, menggunakan GROUP BY InstanceId mengembalikan deret waktu yang berbeda untuk setiap nilai InstanceId. Menggunakan GROUP BY ServiceName, Operation membuat satu deret waktu yang berbeda untuk setiap kemungkinan kombinasi dari nilai-nilai ServiceName danOperation.

Dengan klausa GROUPBY, secara default hasilnya diurutkan dalam urutan menaik abjad, menggunakan urutan label yang ditentukan dalam klausa BY. GROUP Untuk mengubah urutan hasil, tambahkan klausa ORDERBY ke kueri Anda.

Saat menjalankan kueri dalam sebuah akun pemantauan, Anda dapat menggunakan GROUP BY AWS.AccountId untuk mengelompokkan hasilnya berdasarkan akun asal mereka.

catatan

Jika beberapa metrik yang cocok tidak menyertakan kunci label tertentu yang ditentukan dalam klausa GROUPBY, grup null bernama Other dikembalikan. Sebagai contoh, jika Anda menentukan GROUP BY ServiceName, Operation dan beberapa metrik yang dikembalikan tidak menyertakan ServiceName sebagai dimensi, maka metrik tersebut ditampilkan memiliki Other sebagai nilai untuk ServiceName.

ORDEROLEH

Tidak wajib. Menentukan urutan yang akan digunakan untuk deret waktu yang dikembalikan, jika kueri mengembalikan lebih dari satu deret waktu. Urutan didasarkan pada nilai yang ditemukan oleh FUNCTIONyang Anda tentukan dalam klausa ORDERBY. FUNCTIONIni digunakan untuk menghitung nilai skalar tunggal dari setiap deret waktu yang dikembalikan, dan nilai itu digunakan untuk menentukan urutan.

Anda juga menentukan apakah akan menggunakan urutan naik ASCatau turun. DESC Jika Anda menghilangkan ini, defaultnya adalah naik ASC.

Misalnya, menambahkan klausa ORDER BY MAX() DESC memerintahkan hasil dengan titik data maksimum yang diamati dalam rentang waktu, dalam urutan menurun: artinya deret waktu yang memiliki titik data maksimum tertinggi dikembalikan terlebih dahulu.

Fungsi yang valid untuk digunakan dalam klausa ORDERBY adalahAVG(),,COUNT(), MAX()MIN(), danSUM().

Jika Anda menggunakan klausa ORDERBY dengan LIMITklausa, kueri yang dihasilkan adalah kueri “N Teratas”. ORDERBY juga berguna untuk kueri yang mungkin mengembalikan sejumlah besar metrik, karena setiap kueri dapat mengembalikan tidak lebih dari 500 deret waktu. Jika kueri cocok dengan lebih dari 500 deret waktu, dan Anda menggunakan klausa ORDERBY, deret waktu diurutkan dan kemudian deret waktu 500 yang datang lebih dulu dalam urutan pengurutan adalah yang dikembalikan.

LIMIT

Tidak wajib. Membatasi jumlah deret waktu yang dikembalikan oleh kueri ke nilai yang Anda tentukan. Nilai maksimum yang dapat Anda tentukan adalah 500, dan kueri yang tidak menentukan a juga LIMITdapat mengembalikan tidak lebih dari 500 deret waktu.

Menggunakan LIMITklausa dengan klausa ORDERBY memberi Anda kueri “N Teratas”.

Apa yang membutuhkan tanda kutip atau karakter pelarian?

Dalam kueri, nilai label harus selalu dikurung dengan tanda kutip tunggal. Misalnya, SELECTMAX(CPUUtilization) FROM "AWS/EC2" WHERE AutoScalingGroupName = 'my-production-fleet'.

Namespace metrik, nama metrik, dan kunci label yang berisi karakter selain huruf, angka, dan garis bawah (_) harus dikurung dengan tanda kutip ganda. Misalnya, SELECTMAX(“My.Metric”).

Jika salah satu dari ini berisi tanda kutip ganda atau tanda kutip tunggal itu sendiri (sepertiBytes"Input"), Anda harus keluar dari setiap tanda kutip dengan garis miring terbalik, seperti pada SELECTAVG(“Bytes\" Input\ "”).

Jika namespace metrik, nama metrik, atau kunci label, berisi kata yang merupakan kata kunci cadangan dalam Metrics Insights, ini juga harus diapit dalam tanda kutip ganda. Sebagai contoh, jika Anda memiliki metrik yang disebut LIMIT, Anda akan menggunakan SELECT AVG("LIMIT"). Ini juga benar untuk mengapit namespace, nama metrik, atau label dalam tanda kutip ganda bahkan jika itu tidak menyertakan kata kunci yang dicadangkan.

Untuk daftar lengkap kata kunci yang disimpan, silakan lihat Kata kunci terpesan.

Bangun kueri kaya langkah demi langkah

Bagian ini menggambarkan membangun contoh lengkap yang menggunakan semua kemungkinan klausa, langkah demi langkah.

Kita mulai dengan kueri berikut, yang menggabungkan semua metrik RequestCount Penyeimbang Beban Aplikasi yang dikumpulkan dengan dimensi LoadBalancer dan AvailabilityZone.

SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)

Sekarang, jika kita ingin melihat metrik hanya dari penyeimbang beban tertentu, kita dapat menambahkan WHEREklausa untuk membatasi metrik yang dikembalikan hanya ke metrik di mana nilai dimensi berada. LoadBalancer app/load-balancer-1

SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE LoadBalancer = 'app/load-balancer-1'

Kueri sebelumnya menggabungkan metrik RequestCount dari semua Availability Zone untuk penyeimbang beban ini menjadi satu deret waktu. Jika kita ingin melihat deret waktu yang berbeda untuk setiap Availability Zone, kita dapat menambahkan klausa GROUPBY.

SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE LoadBalancer = 'app/load-balancer-1' GROUP BY AvailabilityZone

Berikutnya, kita mungkin ingin memesan hasil ini untuk melihat nilai tertinggi terlebih dahulu. Klausa ORDERBY berikut memerintahkan deret waktu dalam urutan menurun, dengan nilai maksimum yang dilaporkan oleh setiap deret waktu selama rentang waktu kueri:

SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE LoadBalancer = 'app/load-balancer-1' GROUP BY AvailabilityZone ORDER BY MAX() DESC

Akhirnya, jika kita terutama tertarik pada jenis kueri “Top N”, kita dapat menggunakan LIMITklausa. Contoh terakhir ini membatasi hasil deret waktu hanya dengan lima nilai MAX tertinggi.

SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE LoadBalancer = 'app/load-balancer-1' GROUP BY AvailabilityZone ORDER BY MAX() DESC LIMIT 5

Contoh kueri lintas akun

Contoh-contoh ini valid ketika dijalankan di akun yang disiapkan sebagai akun pemantauan dalam observabilitas CloudWatch lintas akun.

Contoh berikut mencari semua EC2 instance Amazon di akun sumber 123456789012 dan mengembalikan rata-rata.

SELECT AVG(CpuUtilization) FROM "AWS/EC2" WHERE AWS.AccountId ='123456789012'

Contoh berikut menjalankan kueri terhadap metrik CPUUtilization yang ada di AWS/EC2 di semua akun sumber terkait, dan mengelompokkan hasilnya berdasarkan ID akun dan tipe instans.

SELECT AVG(CpuUtilization) FROM "AWS/EC2" GROUP BY AWS.AccountId, InstanceType

Contoh berikut menjalankan kueri terhadap CPUUtilization di akun pemantauan itu sendiri.

SELECT AVG(CpuUtilization) FROM "AWS/EC2" WHERE AWS.AccountId = CURRENT_ACCOUNT_ID()