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 API GraphQL
Anda dapat mencatat dan men-debug GraphQL API Anda menggunakan CloudWatch metrik dan CloudWatch log. 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 kinerja dan penggunaan API. Metrik ini terbagi dalam dua kategori utama:
-
Metrik API Umum: Ini termasuk
4XXErrordan5XXErroruntuk melacak kesalahan klien dan server,Latencyuntuk mengukur waktu respons,Requestsuntuk memantau total panggilan API, danTokensConsumeduntuk melacak penggunaan sumber daya. -
Real-time Metrik Lang ganan: Metrik ini berfokus pada WebSocket koneksi dan aktivitas berlangganan. Mereka termasuk metrik untuk permintaan koneksi, koneksi yang berhasil, pendaftaran berlangganan, penerbitan pesan, dan koneksi dan langganan aktif.
Panduan ini juga memperkenalkan Enhanced Metrics, yang menawarkan data yang lebih terperinci tentang kinerja resolver, interaksi sumber data, dan operasi GraphQL individual. Metrik ini memberikan wawasan yang lebih dalam tetapi disertai dengan biaya tambahan.
CloudWatch Log adalah alat yang memungkinkan kemampuan logging untuk GraphQL API Anda. Log dapat diatur pada dua tingkat API:
-
Request-level Log: Ini menangkap informasi permintaan keseluruhan, termasuk header HTTP, kueri GraphQL, ringkasan operasi, dan pendaftaran langganan.
-
Field-level Log: Ini memberikan informasi terperinci tentang resolusi bidang individual, termasuk pemetaan permintaan dan respons, dan informasi pelacakan 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 kueri Anda, penguraian, validasi, dan data resolusi bidang.
Penyiapan dan konfigurasi
Untuk mengaktifkan logging otomatis pada GraphQL API, gunakan AWS AppSync konsol.
-
Masuk ke Konsol Manajemen AWS dan buka AppSync konsol
. -
Pada halaman API, pilih nama GraphQL API.
-
Di beranda API Anda, di panel navigasi, pilih Peng aturan.
-
Di bawah Logging, lakukan hal berikut:
-
Aktifkan Aktifkan Log.
-
Untuk pencatatan tingkat permintaan terperinci, pilih kotak centang di bawah Sertakan konten bertel e-tele. (opsional)
-
Di bawah Tingkat log penyelesai bidang, pilih tingkat logging tingkat bidang pilihan Anda (Tidak Ada, Kes alahan, Info, Debug , atau Semua). (opsional)
-
Di bawah Buat atau gunakan peran yang ada, pilih Peran baru untuk membuat baru AWS Identity and Access Management (IAM) yang memungkinkan AWS AppSync untuk menulis log ke CloudWatch. Atau, pilih Peran yang ada untuk memilih Nama Sumber Daya Amazon (ARN) dari peran IAM yang ada di AWS akun Anda.
-
-
Pilih Simpan.
Konfigurasi peran IAM manual
Jika Anda memilih untuk menggunakan peran IAM yang ada, peran tersebut harus memberikan izin AWS AppSync yang diperlukan untuk menulis log. CloudWatch Untuk mengkonfigurasi ini secara manual, Anda harus menyediakan peran layanan ARN sehingga AWS AppSync dapat mengambil peran saat menulis log.
Di konsol IAMAWSAppSyncPushToCloudWatchLogsPolicy yang memiliki definisi berikut:
Selanjutnya, buat peran baru dengan nama AWSAppSyncPushToCloudWatchLogsRole, dan lampirkan kebijakan yang baru dibuat ke peran tersebut. Edit hubungan kepercayaan untuk peran ini sebagai berikut:
Salin peran ARN dan gunakan saat menyiapkan logging untuk AWS AppSync GraphQL API.
CloudWatch metrik
Anda dapat menggunakan CloudWatch metrik untuk memantau dan memberikan peringatan tentang peristiwa tertentu yang dapat mengakibatkan kode status HTTP 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 payload JSON yang salah atau kueri yang salah, saat layanan dibatasi, atau ketika pengaturan otorisasi salah dikonfigurasi.
Unit: Hitung. Gunakan statistik Sum untuk mendapatkan total kemunculan kesalahan ini.
-
5XXError -
Kesalahan yang ditemui selama menjalankan kueri GraphQL. Misalnya, ini dapat terjadi saat memanggil kueri untuk skema kosong atau salah. Hal ini juga dapat terjadi ketika ID kumpulan pengguna Amazon Cognito atau AWS Wilayah tidak valid. Atau, ini juga bisa AWS AppSync terjadi jika mengalami masalah selama pemrosesan permintaan.
Unit: Hitung. Gunakan statistik Sum untuk mendapatkan total kemunculan kesalahan ini.
-
Latency -
Waktu antara saat AWS AppSync menerima permintaan dari klien dan ketika mengembalikan respons kepada klien. Ini tidak termasuk latensi jaringan yang ditemui untuk respons mencapai perangkat akhir.
Satuan: Milidetik. Gunakan statistik rata-rata untuk mengevaluasi latensi yang diharapkan.
Requests-
Jumlah permintaan (kueri + mutasi) yang telah diproses oleh semua API di akun Anda, menurut Wilayah.
Unit: Hitung. Jumlah semua permintaan yang diproses di Wilayah tertentu.
TokensConsumed-
Token dialokasikan
Requestsberdasarkan jumlah sumber daya (waktu pemrosesan dan memori yang digunakan) yangRequestdikonsumsi. Biasanya, masing-masingRequestmengkonsumsi satu token. Namun,Requestyang mengkonsumsi sumber daya dalam jumlah besar dialokasikan token tambahan sesuai kebutuhan.Unit: Hitung. Jumlah token yang dialokasikan untuk permintaan yang diproses di Wilayah tertentu.
NetworkBandwidthOutAllowanceExceeded-
catatan
Di AWS AppSync konsol, pada halaman pengaturan cache, opsi Cache Health Metrics memungkinkan Anda mengaktifkan metrik kesehatan terkait cache ini.
Paket jaringan turun karena throughput melebihi batas bandwidth agregat. Ini berguna untuk mendiagnosis hambatan dalam konfigurasi cache. Data direkam untuk API tertentu dengan menentukan
API_IddalamappsyncCacheNetworkBandwidthOutAllowanceExceededmetrik.Unit: Hitung. Jumlah paket turun setelah melebihi batas bandwidth untuk API yang ditentukan oleh ID.
EngineCPUUtilization-
catatan
Di AWS AppSync konsol, pada halaman pengaturan cache, opsi Cache Health Metrics memungkinkan Anda mengaktifkan metrik kesehatan terkait cache ini.
Pemanfaatan CPU (persentase) dialokasikan untuk proses Redis OSS. Ini berguna untuk mendiagnosis hambatan dalam konfigurasi cache. Data direkam untuk API tertentu dengan menentukan
API_IddalamappsyncCacheEngineCPUUtilizationmetrik.Unit: Per sen. Persentase CPU yang saat ini digunakan oleh proses Redis OSS untuk API yang ditentukan oleh ID.
Real-time langganan
Semua metrik dipancarkan dalam satu dimensi: GraphQ LAPIid. Ini berarti bahwa semua metrik digabungkan dengan ID API GraphQL. Metrik berikut terkait dengan langganan GraphQL di atas pure: WebSockets
catatan
Dimensi ini hanya berlaku untuk AWS AppSync GraphQL API. AWS AppSync juga menawarkan Event API, jenis API terpisah yang metriknya dipancarkan di bawah dimensi yang berbeda (eventAPIID). Untuk informasi selengkapnya, lihat CloudWatch metrik.
ConnectRequests-
Jumlah permintaan WebSocket koneksi yang dibuat AWS AppSync, termasuk upaya yang berhasil dan tidak berhasil.
Unit: Hitung. Gunakan statistik Sum untuk mendapatkan jumlah total permintaan koneksi.
ConnectSuccess-
Jumlah WebSocket koneksi yang berhasil ke AWS AppSync. Dimungkinkan untuk memiliki koneksi tanpa langganan.
Unit: Hitung. Gunakan statistik Sum untuk mendapatkan total kemunculan 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.
Unit: Hitung. Gunakan statistik Sum untuk mendapatkan jumlah kejadian 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.
Unit: Hitung. Gunakan statistik Sum untuk mendapatkan jumlah kejadian kesalahan koneksi sisi server.
DisconnectSuccess-
Jumlah pemutusan yang berhasil WebSocket dari AWS AppSync.
Unit: Hitung. Gunakan statistik Sum untuk mendapatkan total kejadian dari pemutusan yang berhasil.
DisconnectClientError-
Jumlah kesalahan klien yang berasal dari AWS AppSync saat memutuskan WebSocket koneksi.
Unit: Hitung. Gunakan statistik Sum untuk mendapatkan total kejadian kesalahan pemutusan.
DisconnectServerError-
Jumlah kesalahan server yang berasal dari AWS AppSync saat memutuskan WebSocket koneksi.
Unit: Hitung. Gunakan statistik Sum untuk mendapatkan total kejadian kesalahan pemutusan.
SubscribeSuccess-
Jumlah langganan yang berhasil didaftarkan AWS AppSync melalui WebSocket. Dimungkinkan untuk memiliki koneksi tanpa langganan, tetapi tidak mungkin untuk memiliki langganan tanpa koneksi.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah kejadian langganan yang berhasil.
SubscribeClientError-
Jumlah langganan yang ditolak AWS AppSync karena kesalahan sisi klien. Hal ini dapat terjadi ketika payload JSON salah, layanan dibatasi, atau pengaturan otorisasi salah dikonfigurasi.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah 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.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah kejadian kesalahan langganan sisi server.
UnsubscribeSuccess-
Jumlah permintaan berhenti berlangganan yang berhasil diproses.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah kejadian permintaan berhenti berlangganan yang berhasil.
UnsubscribeClientError-
Jumlah permintaan berhenti berlangganan yang ditolak oleh AWS AppSync karena kesalahan sisi klien.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah 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.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah kejadian kesalahan permintaan berhenti berlangganan sisi server.
PublishDataMessageSuccess-
Jumlah pesan acara langganan yang berhasil dipublikasikan.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan total pesan acara langganan yang berhasil dipublikasikan.
PublishDataMessageClientError-
Jumlah pesan acara langganan yang gagal dipublikasikan karena kesalahan sisi klien.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan kejadian total kesalahan peristiwa langganan penerbitan sisi klien. PublishDataMessageServerError-
Jumlah kesalahan yang berasal dari AWS AppSync saat menerbitkan pesan acara langganan. Ini biasanya terjadi ketika masalah sisi server yang tidak terduga terjadi.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan kejadian total kesalahan peristiwa berlangganan penerbitan sisi server.
PublishDataMessageSize-
Ukuran pesan acara berlangganan yang dipublikasikan.
Satuan: Byte.
ActiveConnections-
Jumlah WebSocket koneksi bersamaan dari klien ke AWS AppSync dalam 1 menit.
Unit: Hitung. Gunakan statistik Sum untuk mendapatkan total koneksi yang dibuka.
ActiveSubscriptions-
Jumlah langganan bersamaan dari klien dalam 1 menit.
Unit: 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.
Unit: 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.
Unit: Hitung. Gunakan statistik Sum untuk mendapatkan jumlah total pesan masuk yang berhasil diproses.
InboundMessageError-
Jumlah pesan masuk yang gagal diproses karena permintaan API yang tidak valid, seperti melebihi batas ukuran payload langganan 240 kB.
Unit: Hitung. Gunakan statistik Sum untuk mendapatkan jumlah total pesan masuk dengan kegagalan API-related pemrosesan.
InboundMessageFailure-
Jumlah pesan masuk yang gagal diproses karena kesalahan dari AWS AppSync.
Unit: 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 jika kuota tarif pesan masuk atau kuota tarif pesan keluar dilanggar.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total pesan masuk yang tertunda.
InboundMessageDropped-
Jumlah pesan masuk yang turun. Pesan masuk dapat dihapus jika kuota tarif pesan masuk atau kuota tarif pesan keluar dilanggar.
Unit: Hitung. Gunakan statistik Sum untuk mendapatkan jumlah total pesan masuk yang dihapus.
InvalidationSuccess-
Jumlah langganan yang berhasil dibatalkan (tidak berlangganan) oleh mutasi dengan.
$extensions.invalidateSubscriptions()Unit: Hitung. Gunakan statistik Jumlah untuk mengambil jumlah total langganan yang berhasil dibatalkan langganan.
InvalidationRequestSuccess-
Jumlah permintaan pembatalan berhasil diproses.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total permintaan pembatalan yang berhasil diproses.
InvalidationRequestError-
Jumlah permintaan pembatalan yang gagal diproses karena permintaan API yang tidak valid.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total permintaan pembatalan dengan kegagalan API-related pemrosesan.
InvalidationRequestFailure-
Jumlah permintaan pembatalan yang gagal diproses karena kesalahan dari AWS AppSync.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total permintaan pembatalan dengan kegagalan pemrosesan AWS AppSync terkait.
InvalidationRequestDropped-
Jumlah permintaan pembatalan turun saat kuota permintaan pembatalan terlampaui.
Unit: Hitung. Gunakan statistik Jumlah untuk mendapatkan jumlah total permintaan pembatalan yang dibatalkan.
Membandingkan pesan masuk dan keluar
Ketika mutasi dijalankan, bidang langganan dengan direktif @aws_subscribe untuk mutasi itu 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 ketika 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 kenaikan kuota untuk pesan masuk atau keluar. Untuk informasi selengkapnya, AWS AppSync lihat titik akhir dan kuota di AWS Panduan Referensi Umum dan petunjuk untuk Mem inta peningkatan kuota di Panduan Pengguna Kuota Layanan.
Metrik yang ditingkatkan
Metrik yang ditingkatkan memancarkan data terperinci tentang penggunaan dan kinerja API seperti jumlah AWS AppSync permintaan dan kesalahan, latensi, dan cache hits/misses. Semua data metrik yang disempurnakan dikirim ke CloudWatch akun Anda, dan Anda dapat mengonfigurasi jenis data yang akan dikirim.
catatan
Biaya tambahan berlaku saat menggunakan metrik yang disempurnakan. Untuk informasi selengkapnya, lihat tingkatan harga pemantauan terperinci di CloudWatch harga Amazon
Metrik ini dapat ditemukan di berbagai halaman pengaturan di AWS AppSync konsol. Pada halaman pengaturan API, bagian Met rik yang Ditingkatkan memungkinkan Anda mengaktifkan atau menonaktifkan item berikut:
Perilaku metrik resolver: Opsi ini mengontrol bagaimana metrik tambahan untuk resolver dikumpulkan. Anda dapat memilih untuk mengaktifkan metrik penyelesai permintaan penuh (metrik diaktifkan untuk semua penyelesai 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,ResolverUnit: Hitung.
-
Requests per resolver (Request) -
Jumlah pemanggilan yang terjadi selama permintaan. Ini dicatat berdasarkan per-resolver.
Dimensi metrik:
API_Id,ResolverUnit: Hitung.
-
Latency per resolver (Latency) -
Waktu untuk menyelesaikan pemanggilan resolver. Latensi diukur dalam milidetik dan direkam berdasarkan per-resolver.
Dimensi metrik:
API_Id,ResolverSatuan: Milidetik.
Cache hits per resolver (CacheHit)-
Jumlah hit cache selama permintaan. Ini hanya akan dipancarkan jika cache digunakan. Hit cache direkam berdasarkan per-resolver.
Dimensi metrik:
API_Id,ResolverUnit: Hitung.
Cache misses per resolver (CacheMiss)-
Jumlah cache yang hilang selama permintaan. Ini hanya akan dipancarkan jika cache digunakan. Kehilangan cache dicatat berdasarkan per-resolver.
Dimensi metrik:
API_Id,ResolverUnit: Hitung.
Perilaku metrik sumber data: Opsi ini mengontrol bagaimana metrik tambahan untuk sumber data dikumpulkan. Anda dapat memilih untuk mengaktifkan metrik sumber data permintaan penuh (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,DatasourceUnit: Hitung.
-
Latency per data source (Latency) -
Waktu untuk menyelesaikan pemanggilan sumber data. Latensi dicatat berdasarkan sumber per data.
Dimensi metrik:
API_Id,DatasourceSatuan: Milidetik.
-
Errors per data source (GraphQLError) -
Jumlah kesalahan yang terjadi selama pemanggilan sumber data.
Dimensi metrik:
API_Id,DatasourceUnit: Hitung.
Metrik operasi: Mengaktifkan metrik tingkat operasi GraphQL.
-
Requests per operation (Request) -
Berapa kali operasi GraphQL tertentu dipanggil.
Dimensi metrik:
API_Id,OperationUnit: Hitung.
-
GraphQL errors per operation (GraphQLError) -
Jumlah kesalahan GraphQL yang terjadi selama operasi GraphQL tertentu.
Dimensi metrik:
API_Id,OperationUnit: Hitung.
CloudWatch log
Anda dapat mengonfigurasi dua jenis logging pada GraphQL API baru atau yang sudah ada: tingkat permintaan dan tingkat bidang.
Request-level log
Saat logging tingkat permintaan (Ser takan konten verbose) dikonfigurasi, informasi berikut dicatat:
-
Jumlah token yang dikonsumsi
-
Header HTTP permintaan dan respons
-
Kueri GraphQL yang berjalan dalam permintaan
-
Ringkasan operasi keseluruhan
-
Langganan GraphQL baru dan yang sudah ada yang terdaftar
Field-level log
Saat logging tingkat bidang 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 itu
-
Menelusuri informasi untuk setiap bidang
Jika Anda mengaktifkan logging, AWS AppSync kelola CloudWatch Log. Prosesnya termasuk membuat grup log dan aliran log, dan melaporkan ke aliran log dengan log ini.
Saat Anda mengaktifkan logging di GraphQL API dan membuat permintaan, AWS AppSync membuat 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 Peristiwa Ter akhir saat data yang dicatat dilaporkan.
Setiap peristiwa log ditandai dengan x-amzn- RequestId dari permintaan itu. Ini membantu Anda memfilter peristiwa log masuk CloudWatch untuk mendapatkan semua informasi yang dicatat tentang permintaan itu. Anda bisa mendapatkan RequestId dari header respons dari setiap permintaan GraphQL AWS AppSync .
Pencatatan tingkat bidang dikonfigurasi dengan level log berikut:
-
Tidak ada - Tidak ada log tingkat bidang yang ditangkap.
-
- Kesalahan - Mencatat informasi berikut hanya untuk bidang yang ada dalam kategori kesalahan:
-
-
Bagian kesalahan dalam respons server
-
Field-level kesalahan
-
request/response Fungsi yang dihasilkan yang diselesaikan untuk bidang kesalahan
-
-
- Info - Mencatat informasi berikut hanya untuk bidang yang ada dalam kategori info dan kesalahan:
-
-
Info-level pesan
-
Pesan pengguna yang dikirim melalui
$util.log.infodanconsole.log -
Field-level log penelusuran dan pemetaan tidak ditampilkan.
-
Jika logging tingkat bidang disetel ke
INFOatau lebih tinggi dengan konten verbose-content disertakan, tambahkan pesan logging template pem AWS AppSync etaan yang diubah. Ini akan berisi informasi apa pun yang ditambahkan ke template pemetaan yang diubah, atau output dari resolver atau JavaScript kode fungsi yang dieksekusi, dan tidak boleh digunakan jika Anda berencana untuk mengirim informasi sensitif, seperti kata sandi atau header otorisasi, ke sumber data hilir dan tidak ingin informasi itu di log Anda.
-
-
- Debug - Mencatat informasi berikut hanya untuk bidang yang ada dalam kategori debug, info, dan kesalahan:
-
-
Debug-level pesan
-
Pesan pengguna yang dikirim melalui
$util.log.info,$util.log.debug,console.log, danconsole.debug -
Field-level log penelusuran dan pemetaan tidak ditampilkan.
-
-
- Semua - Mencatat informasi berikut untuk semua bidang dalam kueri:
-
-
Field-level informasi penelusuran
-
request/response Fungsi 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 pelacakan yang dicatat untuk setiap bidang dalam kueri. Untuk menunjukkan ini, misalkan Anda menggunakan satu atau lebih resolver yang bersarang dalam kueri GraphQL. Operasi bidang sampel di CloudWatch Log mungkin terlihat mirip dengan 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 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 menunjukkan satu item dalam data Anda yang dikembalikan dari menjalankan kueri bernamasinglePost(). Dalam contoh ini, ini mewakili bidang nama pada indeks pertama (0). StartOffset memberikan offset dari awal operasi kueri 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 operasi keseluruhan berkinerja buruk.
Pada 8 Mei 2019, AWS AppSync menghasilkan peristiwa log sebagai JSON terstruktur penuh. Ini dapat membantu Anda menggunakan layanan analisis CloudWatch log seperti Logs Insights dan Amazon OpenSearch Service 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 penghentian bidang GraphQL.
Deteksi konflik dan pencatatan sinkronisasi
Jika AWS AppSync API memiliki logging ke CloudWatch Log yang dikonfigurasi dengan tingkat log penyel esai bidang disetel ke Semua, maka AWS AppSync memancarkan deteksi konflik dan informasi penyelesaian 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 pengendali konflik yang dikonfigurasi pada resolver pada saat permintaan.
-
message -
Memberikan informasi tentang bagaimana konflik terdeteksi dan diselesaikan.
-
syncAttempt -
Jumlah percobaan yang dilakukan server untuk menyinkronkan data sebelum akhirnya menolak permintaan.
-
data -
Jika pengendali konflik dikonfigurasi
Automerge, bidang ini diisi untuk menunjukkan keputusan apa yangAutomergediambil untuk setiap bidang. Tindakan yang diberikan dapat berupa:-
DITOLAK - Ketika
Automergemenolak nilai bidang masuk demi nilai di server. -
DITAM BAHKAN - Ketika
Automergemenambahkan pada bidang masuk karena tidak ada nilai yang sudah ada sebelumnya di server. -
DITAMBAHKAN -
AutomergeKetika menambahkan nilai masuk ke nilai untuk Daftar yang ada di server. -
DIG ABUNG
Automerge- Ketika menggabungkan nilai masuk ke nilai untuk Set yang ada di server.
-
Menggunakan jumlah token untuk mengoptimalkan permintaan Anda
Permintaan yang menghabiskan kurang dari atau sama dengan 1.500 KB-seconds memori dan waktu vCPU dialokasikan satu token. Permintaan dengan konsumsi sumber daya lebih dari 1.500 KB-seconds menerima token tambahan. Misalnya, jika permintaan mengkonsumsi 3.350 KB-seconds, 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 API di akun Anda, tergantung pada Wil AWS ayah di mana token tersebut digunakan. Jika masing-masing API menggunakan rata-rata dua token per detik, Anda masing-masing akan dibatasi hingga 2.500 atau 5.000 permintaan per detik. Jika Anda membutuhkan lebih banyak token per detik daripada jumlah yang dialokasikan, Anda dapat mengirimkan permintaan untuk meningkatkan kuota default untuk tingkat token permintaan. Untuk informasi selengkapnya, AWS AppSync lihat titik akhir dan kuota dalam Referensi Umum AWS panduan dan Meminta peningkatan kuota di Panduan Pengguna Kuota Layanan.
Jumlah token per permintaan yang tinggi dapat menunjukkan bahwa ada peluang untuk mengoptimalkan permintaan Anda dan meningkatkan kinerja API Anda. 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 bidang dan verbose.
catatan
Selain AWS AppSync metrik dan log, klien dapat mengakses jumlah token yang dikonsumsi dalam permintaan melalui header responsx-amzn-appsync-TokensConsumed.
Batas ukuran log
Secara default, jika logging telah diaktifkan, AWS AppSync akan mengirim hingga 1 MB log per permintaan. Log yang melebihi ukuran ini akan dipotong. Untuk mengurangi ukuran log, pilih level 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 logging yang disediakan oleh AppSync untuk mencatat hanya informasi yang diperlukan.
Referensi jenis log
RequestSummary
-
requesTid: Pen gidentifikasi unik untuk permintaan.
-
GraphQLAPIid: ID GraphQL API yang membuat permintaan.
-
StatusCode: Resp ons kode status HTTP.
-
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: Pen gidentifikasi unik untuk permintaan.
-
GraphQLAPIid: ID GraphQL API yang membuat permintaan.
-
StartTime: Stempel waktu awal pemrosesan GraphQL untuk permintaan, dalam format RFC 3339.
-
EndTime: Stempel waktu akhir pemrosesan GraphQL untuk permintaan, dalam format RFC 3339.
-
durasi: Total waktu pemrosesan GraphQL yang telah berlalu, dalam nanodetik, sebagai bilangan bulat.
-
versi: Versi skema dari ExecutionSummary.
-
- mengurai:
-
-
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: Pen gidentifikasi unik untuk permintaan.
-
GraphQLAPIid: ID GraphQL API yang 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 indu k 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 sedang diselesaikan.
-
resolverArn: ARN resolver yang digunakan untuk resolusi bidang. 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 CloudWatch Logs Insights
Berikut ini adalah contoh kueri yang dapat Anda jalankan untuk mendapatkan wawasan yang dapat ditindaklanjuti tentang kinerja dan kesehatan operasi GraphQL Anda. Contoh-contoh ini tersedia sebagai kueri sampel di konsol CloudWatch Logs Insights. Di CloudWatch konsol
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 Log CloudWatch s Insights dapat diekspor ke CloudWatch dasbor.
Analisis log Anda dengan OpenSearch Layanan
Anda dapat mencari, menganalisis, dan memvisualisasikan AWS AppSync log Anda dengan Amazon OpenSearch Service untuk mengidentifikasi hambatan kinerja dan akar penyebab masalah operasional. Anda dapat mengidentifikasi resolver dengan latensi dan kesalahan maksimum. Selain itu, Anda dapat menggunakan Dasbor untuk membuat OpenSearch dasbor dengan visualisasi yang kuat. OpenSearch Dasbor adalah alat visualisasi dan eksplorasi data sumber terbuka yang tersedia di OpenSearch Layanan. 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 OpenSearch indeks. OpenSearch Layanan mengindeks log yang dialirkan dari CloudWatch Log dengan awalan “cwl-”. Untuk membedakan log AWS AppSync API dari CloudWatch log lain yang dikirim ke OpenSearch Layanan, sebaiknya tambahkan ekspresi filter tambahan graphQLAPIID.keyword= untuk pencarian Anda.YourGraphQLAPIID
Migrasi format log
Peristiwa log yang AWS AppSync dihasilkan terutama diformat sebagai JSON terstruktur penuh. Namun, pesan pemrosesan diagnostik dan menengah tertentu dapat dipancarkan dalam format yang tidak terstruktur. Jika Anda perlu memigrasikan log tidak terstruktur ke JSON terstruktur sepenuhnya, Anda dapat menggunakan skrip yang tersedia di Sam GitHub pel
Anda juga dapat menggunakan filter met rik CloudWatch untuk mengubah data log menjadi CloudWatch metrik numerik, sehingga Anda dapat membuat grafik atau mengatur alarm pada mereka.