Memecahkan masalah canary yang gagal - Amazon CloudWatch

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah canary yang gagal

Jika canary Anda gagal, periksa hal berikut ini untuk pemecahan masalah.

Pemecahan masalah umum

  • Gunakan halaman detail canary untuk menemukan informasi lebih lanjut. Di CloudWatch konsol, pilih Canaries di panel navigasi dan kemudian pilih nama kenari untuk membuka halaman detail kenari. Di tab Ketersediaan, periksa SuccessPercentmetrik untuk melihat apakah masalahnya konstan atau terputus-putus.

    Sementara masih di tab Ketersediaan, pilih titik data yang gagal untuk melihat tangkapan layar, log, dan laporan langkah (jika tersedia) untuk proses yang gagal tersebut.

    Jika laporan langkah tersedia karena langkah-langkah adalah bagian dari skrip Anda, periksa untuk melihat langkah mana yang telah gagal dan lihat tangkapan layar terkait untuk melihat masalah yang dilihat pelanggan Anda.

    Anda juga dapat memeriksa file HAR untuk melihat apakah satu atau beberapa permintaan gagal. Anda dapat menggali lebih dalam dengan menggunakan log untuk menelusuri permintaan dan kesalahan yang gagal. Akhirnya, Anda dapat membandingkan artefak ini dengan artefak dari operasi canary yang berhasil untuk menunjukkan masalah.

    Secara default, CloudWatch Synthetics menangkap tangkapan layar untuk setiap langkah dalam kenari UI. Namun demikian, skrip Anda mungkin dikonfigurasi untuk menonaktifkan tangkapan layar. Selama proses debug, Anda mungkin ingin mengaktifkan tangkapan layar lagi. Demikian pula, untuk canary API Anda mungkin ingin melihat header dan isi permintaan dan respons HTTP selama proses debug. Untuk informasi tentang cara menyertakan data ini dalam laporan, silakan lihat executeHttpStep(StepName, requestOptions, [callback], [stepConfig]).

  • Jika Anda memiliki deployment terbaru untuk aplikasi Anda, kembalikan ke keadaan semula dan kemudian lakukan debug nanti.

  • Hubungkan ke titik akhir Anda secara manual untuk melihat apakah Anda dapat mereproduksi masalah yang sama.

Canary gagal setelah pembaruan lingkungan Lambda

CloudWatch Canary Synthetics diimplementasikan sebagai fungsi Lambda di akun Anda. Fungsi Lambda ini tunduk pada pembaruan runtime Lambda reguler yang berisi pembaruan keamanan, perbaikan bug, dan peningkatan lainnya. Lambda berusaha untuk menyediakan pembaruan runtime yang kompatibel dengan fungsi yang ada. Namun, seperti halnya patching perangkat lunak, ada kasus yang jarang terjadi di mana pembaruan runtime dapat berdampak negatif pada fungsi yang ada. Jika Anda yakin kenari Anda telah terpengaruh oleh pembaruan runtime Lambda, Anda dapat menggunakan mode manual manajemen runtime Lambda (di Wilayah yang didukung) untuk memutar kembali versi runtime Lambda untuk sementara waktu. Ini membuat fungsi kenari Anda tetap berfungsi dan meminimalkan gangguan, memberikan waktu untuk memperbaiki ketidakcocokan sebelum kembali ke versi runtime terbaru.

Jika kenari Anda gagal setelah pembaruan runtime Lambda, solusi terbaik adalah meningkatkan ke salah satu runtime Synthetics terbaru. Untuk informasi selengkapnya tentang runtime terbaru, lihatVersi runtime Synthetics.

Sebagai solusi alternatif, di Wilayah di mana kontrol manajemen runtime Lambda tersedia, Anda dapat mengembalikan kenari kembali ke runtime terkelola Lambda yang lebih lama, menggunakan mode manual untuk kontrol manajemen runtime. Anda dapat mengatur mode manual menggunakan AWS CLI atau dengan menggunakan konsol Lambda, menggunakan langkah-langkah di bawah ini di bagian berikut.

Awas

Saat Anda mengubah pengaturan runtime ke mode manual, fungsi Lambda Anda tidak akan menerima pembaruan keamanan otomatis hingga dikembalikan ke mode Otomatis. Selama periode ini, fungsi Lambda Anda mungkin rentan terhadap kerentanan keamanan.

Prasyarat

Langkah 1: Dapatkan ARN fungsi Lambda

Jalankan perintah berikut untuk mengambil EngineArn bidang dari respons. Ini EngineArn adalah ARN dari fungsi Lambda yang dikaitkan dengan kenari. Anda akan menggunakan ARN ini dalam langkah-langkah berikut.

aws synthetics get-canary --name my-canary | jq '.Canary.EngineArn'

Contoh keluaran dariEngingArn:

"arn:aws:lambda:us-west-2:123456789012:function:cwsyn-my-canary-dc5015c2-db17-4cb5-afb1-EXAMPLE991:8"

Langkah 2: Dapatkan ARN versi runtime Lambda terakhir yang bagus

Untuk membantu memahami apakah kenari Anda terkena dampak pembaruan runtime Lambda, periksa apakah tanggal dan waktu perubahan ARN versi runtime Lambda di log Anda muncul pada tanggal dan waktu ketika Anda melihat dampak pada kenari Anda. Jika tidak cocok, itu mungkin bukan pembaruan runtime Lambda yang menyebabkan masalah Anda.

Jika kenari Anda dipengaruhi oleh pembaruan runtime Lambda, Anda harus mengidentifikasi ARN dari versi runtime Lambda yang berfungsi yang sebelumnya Anda gunakan. Ikuti petunjuk dalam Mengidentifikasi perubahan versi runtime untuk menemukan ARN dari runtime sebelumnya. Rekam ARN versi runtime, dan lanjutkan ke Langkah 3. untuk mengatur konfigurasi manajemen runtime.

Jika kenari Anda belum terpengaruh oleh pembaruan lingkungan Lambda, maka Anda dapat menemukan ARN dari versi runtime Lambda yang saat ini Anda gunakan. Jalankan perintah berikut untuk mengambil fungsi Lambda dari respons. RuntimeVersionArn

aws lambda get-function-configuration \ --function-name "arn:aws:lambda:us-west-2:123456789012:function:cwsyn-my-canary-dc5015c2-db17-4cb5-afb1-EXAMPLE991:8" | jq '.RuntimeVersionConfig.RuntimeVersionArn'

Contoh keluaran dariRuntimeVersionArn:

"arn:aws:lambda:us-west-2::runtime:EXAMPLE647b82f490a45d7ddd96b557b916a30128d9dcab5f4972911ec0f"

Langkah 3: Memperbarui konfigurasi manajemen runtime Lambda

Anda dapat menggunakan konsol Lambda AWS CLI atau Lambda untuk memperbarui konfigurasi manajemen runtime.

Untuk mengatur mode manual konfigurasi manajemen runtime Lambda menggunakan AWS CLI

Masukkan perintah berikut untuk mengubah manajemen runtime fungsi Lambda ke mode manual. Pastikan untuk mengganti function-name dan qualifier dengan fungsi Lambda ARN dan nomor versi fungsi Lambda masing-masing, menggunakan nilai yang Anda temukan di Langkah 1. Juga ganti runtime-version-arn dengan versi ARN yang Anda temukan di Langkah 2.

aws lambda put-runtime-management-config \ --function-name "arn:aws:lambda:us-west-2:123456789012:function:cwsyn-my-canary-dc5015c2-db17-4cb5-afb1-EXAMPLE991" \ --qualifier 8 \ --update-runtime-on "Manual" \ --runtime-version-arn "arn:aws:lambda:us-west-2::runtime:a993d90ea43647b82f490a45d7ddd96b557b916a30128d9dcab5f4972911ec0f"
Untuk mengubah kenari ke mode manual menggunakan konsol Lambda
  1. Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/.

  2. Pilih tab Versi, pilih tautan nomor versi yang sesuai dengan ARN Anda, dan pilih tab Kode.

  3. Gulir ke bawah ke pengaturan Runtime, perluas konfigurasi manajemen Runtime, dan salin ARN versi Runtime.

    Menampilkan bagian pengaturan Runtime pada layar, dan menunjukkan di mana ARN versi Runtime muncul di bagian ini.
  4. Pilih Edit konfigurasi manajemen runtime, pilih Manual, tempel ARN versi runtime yang Anda salin sebelumnya ke bidang ARN versi Runtime. Lalu, pilih Simpan.

    Menampilkan layar konfigurasi manajemen Runtime, dan menunjukkan tempat untuk menempelkan ARN versi Runtime yang sebelumnya Anda salin..

Kenari saya diblokir oleh AWS WAF

Untuk mengizinkan lalu lintas kenari AWS WAF, buat kondisi pencocokan AWS WAF string yang memungkinkan string kustom yang Anda tentukan. Untuk informasi selengkapnya, lihat Bekerja dengan kondisi pencocokan string dalam AWS WAF dokumentasi.

Kami sangat menyarankan agar Anda menggunakan string user-agent kustom Anda sendiri alih-alih menggunakan nilai default. Ini memberikan kontrol yang lebih baik atas AWS WAF penyaringan dan meningkatkan keamanan.

Untuk menyetel string user-agent kustom, lakukan hal berikut:

Menunggu elemen untuk muncul

Setelah menganalisis log dan tangkapan layar Anda, jika Anda melihat bahwa skrip Anda menunggu elemen muncul di layar dan waktu habis, periksa tangkapan layar yang relevan untuk melihat apakah elemen tersebut muncul di halaman. Verifikasi xpath Anda untuk memastikan bahwa itu benar.

Untuk masalah terkait Dalang, periksa halaman Dalang atau forum internet. GitHub

Node tidak terlihat atau tidak HTMLElement untuk page.click ()

Jika simpul tidak terlihat atau bukan merupakan HTMLElement untuk page.click(), pertama verifikasi xpath yang Anda gunakan untuk mengklik elemen tersebut. Juga, jika elemen Anda berada di bagian bawah layar, sesuaikan viewport Anda. CloudWatch Synthetics secara default menggunakan viewport 1920 * 1080. Anda dapat mengatur viewport yang berbeda ketika Anda meluncurkan browser atau dengan menggunakan fungsi Puppeteer page.setViewport.

Tidak dapat mengunggah artefak ke S3, Pengecualian: Tidak dapat mengambil lokasi bucket S3: Akses Ditolak

Jika kenari Anda gagal karena kesalahan Amazon S3, CloudWatch Synthetics tidak dapat mengunggah tangkapan layar, log, atau laporan yang dibuat untuk kenari karena masalah izin. Periksa hal-hal berikut:

  • Periksa apakah peran IAM canary memiliki izin s3:ListAllMyBuckets, izin s3:GetBucketLocation untuk bucker Amazon S3 yang benar, dan izin s3:PutObject untuk bucket tempat canary menyimpan artefaknya. Jika canary melakukan pemantauan visual, peran tersebut juga memerlukan izin s3:GetObject untuk bucket. Izin yang sama ini juga diperlukan dalam Kebijakan Titik Akhir Gateway Amazon VPC S3, jika canary di-deploy di VPC dengan titik akhir VPC.

  • Jika kenari menggunakan kunci yang dikelola AWS KMS pelanggan untuk enkripsi alih-alih kunci AWS terkelola standar (default), peran IAM kenari mungkin tidak memiliki izin untuk mengenkripsi atau mendekripsi menggunakan kunci itu. Untuk informasi selengkapnya, lihat Mengenkripsi artefak canary.

  • Kebijakan bucket Anda mungkin tidak mengizinkan mekanisme enkripsi yang digunakan canary. Sebagai contoh, jika kebijakan bucket Anda mengamanatkan untuk menggunakan mekanisme enkripsi tertentu atau kunci KMS, maka Anda harus memilih mode enkripsi yang sama untuk canary Anda.

Jika canary melakukan pemantauan visual, silakan lihat Memperbarui lokasi artefak dan enkripsi saat menggunakan pemantauan visual untuk informasi lebih lanjut.

Kesalahan: Kesalahan protokol (Runtime. callFunctionOn): Target ditutup.

Kesalahan ini muncul jika ada beberapa permintaan jaringan setelah halaman atau browser ditutup. Anda mungkin lupa untuk menunggu operasi asynchronous. Setelah menjalankan skrip Anda, CloudWatch Synthetics menutup browser. Eksekusi setiap operasi asynchronous setelah browser ditutup dapat menyebabkan target closed error.

Canary Gagal. Kesalahan: Tidak ada datapoint - Canary Menunjukkan kesalahan batas waktu

Ini berarti bahwa canary Anda berjalan melebihi batas waktu. Eksekusi kenari berhenti sebelum CloudWatch Synthetics dapat mempublikasikan metrik CloudWatch persen keberhasilan atau memperbarui artefak seperti file HAR, log, dan tangkapan layar. Jika batas waktu Anda terlalu rendah, Anda dapat meningkatkannya.

Secara bawaan, nilai batas waktu canary sama dengan frekuensinya. Anda dapat secara manual menyesuaikan nilai batas waktu menjadi kurang dari atau sama dengan frekuensi canary. Jika frekuensi canary Anda rendah, Anda harus meningkatkan frekuensi untuk meningkatkan batas waktu. Anda dapat menyesuaikan frekuensi dan nilai batas waktu di bawah Jadwal saat Anda membuat atau memperbarui kenari dengan menggunakan konsol Synthetics CloudWatch .

Pastikan nilai batas waktu canary Anda tidak lebih singkat dari 15 detik untuk memungkinkan Lambda melakukan cold start dan waktu yang diperlukan untuk melakukan boot up instrumentasi canary.

Artefak kenari tidak tersedia untuk dilihat di konsol CloudWatch Synthetics saat kesalahan ini terjadi. Anda dapat menggunakan CloudWatch Log untuk melihat log kenari.

Untuk menggunakan CloudWatch Log untuk melihat log untuk kenari
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Pada panel navigasi kiri, pilih Grup log.

  3. Temukan grup log dengan mengetik nama canary di kotak filter. Grup log untuk kenari memiliki nama/aws/lambda/cwsyn- canaryName -randomId.

Coba untuk mengakses titik akhir internal

Jika Anda ingin kenari Anda mengakses titik akhir di jaringan internal Anda, kami sarankan Anda mengatur CloudWatch Synthetics untuk menggunakan VPC. Untuk informasi selengkapnya, lihat Menjalankan canary di VPC.

Masalah peningkatan dan penurunan versi runtime Canary

Jika Anda baru saja meningkatkan canary dari versi runtime syn-1.0 ke versi yang lebih baru, itu mungkin merupakan masalah berbagi permintaan lintas asal (CORS). Untuk informasi selengkapnya, lihat Masalah berbagi permintaan lintas asal (CORS).

Jika Anda baru-baru ini menurunkan versi kenari ke versi runtime yang lebih lama, periksa untuk memastikan bahwa fungsi CloudWatch Synthetics yang Anda gunakan tersedia dalam versi runtime yang lebih lama yang Anda turunkan. Misalnya, fungsi executeHttpStep tersedia untuk versi runtime syn-nodejs-2.2 dan yang lebih baru. Untuk memeriksa ketersediaan fungsi, silakan lihat Menulis skrip canary.

catatan

Saat Anda berencana untuk memutakhirkan atau menurunkan versi runtime untuk kenari, sebaiknya Anda mengkloning kenari terlebih dahulu dan memperbarui versi runtime di kenari kloning. Setelah Anda telah memverifikasi bahwa klon dengan versi runtime baru bekerja, Anda dapat memperbarui versi runtime canary asli Anda dan menghapus klon tersebut.

Masalah berbagi permintaan lintas asal (CORS)

Dalam UI canary, jika beberapa permintaan jaringan gagal dengan 403 atau net::ERR_FAILED, periksa apakah canary memiliki pelacakan aktif yang diaktifkan dan juga gunakan fungsi Puppeteer page.setExtraHTTPHeaders untuk menambahkan header. Jika demikian, permintaan jaringan yang gagal mungkin disebabkan oleh pembatasan berbagi permintaan lintas asal (CORS). Anda dapat mengonfirmasi apakah ini terjadi dengan menonaktifkan pelacakan aktif atau menghapus header HTTP tambahan.

Mengapa hal ini terjadi?

Ketika pelacakan aktif digunakan, header tambahan ditambahkan ke semua permintaan keluar untuk melacak panggilan. Memodifikasi header permintaan dengan menambahkan header jejak atau menambahkan header tambahan menggunakan Puppeteer page.setExtraHTTPHeaders menyebabkan pemeriksaan CORS untuk XMLHttp permintaan Permintaan (XHR).

Jika Anda tidak ingin menonaktifkan pelacakan aktif atau menghapus header tambahan, Anda dapat memperbarui aplikasi web Anda untuk mengizinkan akses lintas asal atau Anda dapat menonaktifkan keamanan web dengan menggunakan bendera disable-web-security saat Anda meluncurkan browser Chrome di skrip Anda.

Anda dapat mengganti parameter peluncuran yang digunakan oleh CloudWatch Synthetics dan meneruskan parameter flag disable-web-security tambahan dengan menggunakan fungsi peluncuran CloudWatch Synthetics. Untuk informasi selengkapnya, lihat Fungsi perpustakaan tersedia untuk skrip kenari Node.js menggunakan Puppeteer.

catatan

Anda dapat mengganti parameter peluncuran yang digunakan oleh CloudWatch Synthetics saat Anda menggunakan versi runtime syn-nodejs-2.1 atau yang lebih baru.

Masalah kondisi balapan kenari

Untuk pengalaman terbaik saat menggunakan CloudWatch Synthetics, pastikan bahwa kode yang ditulis untuk kenari adalah idempoten. Jika tidak, dalam kasus yang jarang terjadi, lari kenari dapat menghadapi kondisi balapan ketika kenari berinteraksi dengan sumber daya yang sama di lintasan yang berbeda.

Pemecahan masalah canary di VPC

Jika Anda memiliki masalah setelah membuat atau memperbarui canary di VPC, salah satu bagian berikut dapat membantu Anda memecahkan masalah.

Canary baru dalam status kesalahan atau canary tidak dapat diperbarui

Jika Anda membuat canary untuk beroperasi di VPC dan segera masuk ke status error, atau Anda tidak dapat memperbarui canary untuk berjalan di VPC, peran canary tersebut mungkin tidak memiliki izin yang tepat. Untuk berjalan di VPC, canary harus memiliki izin ec2:CreateNetworkInterface, ec2:DescribeNetworkInterfaces, dan ec2:DeleteNetworkInterface. Semua izin ini disertakan dalam kebijakan terkelola AWSLambdaVPCAccessExecutionRole. Untuk informasi selengkapnya, silakan lihat Peran Eksekusi dan Izin Pengguna.

Jika masalah ini terjadi ketika Anda membuat canary, Anda harus menghapus canary tersebut, dan membuat canary yang baru. Jika Anda menggunakan CloudWatch konsol untuk membuat kenari baru, di bawah Izin Akses, pilih Buat peran baru. Peran baru yang mencakup semua izin yang diperlukan untuk menjalankan canary akan dibuat.

Jika masalah ini terjadi ketika Anda memperbarui canary, Anda dapat memperbarui canary lagi dan memberikan peran baru yang memiliki izin yang diperlukan.

Kesalahan "Tidak ada hasil uji yang dikembalikan"

Jika canary menampilkan kesalahan "tidak ada hasil uji yang dikembalikan", salah satu masalah berikut mungkin menjadi penyebabnya:

  • Jika VPC Anda tidak memiliki akses internet, Anda harus menggunakan titik akhir VPC untuk memberikan akses kenari ke dan Amazon S3. CloudWatch Anda harus mengaktifkan Resolusi DNS dan opsi nama host DNS di VPC untuk alamat titik akhir ini agar dapat diselesaikan dengan benar. Untuk informasi selengkapnya, lihat Menggunakan DNS dengan VPC Anda dan Menggunakan CloudWatch dan CloudWatch Synthetics dengan titik akhir VPC antarmuka.

  • Canary harus berjalan di subnet privat di dalam VPC. Untuk memeriksa hal ini, buka halaman Subnet di konsol VPC. Periksa subnet yang Anda pilih ketika mengonfigurasikan canary. Jika subnet tersebut memiliki jalur menuju gateway internet (igw-), mereka bukan subnet privat.

Untuk membantu Anda memecahkan masalah ini, silakan lihat log untuk canary.

Untuk melihat peristiwa log dari canary
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Pada panel navigasi, silakan pilih Grup log.

  3. Pilih nama grup log canary. Nama grup log dimulai dengan /aws/lambda/cwsyn-canary-name.

Memecahkan masalah kenari coba ulang otomatis

Untuk memahami mengapa kenari Anda gagal atau menganalisis upaya gagal tertentu, ikuti langkah-langkah pemecahan masalah ini.

  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di panel navigasi, pilih Application Signals, Synthetics Canaries.

  3. Pilih Canary.

  4. Di bawah tab Availability, Anda dapat memeriksa rincian run dengan:

    • Memilih titik tertentu pada grafik Canary Runs

    • Di bawah Masalah, memilih catatan. Perhatikan bahwa upaya coba lagi ditandai dan berbagi stempel waktu dengan jadwal berjalan

    Anda dapat melihat informasi tambahan di bawah Langkah, Tangkapan Layar, Log, file HAR, atau Jejak (jika penelusuran aktif diaktifkan).

  5. Di bawah artefak Canary dan lokasi Amazon S3, Anda dapat mengakses artefak dan menavigasi ke folder atau ember Amazon S3 melalui tautan yang tersedia.

  6. Grafik Canary menjalankan menggunakan titik berwarna berbeda untuk menunjukkan berbagai status:

    • Blue Points - Menunjukkan keberhasilan berjalan terjadwal dengan nilai konsisten 100%

    • Red Points - Menampilkan kegagalan dari kedua jadwal berjalan dan semua percobaan ulang, ditandai pada 0%

    • Poin Oranye - Menampilkan 0% atau 100%. 0% menunjukkan percobaan ulang yang sedang berlangsung setelah kegagalan upaya sebelumnya dan 100% berarti keberhasilan tercapai setelah mencoba lagi