Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS CLI contoh untuk Performance Insights
Di bagian berikut, pelajari lebih lanjut tentang AWS Command Line Interface (AWS CLI) untuk Performance Insights dan gunakan AWS CLI contoh.
Topik
Bantuan bawaan AWS CLI untuk Performance Insights
Anda dapat melihat data Wawasan Performa menggunakan AWS CLI. Anda dapat melihat bantuan untuk AWS CLI perintah untuk Performance Insights dengan memasukkan yang berikut ini pada baris perintah.
aws pi help
Jika Anda belum menginstal, lihat Menginstal AWS CLI di Panduan AWS CLI Pengguna untuk informasi tentang menginstalnya. AWS CLI
Mengambil metrik penghitung
Tangkapan layar berikut menunjukkan dua bagan metrik penghitung dalam AWS Management Console.

Contoh berikut menunjukkan cara mengumpulkan data yang sama yang AWS Management Console digunakan untuk menghasilkan dua bagan metrik penghitung.
Untuk Linux, macOS, atau Unix:
aws pi get-resource-metrics \ --service-type RDS \ --identifier db-
ID
\ --start-time2018-10-30T00:00:00Z
\ --end-time2018-10-30T01:00:00Z
\ --period-in-seconds60
\ --metric-queries '[{"Metric": "os.cpuUtilization.user.avg" }, {"Metric": "os.cpuUtilization.idle.avg"}]'
Untuk Windows:
aws pi get-resource-metrics ^ --service-type RDS ^ --identifier db-
ID
^ --start-time2018-10-30T00:00:00Z
^ --end-time2018-10-30T01:00:00Z
^ --period-in-seconds60
^ --metric-queries '[{"Metric": "os.cpuUtilization.user.avg" }, {"Metric": "os.cpuUtilization.idle.avg"}]'
Anda juga dapat membaca perintah dengan lebih mudah dengan menentukan file untuk opsi --metrics-query
. Contoh berikut menggunakan file yang disebut query.json untuk opsi tersebut. File memiliki konten berikut.
[ { "Metric": "os.cpuUtilization.user.avg" }, { "Metric": "os.cpuUtilization.idle.avg" } ]
Jalankan perintah berikut untuk menggunakan file.
Untuk Linux, macOS, atau Unix:
aws pi get-resource-metrics \ --service-type RDS \ --identifier db-
ID
\ --start-time2018-10-30T00:00:00Z
\ --end-time2018-10-30T01:00:00Z
\ --period-in-seconds60
\ --metric-queries file://query.json
Untuk Windows:
aws pi get-resource-metrics ^ --service-type RDS ^ --identifier db-
ID
^ --start-time2018-10-30T00:00:00Z
^ --end-time2018-10-30T01:00:00Z
^ --period-in-seconds60
^ --metric-queries file://query.json
Contoh sebelumnya menentukan nilai-nilai berikut untuk opsi:
-
--service-type
—RDS
untuk Amazon RDS -
--identifier
– ID sumber daya untuk instans DB -
--start-time
dan--end-time
—DateTime
Nilai ISO 8601 untuk periode kueri, dengan beberapa format yang didukung
Ini akan dikueri selama rentang waktu satu jam:
-
--period-in-seconds
–60
untuk kueri per menit -
--metric-queries
– Rangkaian dua kueri, masing-masing hanya untuk satu metrik.Nama metrik menggunakan titik untuk mengklasifikasikan metrik dalam kategori yang berguna, dengan elemen terakhir sebagai fungsi. Dalam contoh, fungsinya adalah
avg
untuk setiap kueri. Seperti halnya Amazon CloudWatch, fungsi yang didukung adalahmin
max
,total
, danavg
.
Responsnya terlihat seperti berikut.
{ "Identifier": "db-XXX", "AlignedStartTime": 1540857600.0, "AlignedEndTime": 1540861200.0, "MetricList": [ { //A list of key/datapoints "Key": { "Metric": "os.cpuUtilization.user.avg" //Metric1 }, "DataPoints": [ //Each list of datapoints has the same timestamps and same number of items { "Timestamp": 1540857660.0, //Minute1 "Value": 4.0 }, { "Timestamp": 1540857720.0, //Minute2 "Value": 4.0 }, { "Timestamp": 1540857780.0, //Minute 3 "Value": 10.0 } //... 60 datapoints for the os.cpuUtilization.user.avg metric ] }, { "Key": { "Metric": "os.cpuUtilization.idle.avg" //Metric2 }, "DataPoints": [ { "Timestamp": 1540857660.0, //Minute1 "Value": 12.0 }, { "Timestamp": 1540857720.0, //Minute2 "Value": 13.5 }, //... 60 datapoints for the os.cpuUtilization.idle.avg metric ] } ] //end of MetricList } //end of response
Respons ini memiliki Identifier
, AlignedStartTime
, dan AlignedEndTime
. B nilai --period-in-seconds
adalah 60
, waktu mulai dan akhir telah disesuaikan dengan menit. Jika --period-in-seconds
adalah 3600
, waktu mulai dan akhir akan disesuaikan dengan jam.
MetricList
dalam respons memiliki sejumlah entri, masing-masing dengan entri Key
dan DataPoints
. Masing-masing DataPoint
memiliki Timestamp
dan Value
. Masing-masing daftar Datapoints
memiliki 60 poin data karena kueri tersebut adalah untuk data per menit selama satu jam, dengan Timestamp1/Minute1
, Timestamp2/Minute2
, dan seterusnya, hingga Timestamp60/Minute60
.
Karena kueri tersebut adalah untuk dua metrik penghitung yang berbeda, ada dua elemen dalam respons MetricList
.
Mengambil rata-rata muatan DB untuk peristiwa tunggu teratas
Contoh berikut adalah query yang sama yang AWS Management Console digunakan untuk menghasilkan grafik garis area bertumpuk. Contoh ini mengambil db.load.avg
selama satu jam terakhir dengan muatan yang dibagi berdasarkan tujuh peristiwa tunggu teratas. Perintah ini sama dengan perintah dalam Mengambil metrik penghitung. Namun, file query.json berisi konten berikut.
[ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.wait_event", "Limit": 7 } } ]
Jalankan perintah berikut.
Untuk Linux, macOS, atau Unix:
aws pi get-resource-metrics \ --service-type RDS \ --identifier db-
ID
\ --start-time2018-10-30T00:00:00Z
\ --end-time2018-10-30T01:00:00Z
\ --period-in-seconds60
\ --metric-queries file://query.json
Untuk Windows:
aws pi get-resource-metrics ^ --service-type RDS ^ --identifier db-
ID
^ --start-time2018-10-30T00:00:00Z
^ --end-time2018-10-30T01:00:00Z
^ --period-in-seconds60
^ --metric-queries file://query.json
Contoh ini menentukan metrik db.load.avg
dan GroupBy
dari tujuh peristiwa tunggu teratas. Untuk detail tentang nilai yang valid untuk contoh ini, lihat DimensionGroupdi Referensi Performance Insights API.
Responsnya terlihat seperti berikut.
{ "Identifier": "db-XXX", "AlignedStartTime": 1540857600.0, "AlignedEndTime": 1540861200.0, "MetricList": [ { //A list of key/datapoints "Key": { //A Metric with no dimensions. This is the total db.load.avg "Metric": "db.load.avg" }, "DataPoints": [ //Each list of datapoints has the same timestamps and same number of items { "Timestamp": 1540857660.0, //Minute1 "Value": 0.5166666666666667 }, { "Timestamp": 1540857720.0, //Minute2 "Value": 0.38333333333333336 }, { "Timestamp": 1540857780.0, //Minute 3 "Value": 0.26666666666666666 } //... 60 datapoints for the total db.load.avg key ] }, { "Key": { //Another key. This is db.load.avg broken down by CPU "Metric": "db.load.avg", "Dimensions": { "db.wait_event.name": "CPU", "db.wait_event.type": "CPU" } }, "DataPoints": [ { "Timestamp": 1540857660.0, //Minute1 "Value": 0.35 }, { "Timestamp": 1540857720.0, //Minute2 "Value": 0.15 }, //... 60 datapoints for the CPU key ] }, //... In total we have 8 key/datapoints entries, 1) total, 2-8) Top Wait Events ] //end of MetricList } //end of response
Dalam respons ini, ada delapan entri dalam MetricList
. Ada satu entri untuk total db.load.avg
, dan tujuh entri masing-masing untuk db.load.avg
yang dibagi berdasarkan salah satu dari tujuh peristiwa tunggu teratas. Tidak seperti di contoh pertama, karena ada dimensi pengelompokan, pasti ada satu kunci untuk setiap pengelompokan metrik. Tidak boleh hanya ada satu kunci untuk setiap metrik, seperti dalam kasus penggunaan metrik penghitung dasar.
Mengambil rata-rata beban DB untuk bagian atas SQL
Contoh berikut dikelompokkan db.wait_events
oleh 10 SQL pernyataan teratas. Ada dua kelompok berbeda untuk SQL pernyataan:
-
db.sql
SQLPernyataan lengkap, sepertiselect * from customers where customer_id = 123
-
db.sql_tokenized
— SQL Pernyataan tokenized, sepertiselect * from customers where customer_id = ?
Saat menganalisis kinerja database, akan berguna untuk mempertimbangkan SQL pernyataan yang hanya berbeda dengan parameternya sebagai satu item logika. Jadi, Anda dapat menggunakan db.sql_tokenized
saat melakukan kueri. Namun, terutama ketika Anda tertarik untuk menjelaskan rencana, terkadang lebih berguna untuk memeriksa SQL pernyataan lengkap dengan parameter, dan pengelompokan kueri berdasarkan. db.sql
Ada hubungan orang tua-anak antara tokenized dan fullSQL, dengan beberapa penuh SQL (anak) dikelompokkan di bawah token yang sama (induk). SQL
Perintah dalam contoh ini terlihat seperti perintah dalam Mengambil rata-rata muatan DB untuk peristiwa tunggu teratas. Namun, file query.json berisi konten berikut.
[ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.sql_tokenized", "Limit": 10 } } ]
Contoh berikut menggunakan db.sql_tokenized
.
Untuk Linux, macOS, atau Unix:
aws pi get-resource-metrics \ --service-type RDS \ --identifier db-
ID
\ --start-time2018-10-29T00:00:00Z
\ --end-time2018-10-30T00:00:00Z
\ --period-in-seconds3600
\ --metric-queries file://query.json
Untuk Windows:
aws pi get-resource-metrics ^ --service-type RDS ^ --identifier db-
ID
^ --start-time2018-10-29T00:00:00Z
^ --end-time2018-10-30T00:00:00Z
^ --period-in-seconds3600
^ --metric-queries file://query.json
Contoh ini menanyakan lebih dari 24 jam, dengan satu jam period-in-seconds.
Contoh ini menentukan metrik db.load.avg
dan GroupBy
dari tujuh peristiwa tunggu teratas. Untuk detail tentang nilai yang valid untuk contoh ini, lihat DimensionGroupdi Referensi Performance Insights API.
Responsnya terlihat seperti berikut.
{ "AlignedStartTime": 1540771200.0, "AlignedEndTime": 1540857600.0, "Identifier": "db-XXX", "MetricList": [ //11 entries in the MetricList { "Key": { //First key is total "Metric": "db.load.avg" } "DataPoints": [ //Each DataPoints list has 24 per-hour Timestamps and a value { "Value": 1.6964980544747081, "Timestamp": 1540774800.0 }, //... 24 datapoints ] }, { "Key": { //Next key is the top tokenized SQL "Dimensions": { "db.sql_tokenized.statement": "INSERT INTO authors (id,name,email) VALUES\n( nextval(?) ,?,?)", "db.sql_tokenized.db_id": "pi-2372568224", "db.sql_tokenized.id": "AKIAIOSFODNN7EXAMPLE" }, "Metric": "db.load.avg" }, "DataPoints": [ //... 24 datapoints ] }, // In total 11 entries, 10 Keys of top tokenized SQL, 1 total key ] //End of MetricList } //End of response
Respons ini memiliki 11 entri dalam MetricList
(total 1, 10 tokenized teratasSQL), dengan setiap entri memiliki 24 per jam. DataPoints
Untuk tokenizedSQL, ada tiga entri di setiap daftar dimensi:
-
db.sql_tokenized.statement
— Pernyataan tokenizedSQL. -
db.sql_tokenized.db_id
— Baik ID database asli yang digunakan untuk merujuk keSQL, atau ID sintetis yang dihasilkan Performance Insights untuk Anda jika ID database asli tidak tersedia. Contoh ini menampilkan ID sintetispi-2372568224
. -
db.sql_tokenized.id
– ID kueri di dalam Wawasan Performa.Dalam AWS Management Console, ID ini disebut Support ID. Ini dinamakan ini karena ID adalah data yang AWS Support dapat memeriksa untuk membantu Anda memecahkan masalah dengan database Anda. AWS menjaga keamanan dan privasi data Anda dengan sangat serius, dan hampir semua data disimpan terenkripsi dengan kunci Anda AWS KMS . Oleh karena itu, tidak ada orang di dalam yang AWS dapat melihat data ini. Di contoh sebelumnya, baik
tokenized.statement
maupuntokenized.db_id
disimpan dengan enkripsi. Jika Anda memiliki masalah dengan database Anda, AWS Support dapat membantu Anda dengan mereferensikan ID Dukungan.
Ketika melakukan kueri, mungkin lebih mudah untuk menentukan Group
dalam GroupBy
. Namun, untuk kontrol lebih mendetail atas data yang ditampilkan, tentukan daftar dimensi. Misalnya, jika yang dibutuhkan hanya db.sql_tokenized.statement
, atribut Dimensions
dapat ditambahkan ke file query.json.
[ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.sql_tokenized", "Dimensions":["db.sql_tokenized.statement"], "Limit": 10 } } ]
Mengambil rata-rata beban DB yang disaring oleh SQL

Gambar sebelumnya menunjukkan bahwa kueri tertentu dipilih, dan grafik baris area bertumpuk sesi aktif rata-rata teratas dicakup ke kueri tersebut. Meskipun kueri masih diperuntukkan bagi tujuh peristiwa tunggu teratas secara keseluruhan, nilai respons-nya akan difilter. Filter menyebabkannya hanya memperhitungkan sesi yang cocok untuk filter tertentu.
APIKueri yang sesuai dalam contoh ini mirip dengan perintah diMengambil rata-rata beban DB untuk bagian atas SQL. Namun, file query.json berisi konten berikut.
[ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.wait_event", "Limit": 5 }, "Filter": { "db.sql_tokenized.id": "AKIAIOSFODNN7EXAMPLE" } } ]
Untuk Linux, macOS, atau Unix:
aws pi get-resource-metrics \ --service-type RDS \ --identifier db-
ID
\ --start-time2018-10-30T00:00:00Z
\ --end-time2018-10-30T01:00:00Z
\ --period-in-seconds60
\ --metric-queries file://query.json
Untuk Windows:
aws pi get-resource-metrics ^ --service-type RDS ^ --identifier db-
ID
^ --start-time2018-10-30T00:00:00Z
^ --end-time2018-10-30T01:00:00Z
^ --period-in-seconds60
^ --metric-queries file://query.json
Responsnya terlihat seperti berikut.
{ "Identifier": "db-XXX", "AlignedStartTime": 1556215200.0, "MetricList": [ { "Key": { "Metric": "db.load.avg" }, "DataPoints": [ { "Timestamp": 1556218800.0, "Value": 1.4878117913832196 }, { "Timestamp": 1556222400.0, "Value": 1.192823803967328 } ] }, { "Key": { "Metric": "db.load.avg", "Dimensions": { "db.wait_event.type": "io", "db.wait_event.name": "wait/io/aurora_redo_log_flush" } }, "DataPoints": [ { "Timestamp": 1556218800.0, "Value": 1.1360544217687074 }, { "Timestamp": 1556222400.0, "Value": 1.058051341890315 } ] }, { "Key": { "Metric": "db.load.avg", "Dimensions": { "db.wait_event.type": "io", "db.wait_event.name": "wait/io/table/sql/handler" } }, "DataPoints": [ { "Timestamp": 1556218800.0, "Value": 0.16241496598639457 }, { "Timestamp": 1556222400.0, "Value": 0.05163360560093349 } ] }, { "Key": { "Metric": "db.load.avg", "Dimensions": { "db.wait_event.type": "synch", "db.wait_event.name": "wait/synch/mutex/innodb/aurora_lock_thread_slot_futex" } }, "DataPoints": [ { "Timestamp": 1556218800.0, "Value": 0.11479591836734694 }, { "Timestamp": 1556222400.0, "Value": 0.013127187864644107 } ] }, { "Key": { "Metric": "db.load.avg", "Dimensions": { "db.wait_event.type": "CPU", "db.wait_event.name": "CPU" } }, "DataPoints": [ { "Timestamp": 1556218800.0, "Value": 0.05215419501133787 }, { "Timestamp": 1556222400.0, "Value": 0.05805134189031505 } ] }, { "Key": { "Metric": "db.load.avg", "Dimensions": { "db.wait_event.type": "synch", "db.wait_event.name": "wait/synch/mutex/innodb/lock_wait_mutex" } }, "DataPoints": [ { "Timestamp": 1556218800.0, "Value": 0.017573696145124718 }, { "Timestamp": 1556222400.0, "Value": 0.002333722287047841 } ] } ], "AlignedEndTime": 1556222400.0 } //end of response
Dalam tanggapan ini, semua nilai difilter sesuai dengan kontribusi token yang SQL AKIAIOSFODNN7EXAMPLE ditentukan dalam file query.json. Kunci juga mungkin mengikuti urutan yang berbeda dari kueri tanpa filter, karena itu adalah lima peristiwa tunggu teratas yang memengaruhi filterSQL.
Mengambil teks lengkap dari sebuah pernyataan SQL
Contoh berikut mengambil teks lengkap SQL pernyataan untuk contoh db-10BCD2EFGHIJ3KL4M5NO6PQRS5
DB. --group
adalah db.sql
, dan --group-identifier
adalah db.sql.id
. Dalam contoh ini, my-sql-id
mewakili SQL ID diambil dengan memanggil pi
get-resource-metrics
atau. pi describe-dimension-keys
Jalankan perintah berikut.
Untuk Linux, macOS, atau Unix:
aws pi get-dimension-key-details \ --service-type RDS \ --identifier db-10BCD2EFGHIJ3KL4M5NO6PQRS5 \ --group db.sql \ --group-identifier
my-sql-id
\ --requested-dimensions statement
Untuk Windows:
aws pi get-dimension-key-details ^ --service-type RDS ^ --identifier db-10BCD2EFGHIJ3KL4M5NO6PQRS5 ^ --group db.sql ^ --group-identifier
my-sql-id
^ --requested-dimensions statement
Dalam contoh ini, detail dimensinya tersedia. Dengan demikian, Performance Insights mengambil teks lengkap SQL pernyataan, tanpa memotongnya.
{ "Dimensions":[ { "Value": "SELECT e.last_name, d.department_name FROM employees e, departments d WHERE e.department_id=d.department_id", "Dimension": "db.sql.statement", "Status": "AVAILABLE" }, ... ] }
Membuat laporan analisis performa selama periode waktu tertentu
Contoh berikut membuat laporan analisis performa dengan waktu mulai 1682969503
dan waktu akhir 1682979503
untuk basis data db-loadtest-0
.
aws pi create-performance-analysis-report \ --service-type RDS \ --identifier db-loadtest-0 \ --start-time 1682969503 \ --end-time 1682979503 \ --region us-west-2
Responsnya adalah ID unik report-0234d3ed98e28fb17
untuk laporan tersebut.
{ "AnalysisReportId": "report-0234d3ed98e28fb17" }
Mengambil laporan analisis performa
Contoh berikut mengambil detail laporan analisis untuk laporan report-0d99cc91c4422ee61
.
aws pi get-performance-analysis-report \ --service-type RDS \ --identifier db-loadtest-0 \ --analysis-report-id report-0d99cc91c4422ee61 \ --region us-west-2
Respons memberikan status laporan, ID, detail waktu, dan wawasan.
{ "AnalysisReport": { "Status": "Succeeded", "ServiceType": "RDS", "Identifier": "db-loadtest-0", "StartTime": 1680583486.584, "AnalysisReportId": "report-0d99cc91c4422ee61", "EndTime": 1680587086.584, "CreateTime": 1680587087.139, "Insights": [ ... (Condensed for space) ] } }
Daftar semua laporan analisis performa untuk instans DB
Contoh berikut mencantumkan semua laporan analisis performa yang tersedia untuk basis data db-loadtest-0
.
aws pi list-performance-analysis-reports \ --service-type RDS \ --identifier db-loadtest-0 \ --region us-west-2
Respons ini mencantumkan semua laporan dengan ID laporan, status, dan detail periode waktu.
{ "AnalysisReports": [ { "Status": "Succeeded", "EndTime": 1680587086.584, "CreationTime": 1680587087.139, "StartTime": 1680583486.584, "AnalysisReportId": "report-0d99cc91c4422ee61" }, { "Status": "Succeeded", "EndTime": 1681491137.914, "CreationTime": 1681491145.973, "StartTime": 1681487537.914, "AnalysisReportId": "report-002633115cc002233" }, { "Status": "Succeeded", "EndTime": 1681493499.849, "CreationTime": 1681493507.762, "StartTime": 1681489899.849, "AnalysisReportId": "report-043b1e006b47246f9" }, { "Status": "InProgress", "EndTime": 1682979503.0, "CreationTime": 1682979618.994, "StartTime": 1682969503.0, "AnalysisReportId": "report-01ad15f9b88bcbd56" } ] }
Menghapus laporan analisis performa
Contoh berikut menghapus laporan analisis untuk basis data db-loadtest-0
.
aws pi delete-performance-analysis-report \ --service-type RDS \ --identifier db-loadtest-0 \ --analysis-report-id report-0d99cc91c4422ee61 \ --region us-west-2
Menambahkan tag ke laporan analisis performa
Contoh berikut menambahkan tag dengan kunci name
dan nilai test-tag
ke laporan report-01ad15f9b88bcbd56
.
aws pi tag-resource \ --service-type RDS \ --resource-arn arn:aws:pi:us-west-2:356798100956:perf-reports/RDS/db-loadtest-0/report-01ad15f9b88bcbd56 \ --tags Key=name,Value=test-tag \ --region us-west-2
Mencantumkan semua tag untuk laporan analisis performa
Contoh berikut mencantumkan semua tag untuk laporan report-01ad15f9b88bcbd56
.
aws pi list-tags-for-resource \ --service-type RDS \ --resource-arn arn:aws:pi:us-west-2:356798100956:perf-reports/RDS/db-loadtest-0/report-01ad15f9b88bcbd56 \ --region us-west-2
Respons ini mencantumkan nilai dan kunci untuk semua tag yang ditambahkan ke laporan:
{ "Tags": [ { "Value": "test-tag", "Key": "name" } ] }
Menghapus tag dari laporan analisis performa
Contoh berikut menghapus tag name
dari laporan report-01ad15f9b88bcbd56
.
aws pi untag-resource \ --service-type RDS \ --resource-arn arn:aws:pi:us-west-2:356798100956:perf-reports/RDS/db-loadtest-0/report-01ad15f9b88bcbd56 \ --tag-keys name \ --region us-west-2
Setelah tag dihapus, memanggil list-tags-for-resource
API tidak mencantumkan tag ini.