View a markdown version of this page

Menggunakan CloudWatch untuk memantau dan mencatat data API GraphQL - AWS AppSync GraphQL

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:

  1. Metrik API Umum: Ini termasuk 4XXError dan 5XXError untuk melacak kesalahan klien dan server, Latency untuk mengukur waktu respons, Requests untuk memantau total panggilan API, dan TokensConsumed untuk melacak penggunaan sumber daya.

  2. 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:

  1. Request-level Log: Ini menangkap informasi permintaan keseluruhan, termasuk header HTTP, kueri GraphQL, ringkasan operasi, dan pendaftaran langganan.

  2. 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.

  1. Masuk ke Konsol Manajemen AWS dan buka AppSync konsol.

  2. Pada halaman API, pilih nama GraphQL API.

  3. Di beranda API Anda, di panel navigasi, pilih Peng aturan.

  4. Di bawah Logging, lakukan hal berikut:

    1. Aktifkan Aktifkan Log.

    2. Untuk pencatatan tingkat permintaan terperinci, pilih kotak centang di bawah Sertakan konten bertel e-tele. (opsional)

    3. Di bawah Tingkat log penyelesai bidang, pilih tingkat logging tingkat bidang pilihan Anda (Tidak Ada, Kes alahan, Info, Debug , atau Semua). (opsional)

    4. 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.

  5. 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 IAM, buat kebijakan baru dengan nama AWSAppSyncPushToCloudWatchLogsPolicy yang memiliki definisi berikut:

JSON
{ "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 sebagai berikut:

JSON
{ "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 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 Requests berdasarkan jumlah sumber daya (waktu pemrosesan dan memori yang digunakan) yang Request dikonsumsi. Biasanya, masing-masing Request mengkonsumsi satu token. Namun, Request yang 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_Id dalam appsyncCacheNetworkBandwidthOutAllowanceExceeded metrik.

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_Id dalam appsyncCacheEngineCPUUtilization metrik.

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, Resolver

Unit: Hitung.

Requests per resolver (Request)

Jumlah pemanggilan yang terjadi selama permintaan. Ini dicatat berdasarkan per-resolver.

Dimensi metrik:API_Id, Resolver

Unit: Hitung.

Latency per resolver (Latency)

Waktu untuk menyelesaikan pemanggilan resolver. Latensi diukur dalam milidetik dan direkam berdasarkan per-resolver.

Dimensi metrik:API_Id, Resolver

Satuan: 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, Resolver

Unit: 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, Resolver

Unit: 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, Datasource

Unit: Hitung.

Latency per data source (Latency)

Waktu untuk menyelesaikan pemanggilan sumber data. Latensi dicatat berdasarkan sumber per data.

Dimensi metrik:API_Id, Datasource

Satuan: Milidetik.

Errors per data source (GraphQLError)

Jumlah kesalahan yang terjadi selama pemanggilan sumber data.

Dimensi metrik:API_Id, Datasource

Unit: Hitung.

Metrik operasi: Mengaktifkan metrik tingkat operasi GraphQL.

Requests per operation (Request)

Berapa kali operasi GraphQL tertentu dipanggil.

Dimensi metrik:API_Id, Operation

Unit: Hitung.

GraphQL errors per operation (GraphQLError)

Jumlah kesalahan GraphQL yang terjadi selama operasi GraphQL tertentu.

Dimensi metrik:API_Id, Operation

Unit: 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.info dan console.log

    • Field-level log penelusuran dan pemetaan tidak ditampilkan.

    • Jika logging tingkat bidang disetel ke INFO atau 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, dan console.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 dikonfigurasiAutomerge, bidang ini diisi untuk menunjukkan keputusan apa yang Automerge diambil untuk setiap bidang. Tindakan yang diberikan dapat berupa:

  • DITOLAK - Ketika Automerge menolak nilai bidang masuk demi nilai di server.

  • DITAM BAHKAN - Ketika Automerge menambahkan pada bidang masuk karena tidak ada nilai yang sudah ada sebelumnya di server.

  • DITAMBAHKAN - Automerge Ketika 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, pilih Logs Insights, pilih grup AWS AppSync log untuk GraphQL API Anda, lalu pilih AWS AppSync query di bawah Kueri sampel.

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=YourGraphQLAPIID untuk pencarian Anda.

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.