Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan CloudWatch untuk memantau dan mencatat data GraphQL API
Anda dapat mencatat dan men-debug API GraphQL CloudWatch Anda menggunakan metrik dan log. CloudWatch Alat-alat ini memungkinkan pengembang untuk memantau kinerja, memecahkan masalah, dan mengoptimalkan operasi GraphQL mereka secara efektif.
CloudWatch metrik adalah alat yang menyediakan berbagai metrik untuk memantau API kinerja dan penggunaan. Metrik ini terbagi dalam dua kategori utama:
-
APIMetrik Umum: Ini termasuk
4XXError
dan5XXError
untuk melacak kesalahan klien dan server,Latency
untuk mengukur waktu respons,Requests
untuk memantau total API panggilan, danTokensConsumed
untuk melacak penggunaan sumber daya. -
Metrik Berlangganan Waktu Nyata: Metrik ini berfokus pada WebSocket koneksi dan aktivitas berlangganan. Mereka termasuk metrik untuk permintaan koneksi, koneksi yang berhasil, pendaftaran langganan, penerbitan pesan, dan koneksi aktif dan langganan.
Panduan ini juga memperkenalkan Enhanced Metrics, yang menawarkan lebih banyak data terperinci tentang kinerja resolver, interaksi sumber data, dan operasi GraphQL individual. Metrik ini memberikan wawasan yang lebih dalam tetapi datang dengan biaya tambahan.
CloudWatch Log adalah alat yang memungkinkan kemampuan logging untuk GraphQL APIs Anda. Log dapat diatur pada dua tingkatAPI:
-
Log tingkat Permintaan: Ini menangkap informasi permintaan secara keseluruhan, termasuk HTTP header, kueri GraphQL, ringkasan operasi, dan pendaftaran langganan.
-
Log Tingkat Bidang: Ini memberikan informasi rinci tentang resolusi bidang individual, termasuk pemetaan permintaan dan respons, dan informasi penelusuran untuk setiap bidang.
Anda dapat mengonfigurasi logging, menafsirkan entri log, dan menggunakan data log untuk pemecahan masalah dan pengoptimalan. AWS AppSync menyediakan berbagai jenis log yang mengungkapkan eksekusi, parsing, validasi, dan data resolusi bidang kueri Anda.
Penyiapan dan konfigurasi
Untuk mengaktifkan logging otomatis pada API GraphQL, gunakan konsol. AWS AppSync
-
Masuk ke AWS Management Console dan buka AppSynckonsol
. -
Pada APIshalaman, pilih nama GraphQLAPI.
-
Di API beranda Anda, di panel navigasi, pilih Pengaturan.
-
Di bawah Logging, lakukan hal berikut:
-
Aktifkan Aktifkan Log.
-
Untuk pencatatan tingkat permintaan terperinci, pilih kotak centang di bawah Sertakan konten verbose. (opsional)
-
Di bawah Level log penyelesai bidang, pilih level logging tingkat bidang pilihan Anda (Tidak Ada, Kesalahan, atau Semua). (opsional)
-
Di bawah Buat atau gunakan peran yang ada, pilih Peran baru untuk membuat new AWS Identity and Access Management (IAM) yang memungkinkan AWS AppSync untuk menulis log CloudWatch. Atau, pilih Peran yang ada untuk memilih Amazon Resource Name (ARN) dari IAM peran yang ada di AWS akun Anda.
-
-
Pilih Simpan.
Konfigurasi IAM peran manual
Jika Anda memilih untuk menggunakan IAM peran yang ada, peran tersebut harus memberikan AWS AppSync izin yang diperlukan untuk menulis log. CloudWatch Untuk mengonfigurasi ini secara manual, Anda harus menyediakan peran layanan ARN sehingga AWS AppSync dapat mengambil peran saat menulis log.
Di IAMkonsolAWSAppSyncPushToCloudWatchLogsPolicy
yang memiliki definisi berikut:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
Selanjutnya, buat peran baru dengan nama AWSAppSyncPushToCloudWatchLogsRole, dan lampirkan kebijakan yang baru dibuat ke peran tersebut. Edit hubungan kepercayaan untuk peran ini menjadi berikut:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "appsync.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Salin peran ARN dan gunakan saat menyiapkan logging untuk AWS AppSync GraphQLAPI.
CloudWatch metrik
Anda dapat menggunakan CloudWatch metrik untuk memantau dan memberikan peringatan tentang peristiwa tertentu yang dapat menghasilkan kode HTTP status atau dari latensi. Metrik berikut dipancarkan:
-
4XXError
-
Kesalahan yang dihasilkan dari permintaan yang tidak valid karena konfigurasi klien yang salah. Biasanya, kesalahan ini terjadi di mana saja di luar pemrosesan GraphQL. Misalnya, kesalahan ini dapat terjadi ketika permintaan menyertakan JSON payload yang salah atau kueri yang salah, saat layanan dibatasi, atau ketika pengaturan otorisasi salah konfigurasi.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan total kejadian kesalahan ini.
-
5XXError
-
Kesalahan yang ditemui selama menjalankan kueri GraphQL. Misalnya, ini dapat terjadi saat menjalankan kueri untuk skema kosong atau salah. Ini juga dapat terjadi ketika ID atau AWS Wilayah kumpulan pengguna Amazon Cognito tidak valid. Atau, ini juga bisa terjadi AWS AppSync jika mengalami masalah selama pemrosesan permintaan.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan total kejadian kesalahan ini.
-
Latency
-
Waktu antara ketika AWS AppSync menerima permintaan dari klien dan ketika mengembalikan respons ke klien. Ini tidak termasuk latensi jaringan yang ditemui untuk respons untuk mencapai perangkat akhir.
Satuan: Millidetik. Gunakan statistik Rata-rata untuk mengevaluasi latensi yang diharapkan.
Requests
-
Jumlah permintaan (kueri+mutasi) yang semua APIs di akun Anda telah diproses, berdasarkan Wilayah.
Satuan: Hitung. Jumlah semua permintaan yang diproses di Wilayah tertentu.
TokensConsumed
-
Token dialokasikan
Requests
berdasarkan jumlah sumber daya (waktu pemrosesan dan memori yang digunakan) yangRequest
dikonsumsi. Biasanya, masing-masingRequest
mengkonsumsi satu token. Namun, aRequest
yang mengkonsumsi sejumlah besar sumber daya dialokasikan token tambahan sesuai kebutuhan.Satuan: Hitung. Jumlah token yang dialokasikan untuk permintaan yang diproses di Wilayah tertentu.
NetworkBandwidthOutAllowanceExceeded
-
catatan
Di AWS AppSync konsol, pada halaman pengaturan cache, opsi Metrik Kesehatan Cache memungkinkan Anda mengaktifkan metrik kesehatan terkait cache ini.
Paket jaringan turun karena throughput melebihi batas bandwidth agregat. Ini berguna untuk mendiagnosis kemacetan dalam konfigurasi cache. Data direkam untuk tertentu API dengan menentukan
API_Id
dalamappsyncCacheNetworkBandwidthOutAllowanceExceeded
metrik.Satuan: Hitung. Jumlah paket turun setelah melebihi batas bandwidth untuk yang API ditentukan oleh ID.
EngineCPUUtilization
-
catatan
Di AWS AppSync konsol, pada halaman pengaturan cache, opsi Metrik Kesehatan Cache memungkinkan Anda mengaktifkan metrik kesehatan terkait cache ini.
CPUPemanfaatan (persentase) dialokasikan untuk proses OSS Redis. Ini berguna untuk mendiagnosis kemacetan dalam konfigurasi cache. Data direkam untuk tertentu API dengan menentukan
API_Id
dalamappsyncCacheEngineCPUUtilization
metrik.Satuan: Persen. CPUPersentase yang saat ini digunakan oleh OSS proses Redis untuk ID yang API ditentukan.
Langganan waktu nyata
Semua metrik dipancarkan dalam satu dimensi: G. raphQLAPIId Ini berarti bahwa semua metrik digabungkan dengan GraphQL. API IDs Metrik berikut terkait dengan langganan GraphQL di atas murni: WebSockets
ConnectRequests
-
Jumlah permintaan WebSocket koneksi yang dibuat untuk AWS AppSync, termasuk upaya yang berhasil dan tidak berhasil.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total permintaan koneksi.
ConnectSuccess
-
Jumlah WebSocket koneksi yang berhasil ke AWS AppSync. Dimungkinkan untuk memiliki koneksi tanpa langganan.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan kejadian total dari koneksi yang berhasil.
ConnectClientError
-
Jumlah WebSocket koneksi yang ditolak oleh AWS AppSync karena kesalahan sisi klien. Ini dapat menyiratkan bahwa layanan dibatasi atau bahwa pengaturan otorisasi salah dikonfigurasi.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan kejadian total kesalahan koneksi sisi klien.
ConnectServerError
-
Jumlah kesalahan yang berasal dari AWS AppSync saat memproses koneksi. Ini biasanya terjadi ketika masalah sisi server yang tidak terduga terjadi.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan kejadian total kesalahan koneksi sisi server.
DisconnectSuccess
-
Jumlah WebSocket pemutusan yang berhasil dari AWS AppSync.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan kejadian total dari pemutusan yang berhasil.
DisconnectClientError
-
Jumlah kesalahan klien yang berasal dari AWS AppSync saat memutuskan koneksi WebSocket.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan kejadian total dari kesalahan pemutusan.
DisconnectServerError
-
Jumlah kesalahan server yang berasal dari AWS AppSync saat memutuskan koneksi WebSocket.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan kejadian total dari kesalahan pemutusan.
SubscribeSuccess
-
Jumlah langganan yang berhasil didaftarkan AWS AppSync melalui WebSocket. Dimungkinkan untuk memiliki koneksi tanpa langganan, tetapi tidak mungkin memiliki langganan tanpa koneksi.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan total kemunculan langganan yang berhasil.
SubscribeClientError
-
Jumlah langganan yang ditolak oleh AWS AppSync karena kesalahan sisi klien. Hal ini dapat terjadi ketika JSON payload salah, layanan dibatasi, atau pengaturan otorisasi salah dikonfigurasi.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan total kejadian kesalahan langganan sisi klien.
SubscribeServerError
-
Jumlah kesalahan yang berasal dari AWS AppSync saat memproses langganan. Ini biasanya terjadi ketika masalah sisi server yang tidak terduga terjadi.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan total kejadian kesalahan langganan sisi server.
UnsubscribeSuccess
-
Jumlah permintaan berhenti berlangganan yang berhasil diproses.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan total kemunculan permintaan berhenti berlangganan yang berhasil.
UnsubscribeClientError
-
Jumlah permintaan berhenti berlangganan yang ditolak oleh AWS AppSync karena kesalahan sisi klien.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan total kejadian kesalahan permintaan berhenti berlangganan sisi klien.
UnsubscribeServerError
-
Jumlah kesalahan yang berasal dari AWS AppSync saat memproses permintaan berhenti berlangganan. Ini biasanya terjadi ketika masalah sisi server yang tidak terduga terjadi.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan total kejadian kesalahan permintaan berhenti berlangganan sisi server.
PublishDataMessageSuccess
-
Jumlah pesan acara berlangganan yang berhasil dipublikasikan.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan total pesan acara berlangganan yang berhasil dipublikasikan.
PublishDataMessageClientError
-
Jumlah pesan acara berlangganan yang gagal dipublikasikan karena kesalahan sisi klien.
Unit
: Hitung. Gunakan statistik Jumlah untuk mendapatkan total kejadian kesalahan peristiwa berlangganan penerbitan sisi klien. PublishDataMessageServerError
-
Jumlah kesalahan yang berasal dari AWS AppSync saat menerbitkan pesan acara berlangganan. Ini biasanya terjadi ketika masalah sisi server yang tidak terduga terjadi.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan total kejadian kesalahan peristiwa berlangganan penerbitan sisi server.
PublishDataMessageSize
-
Ukuran pesan acara berlangganan yang diterbitkan.
Satuan: Byte.
ActiveConnections
-
Jumlah WebSocket koneksi bersamaan dari klien ke AWS AppSync dalam 1 menit.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan total koneksi yang terbuka.
ActiveSubscriptions
-
Jumlah langganan bersamaan dari klien dalam 1 menit.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan total langganan aktif.
ConnectionDuration
-
Jumlah waktu koneksi tetap terbuka.
Satuan: Milidetik. Gunakan statistik Rata-rata untuk mengevaluasi durasi koneksi.
OutboundMessages
-
Jumlah pesan terukur berhasil dipublikasikan. Satu pesan terukur sama dengan 5 kB data yang dikirimkan.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total pesan terukur yang berhasil dipublikasikan.
InboundMessageSuccess
-
Jumlah pesan masuk berhasil diproses. Setiap jenis langganan yang dipanggil oleh mutasi menghasilkan satu pesan masuk.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total pesan masuk yang berhasil diproses.
InboundMessageError
-
Jumlah pesan masuk yang gagal diproses karena API permintaan tidak valid, seperti melebihi batas ukuran payload langganan 240 kB.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total pesan masuk dengan kegagalan pemrosesan API terkait.
InboundMessageFailure
-
Jumlah pesan masuk yang gagal diproses karena kesalahan dari AWS AppSync.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total pesan masuk dengan kegagalan pemrosesan AWS AppSync terkait.
InboundMessageDelayed
-
Jumlah pesan masuk yang tertunda. Pesan masuk dapat ditunda ketika kuota rasio pesan masuk atau kuota rasio pesan keluar dilanggar.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total pesan masuk yang tertunda.
InboundMessageDropped
-
Jumlah pesan masuk yang dijatuhkan. Pesan masuk dapat dihapus ketika kuota rasio pesan masuk atau kuota rasio pesan keluar dilanggar.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total pesan masuk yang dijatuhkan.
InvalidationSuccess
-
Jumlah langganan yang berhasil dibatalkan (berhenti berlangganan) dengan mutasi dengan.
$extensions.invalidateSubscriptions()
Satuan: Hitung. Gunakan statistik Jumlah untuk mengambil jumlah total langganan yang berhasil berhenti berlangganan.
InvalidationRequestSuccess
-
Jumlah permintaan pembatalan berhasil diproses.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total permintaan pembatalan yang berhasil diproses.
InvalidationRequestError
-
Jumlah permintaan pembatalan yang gagal diproses karena permintaan tidak validAPI.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total permintaan pembatalan dengan kegagalan pemrosesan API terkait.
InvalidationRequestFailure
-
Jumlah permintaan pembatalan yang gagal diproses karena kesalahan dari. AWS AppSync
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total permintaan pembatalan dengan kegagalan pemrosesan AWS AppSync terkait.
InvalidationRequestDropped
-
Jumlah permintaan pembatalan turun ketika kuota permintaan pembatalan terlampaui.
Satuan: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total permintaan pembatalan yang dijatuhkan.
Membandingkan pesan masuk dan keluar
Saat mutasi dijalankan, bidang langganan dengan direktif @aws_subscribe untuk mutasi tersebut dipanggil. Setiap pemanggilan langganan menghasilkan satu pesan masuk. Misalnya, jika dua bidang langganan menentukan mutasi yang sama di @aws_subscribe, maka dua pesan masuk dihasilkan saat mutasi itu dipanggil.
Satu pesan keluar sama dengan 5 kB data yang dikirimkan ke WebSocket klien. Misalnya, mengirim 15 kB data ke 10 klien menghasilkan 30 pesan keluar (15 kB* 10 klien/ 5 kB per pesan = 30 pesan).
Anda dapat meminta peningkatan kuota untuk pesan masuk atau keluar. Untuk informasi selengkapnya, lihat AWS AppSync titik akhir dan kuota dalam panduan Referensi AWS Umum dan petunjuk untuk Meminta peningkatan kuota dalam Panduan Pengguna Service Quotas.
Metrik yang disempurnakan
Metrik yang disempurnakan memancarkan data terperinci tentang API penggunaan dan kinerja seperti jumlah AWS AppSync permintaan dan kesalahan, latensi, dan hits/misses cache. Semua data metrik yang disempurnakan dikirim ke CloudWatch akun Anda, dan Anda dapat mengonfigurasi jenis data yang akan dikirim.
catatan
Biaya tambahan dikenakan saat menggunakan metrik yang disempurnakan. Untuk informasi selengkapnya, lihat tingkat penetapan harga pemantauan terperinci di CloudWatchharga Amazon
Metrik ini dapat ditemukan di berbagai halaman pengaturan di AWS AppSync konsol. Pada halaman API pengaturan, bagian Metrik yang Ditingkatkan memungkinkan Anda untuk mengaktifkan atau menonaktifkan item berikut:
Perilaku metrik penyelesai: Opsi ini mengontrol cara metrik tambahan untuk resolver dikumpulkan. Anda dapat memilih untuk mengaktifkan metrik resolver permintaan lengkap (metrik diaktifkan untuk semua resolver dalam permintaan) atau metrik per-resolver (metrik hanya diaktifkan untuk resolver yang konfigurasi disetel ke diaktifkan). Pilihan berikut tersedia:
-
GraphQL errors per resolver (GraphQLError)
-
Jumlah kesalahan GraphQL yang terjadi per resolver.
Dimensi metrik:
API_Id
,Resolver
Satuan: Hitung.
-
Requests per resolver (Request)
-
Jumlah pemanggilan yang terjadi selama permintaan. Ini dicatat berdasarkan per-resolver.
Dimensi metrik:
API_Id
,Resolver
Satuan: Hitung.
-
Latency per resolver (Latency)
-
Waktu untuk menyelesaikan doa resolver. Latensi diukur dalam milidetik dan dicatat berdasarkan per-resolver.
Dimensi metrik:
API_Id
,Resolver
Satuan: Millidetik.
Cache hits per resolver (CacheHit)
-
Jumlah cache yang tertembus selama permintaan. Ini hanya akan dipancarkan jika cache digunakan. Hit cache direkam berdasarkan per-resolver.
Dimensi metrik:
API_Id
,Resolver
Satuan: Hitung.
Cache misses per resolver (CacheMiss)
-
Jumlah cache hilang selama permintaan. Ini hanya akan dipancarkan jika cache digunakan. Kesalahan cache dicatat berdasarkan per-resolver.
Dimensi metrik:
API_Id
,Resolver
Satuan: Hitung.
Perilaku metrik sumber data: Opsi ini mengontrol cara metrik tambahan untuk sumber data dikumpulkan. Anda dapat memilih untuk mengaktifkan metrik sumber data permintaan lengkap (metrik diaktifkan untuk semua sumber data dalam permintaan) atau metrik sumber per data (metrik hanya diaktifkan untuk sumber data yang konfigurasi disetel ke diaktifkan). Pilihan berikut tersedia:
-
Requests per data source (Request)
-
Jumlah pemanggilan yang terjadi selama permintaan. Permintaan dicatat berdasarkan sumber per data. Jika permintaan penuh diaktifkan, setiap sumber data akan memiliki entri sendiri CloudWatch.
Dimensi metrik:
API_Id
,Datasource
Satuan: Hitung.
-
Latency per data source (Latency)
-
Waktu untuk menyelesaikan pemanggilan sumber data. Latensi dicatat berdasarkan sumber per data.
Dimensi metrik:
API_Id
,Datasource
Satuan: Millidetik.
-
Errors per data source (GraphQLError)
-
Jumlah kesalahan yang terjadi selama pemanggilan sumber data.
Dimensi metrik:
API_Id
,Datasource
Satuan: Hitung.
Metrik operasi: Mengaktifkan metrik tingkat operasi GraphQL.
-
Requests per operation (Request)
-
Berapa kali operasi GraphQL tertentu dipanggil.
Dimensi metrik:
API_Id
,Operation
Satuan: Hitung.
-
GraphQL errors per operation (GraphQLError)
-
Jumlah kesalahan GraphQL yang terjadi selama operasi GraphQL tertentu.
Dimensi metrik:
API_Id
,Operation
Satuan: Hitung.
CloudWatch log
Anda dapat mengonfigurasi dua jenis logging pada API GraphQL baru atau yang sudah ada: tingkat permintaan dan tingkat bidang.
Log tingkat permintaan
Ketika pencatatan tingkat permintaan (Sertakan konten verbose) dikonfigurasi, informasi berikut dicatat:
-
Jumlah token yang dikonsumsi
-
HTTPHeader permintaan dan respons
-
Query GraphQL yang berjalan dalam permintaan
-
Ringkasan operasi keseluruhan
-
Langganan GraphQL baru dan yang sudah ada yang terdaftar
Log tingkat lapangan
Ketika logging tingkat lapangan dikonfigurasi, informasi berikut dicatat:
-
Pemetaan permintaan yang dihasilkan dengan sumber dan argumen untuk setiap bidang
-
Pemetaan respons yang diubah untuk setiap bidang, yang mencakup data sebagai hasil penyelesaian bidang tersebut
-
Menelusuri informasi untuk setiap bidang
Jika Anda mengaktifkan logging, AWS AppSync mengelola CloudWatch Log. Prosesnya termasuk membuat grup log dan aliran log, dan melaporkan ke aliran log dengan log ini.
Saat Anda mengaktifkan logging pada API GraphQL dan membuat permintaan AWS AppSync , buat grup log dan aliran log di bawah grup log. Grup log diberi nama mengikuti /aws/appsync/apis/{graphql_api_id}
format. Dalam setiap grup log, log dibagi lagi menjadi aliran log. Ini diurutkan berdasarkan Waktu Acara Terakhir karena data yang dicatat dilaporkan.
Setiap peristiwa log ditandai dengan x-amzn- RequestId dari permintaan itu. Ini membantu Anda memfilter peristiwa log CloudWatch untuk mendapatkan semua informasi yang dicatat tentang permintaan itu. Anda bisa mendapatkan dari header respons RequestId dari setiap permintaan GraphQL AWS AppSync .
Pencatatan tingkat bidang dikonfigurasi dengan level log berikut:
-
Tidak ada - Tidak ada log tingkat lapangan yang ditangkap.
-
- Kesalahan - Mencatat informasi berikut hanya untuk bidang yang salah:
-
-
Bagian kesalahan dalam respon server
-
Kesalahan tingkat lapangan
-
Fungsi permintaan/respons yang dihasilkan yang diselesaikan untuk bidang kesalahan
-
-
- Semua - Log informasi berikut untuk semua bidang dalam kueri:
-
-
Informasi penelusuran tingkat lapangan
-
Fungsi permintaan/respons yang dihasilkan yang diselesaikan untuk setiap bidang
-
Manfaat pemantauan
Anda dapat menggunakan logging dan metrik untuk mengidentifikasi, memecahkan masalah, dan mengoptimalkan kueri GraphQL Anda. Misalnya, ini akan membantu Anda men-debug masalah latensi menggunakan informasi penelusuran yang dicatat untuk setiap bidang dalam kueri. Untuk mendemonstrasikan ini, misalkan Anda menggunakan satu atau lebih resolver yang bersarang dalam kueri GraphQL. Operasi bidang sampel di CloudWatch Log mungkin terlihat mirip dengan yang berikut ini:
{ "path": [ "singlePost", "authors", 0, "name" ], "parentType": "Post", "returnType": "String!", "fieldName": "name", "startOffset": 416563350, "duration": 11247 }
Ini mungkin sesuai dengan skema GraphQL, mirip dengan yang berikut ini:
type Post { id: ID! name: String! authors: [Author] } type Author { id: ID! name: String! } type Query { singlePost(id:ID!): Post }
Dalam hasil log sebelumnya, path menampilkan satu item dalam data Anda yang dikembalikan dari menjalankan kueri bernama. singlePost()
Dalam contoh ini, ini mewakili bidang nama pada indeks pertama (0). startOffsetMemberikan offset dari awal operasi query GraphQL. Durasi adalah total waktu untuk menyelesaikan bidang. Nilai-nilai ini dapat berguna untuk memecahkan masalah mengapa data dari sumber data tertentu mungkin berjalan lebih lambat dari yang diharapkan, atau jika bidang tertentu memperlambat seluruh kueri. Misalnya, Anda dapat memilih untuk meningkatkan throughput yang disediakan untuk tabel Amazon DynamoDB, atau menghapus bidang tertentu dari kueri yang menyebabkan keseluruhan operasi berkinerja buruk.
Per 8 Mei 2019, AWS AppSync menghasilkan peristiwa log sebagai terstruktur sepenuhnyaJSON. Ini dapat membantu Anda menggunakan layanan analisis CloudWatch log seperti Wawasan Log dan OpenSearch Layanan Amazon untuk memahami kinerja permintaan GraphQL dan karakteristik penggunaan bidang skema Anda. Misalnya, Anda dapat dengan mudah mengidentifikasi resolver dengan latensi besar yang mungkin menjadi akar penyebab masalah kinerja. Anda juga dapat mengidentifikasi bidang yang paling sering dan paling jarang digunakan dalam skema Anda dan menilai dampak dari menghentikan bidang GraphQL.
Deteksi konflik dan pencatatan sinkronisasi
Jika CloudWatch log ke Log AWS AppSync API telah dikonfigurasi dengan tingkat log penyelesai bidang yang disetel ke Semua, maka akan AWS AppSync memancarkan deteksi konflik dan informasi resolusi ke grup log. Ini memberikan wawasan terperinci tentang bagaimana AWS AppSync API menanggapi konflik. Untuk membantu Anda menafsirkan respons, informasi berikut disediakan di log:
-
conflictType
-
Merinci apakah konflik terjadi karena ketidakcocokan versi atau kondisi yang disediakan pelanggan.
-
conflictHandlerConfigured
-
Menyatakan penangan konflik yang dikonfigurasi pada resolver pada saat permintaan.
-
message
-
Memberikan informasi tentang bagaimana konflik terdeteksi dan diselesaikan.
-
syncAttempt
-
Jumlah percobaan server mencoba untuk menyinkronkan data sebelum akhirnya menolak permintaan.
-
data
-
Jika pengendali konflik dikonfigurasi
Automerge
, bidang ini diisi untuk menunjukkan keputusan apa yangAutomerge
diambil untuk setiap bidang. Tindakan yang diberikan dapat berupa:-
REJECTED- Ketika
Automerge
menolak nilai bidang masuk yang mendukung nilai di server. -
ADDED- Ketika
Automerge
menambahkan pada bidang masuk karena tidak ada nilai yang sudah ada sebelumnya di server. -
APPENDED- Ketika
Automerge
menambahkan nilai masuk ke nilai-nilai untuk Daftar yang ada di server. -
MERGED- Saat
Automerge
menggabungkan nilai yang masuk ke nilai untuk Set yang ada di server.
-
Menggunakan jumlah token untuk mengoptimalkan permintaan Anda
Permintaan yang mengkonsumsi kurang dari atau sama dengan 1.500 Kb-detik memori dan CPU waktu v dialokasikan satu token. Permintaan dengan konsumsi sumber daya lebih dari 1.500 Kb-detik menerima token tambahan. Misalnya, jika permintaan menghabiskan 3.350 KB-detik, AWS AppSync mengalokasikan tiga token (dibulatkan ke nilai integer berikutnya) ke permintaan. Secara default, AWS AppSync mengalokasikan maksimum 5.000 atau 10.000 token permintaan per detik ke akun Anda, tergantung pada AWS Wilayah di mana token tersebut digunakan. APIs Jika APIs masing-masing menggunakan rata-rata dua token per detik, Anda akan dibatasi hingga 2.500 atau 5.000 permintaan per detik, masing-masing. Jika Anda membutuhkan lebih banyak token per detik dari jumlah yang dialokasikan, Anda dapat mengajukan permintaan untuk meningkatkan kuota default untuk tarif token permintaan. Untuk informasi selengkapnya, lihat AWS AppSync titik akhir dan kuota dalam Referensi Umum AWS panduan dan Meminta peningkatan kuota dalam Panduan Pengguna Service Quotas.
Jumlah token per permintaan yang tinggi dapat menunjukkan bahwa ada peluang untuk mengoptimalkan permintaan Anda dan meningkatkan kinerja Anda. API Faktor-faktor yang dapat meningkatkan jumlah token per permintaan Anda meliputi:
-
Ukuran dan kompleksitas skema GraphQL Anda.
-
Kompleksitas template pemetaan permintaan dan respons.
-
Jumlah pemanggilan resolver per permintaan.
-
Jumlah data yang dikembalikan dari resolver.
-
Latensi sumber data hilir.
-
Desain skema dan kueri yang memerlukan panggilan sumber data berturut-turut (sebagai lawan dari panggilan paralel atau batch).
-
Konfigurasi logging, terutama konten log tingkat lapangan dan verbose.
catatan
Selain AWS AppSync metrik dan log, klien dapat mengakses jumlah token yang dikonsumsi dalam permintaan melalui header x-amzn-appsync-TokensConsumed
respons.
Batas ukuran log
Secara default, jika logging telah diaktifkan, AWS AppSync akan mengirimkan hingga 1 MB log per permintaan. Log yang melebihi ukuran ini akan terpotong. Untuk mengurangi ukuran log, pilih tingkat ERROR
logging untuk log tingkat bidang dan nonaktifkan VERBOSE
logging, atau nonaktifkan log tingkat bidang sepenuhnya jika tidak diperlukan. Sebagai alternatif untuk tingkat ALL
log, Anda dapat menggunakan Metrik yang Ditingkatkan untuk mendapatkan metrik pada resolver tertentu, sumber data, atau operasi GraphQL, atau memanfaatkan utilitas pencatatan yang disediakan oleh untuk mencatat hanya informasi yang diperlukan. AppSync
Referensi tipe log
RequestSummary
-
requestId: Pengidentifikasi unik untuk permintaan.
-
graphQLAPIId: ID dari API GraphQL membuat permintaan.
-
statusCode: respon kode HTTP status.
-
latensi: End-to-end latensi permintaan, dalam nanodetik, sebagai bilangan bulat.
{ "logType": "RequestSummary", "requestId": "dbe87af3-c114-4b32-ae79-8af11f3f96f1", "graphQLAPIId": "pmo28inf75eepg63qxq4ekoeg4", "statusCode": 200, "latency": 242000000 }
ExecutionSummary
-
requestId: Pengidentifikasi unik untuk permintaan.
-
graphQLAPIId: ID dari API GraphQL membuat permintaan.
-
startTime: Stempel waktu awal pemrosesan GraphQL untuk permintaan, dalam format 3339. RFC
-
endTime: Stempel waktu akhir pemrosesan GraphQL untuk permintaan, dalam format 3339. RFC
-
durasi: Total waktu pemrosesan GraphQL yang telah berlalu, dalam nanodetik, sebagai bilangan bulat.
-
versi: Versi skema dari. ExecutionSummary
-
- penguraian:
-
-
startOffset: Offset awal untuk penguraian, dalam nanodetik, relatif terhadap pemanggilan, sebagai bilangan bulat.
-
durasi: Waktu yang dihabiskan untuk mengurai, dalam nanodetik, sebagai bilangan bulat.
-
-
- validasi:
-
-
startOffset: Offset awal untuk validasi, dalam nanodetik, relatif terhadap pemanggilan, sebagai bilangan bulat.
-
durasi: Waktu yang dihabiskan untuk melakukan validasi, dalam nanodetik, sebagai bilangan bulat.
-
{ "duration": 217406145, "logType": "ExecutionSummary", "requestId": "dbe87af3-c114-4b32-ae79-8af11f3f96f1", "startTime": "2019-01-01T06:06:18.956Z", "endTime": "2019-01-01T06:06:19.174Z", "parsing": { "startOffset": 49033, "duration": 34784 }, "version": 1, "validation": { "startOffset": 129048, "duration": 69126 }, "graphQLAPIId": "pmo28inf75eepg63qxq4ekoeg4" }
Pelacakan
-
requestId: Pengidentifikasi unik untuk permintaan.
-
graphQLAPIId: ID dari API GraphQL membuat permintaan.
-
startOffset: Offset awal untuk resolusi bidang, dalam nanodetik, relatif terhadap pemanggilan, sebagai bilangan bulat.
-
durasi: Waktu yang dihabiskan untuk menyelesaikan bidang, dalam nanodetik, sebagai bilangan bulat.
-
fieldName: Nama bidang yang sedang diselesaikan.
-
parentType: Jenis induk dari bidang yang sedang diselesaikan.
-
returnType: Jenis pengembalian bidang yang sedang diselesaikan.
-
path: Daftar segmen jalur, dimulai dari akar respons dan diakhiri dengan bidang yang diselesaikan.
-
resolverArn: Resolver yang digunakan untuk resolusi lapangan. ARN Mungkin tidak ada di bidang bersarang.
{ "duration": 216820346, "logType": "Tracing", "path": [ "putItem" ], "fieldName": "putItem", "startOffset": 178156, "resolverArn": "arn:aws:appsync:us-east-1:111111111111:apis/pmo28inf75eepg63qxq4ekoeg4/types/Mutation/fields/putItem", "requestId": "dbe87af3-c114-4b32-ae79-8af11f3f96f1", "parentType": "Mutation", "returnType": "Item", "graphQLAPIId": "pmo28inf75eepg63qxq4ekoeg4" }
Menganalisis log Anda dengan Wawasan CloudWatch Log
Berikut ini adalah contoh kueri yang dapat Anda jalankan untuk mendapatkan wawasan yang dapat ditindaklanjuti tentang kinerja dan kesehatan operasi GraphQL Anda. Contoh ini tersedia sebagai contoh kueri di konsol Wawasan CloudWatch Log. Di CloudWatchkonsol
Kueri berikut mengembalikan 10 permintaan GraphQL teratas dengan token maksimum yang dikonsumsi:
filter @message like "Tokens Consumed" | parse @message "* Tokens Consumed: *" as requestId, tokens | sort tokens desc | display requestId, tokens | limit 10
Kueri berikut mengembalikan 10 resolver teratas dengan latensi maksimum:
fields resolverArn, duration | filter logType = "Tracing" | limit 10 | sort duration desc
Kueri berikut mengembalikan resolver yang paling sering dipanggil:
fields ispresent(resolverArn) as isRes | stats count() as invocationCount by resolverArn | filter isRes and logType = "Tracing" | limit 10 | sort invocationCount desc
Kueri berikut mengembalikan resolver dengan kesalahan terbanyak dalam template pemetaan:
fields ispresent(resolverArn) as isRes | stats count() as errorCount by resolverArn, logType | filter isRes and (logType = "RequestMapping" or logType = "ResponseMapping") and fieldInError | limit 10 | sort errorCount desc
Kueri berikut mengembalikan statistik latensi resolver:
fields ispresent(resolverArn) as isRes | stats min(duration), max(duration), avg(duration) as avg_dur by resolverArn | filter isRes and logType = "Tracing" | limit 10 | sort avg_dur desc
Kueri berikut mengembalikan statistik latensi bidang:
stats min(duration), max(duration), avg(duration) as avg_dur by concat(parentType, '/', fieldName) as fieldKey | filter logType = "Tracing" | limit 10 | sort avg_dur desc
Hasil kueri Wawasan CloudWatch Log dapat diekspor ke dasbor. CloudWatch
Analisis log Anda dengan OpenSearch Layanan
Anda dapat mencari, menganalisis, dan memvisualisasikan AWS AppSync log Anda dengan Amazon OpenSearch Service untuk mengidentifikasi kemacetan kinerja dan akar penyebab masalah operasional. Anda dapat mengidentifikasi resolver dengan latensi dan kesalahan maksimum. Selain itu, Anda dapat menggunakan OpenSearch Dasbor untuk membuat dasbor dengan visualisasi yang kuat. OpenSearch Dasbor adalah alat visualisasi dan eksplorasi data sumber terbuka yang tersedia di Layanan. OpenSearch Menggunakan OpenSearch Dasbor, Anda dapat terus memantau kinerja dan kesehatan operasi GraphQL Anda. Misalnya, Anda dapat membuat dasbor untuk memvisualisasikan latensi P90 dari permintaan GraphQL Anda dan menelusuri latensi P90 dari setiap resolver.
Saat menggunakan OpenSearch Layanan, gunakan “cwl*” sebagai pola filter untuk mencari indeks. OpenSearch OpenSearch Layanan mengindeks log yang dialirkan dari CloudWatch Log dengan awalan “cwl -”. Untuk membedakan AWS AppSync API log dari CloudWatch log lain yang dikirim ke OpenSearch Layanan, sebaiknya tambahkan ekspresi filter tambahan graphQLAPIID.keyword=
ke penelusuran Anda.YourGraphQLAPIID
Migrasi format log
Peristiwa log yang AWS AppSync dihasilkan pada atau setelah 8 Mei 2019 diformat sebagai terstruktur JSON sepenuhnya. Untuk menganalisis permintaan GraphQL sebelum 8 Mei 2019, Anda dapat memigrasikan log lama ke JSON terstruktur sepenuhnya menggunakan skrip yang tersedia di Sampel. GitHub
Anda juga dapat menggunakan filter metrik CloudWatch untuk mengubah data log menjadi CloudWatch metrik numerik, sehingga Anda dapat membuat grafik atau mengatur alarm pada mereka.