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
) FROMnamespace
| SCHEMA(...) [ WHERElabelKey
OPERATORlabelValue
[AND ... ] ] [ GROUP BYlabelKey
[ , ... ] ] [ ORDER BYFUNCTION
() [ DESC | ASC ] ] [ LIMITnumber
]
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 FUNCTIONadalah
AVG
,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 diAWS/EC2
namespace, apa pun dimensinya, dan mengembalikan satu deret waktu gabungan.SELECTAVG(CPUUtilization) FROM SCHEMA (”AWS/EC2“) hanya cocok dengan
CPUUtilization
metrik diAWS/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 dariAWS/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 kueriWHERE AWS.AccountId=444455556666
hanya dari akun444455556666
. Untuk membatasi kueri Anda hanya pada metrik-metrik yang ada di akun pemantauan itu sendiri, gunakanWHERE 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 nilaiInstanceId
. MenggunakanGROUP BY ServiceName, Operation
membuat satu deret waktu yang berbeda untuk setiap kemungkinan kombinasi dari nilai-nilaiServiceName
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 menentukanGROUP BY ServiceName, Operation
dan beberapa metrik yang dikembalikan tidak menyertakanServiceName
sebagai dimensi, maka metrik tersebut ditampilkan memilikiOther
sebagai nilai untukServiceName
. - 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 adalah
AVG()
,,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()