Fungsi perpustakaan tersedia untuk Node.js canary - Amazon CloudWatch

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

Fungsi perpustakaan tersedia untuk Node.js canary

Bagian ini menjelaskan fungsi pustaka yang tersedia untuk skrip canary menggunakan runtime Node.js.

addExecutionError(ErrorMessage, ex);

errorMessage menjelaskan kesalahan dan ex adalah pengecualian yang ditemui

Anda dapat menggunakan addExecutionError untuk mengatur kesalahan eksekusi bagi canary Anda. Itu menggagalkan canary tanpa mengganggu eksekusi skrip. Itu juga tidak memengaruhi metrik successPercent Anda.

Anda harus melacak kesalahan sebagai kesalahan eksekusi hanya jika kesalahan itu tidak penting untuk menunjukkan keberhasilan atau kegagalan skrip canary Anda.

Contoh penggunaan addExecutionError adalah sebagai berikut. Anda memantau ketersediaan titik akhir Anda dan mengambil tangkapan layar setelah halaman dimuat. Karena kegagalan mengambil tangkapan layar tidak menentukan ketersediaan titik akhir, Anda dapat menangkap kesalahan apa pun yang dihadapi saat mengambil tangkapan layar dan menambahkannya sebagai kesalahan eksekusi. Metrik ketersediaan Anda masih akan menunjukkan bahwa titik akhir telah aktif dan berjalan, namun status canary Anda akan ditandai sebagai gagal. Blok kode sampel berikut menangkap kesalahan tersebut dan menambahkannya sebagai kesalahan eksekusi.

try {await synthetics.executeStep(stepName, callbackFunc);} catch(ex) {synthetics.addExecutionError('Unable to take screenshot ', ex);}

getCanaryName();

Mengembalikan nama dari canary.

getCanaryArn();

Mengembalikan ARN dari canary.

getCanaryUserAgentString();

Mengembalikan agen pengguna kustom dari canary.

getRuntimeVersion();

Fungsi ini tersedia pada versi runtime syn-nodejs-3.0 dan yang lebih baru. Fungsi ini mengembalikan versi runtime Synthetics dari canary. Misalnya,nilai yang dikembalikan bisa menjadi syn-nodejs-3.0.

getLogLevel();

Mengambil level log saat ini untuk pustaka Synthetics. Nilai yang mungkin adalah sebagai berikut:

  • 0 – Debug

  • 1 – Info

  • 2 – Peringatan

  • 3 – Kesalahan

Contoh:

let logLevel = synthetics.getLogLevel();

setLogLevel();

Mengatur tingkat log untuk pustaka Sintetis. Nilai yang mungkin adalah sebagai berikut:

  • 0 – Debug

  • 1 – Info

  • 2 – Peringatan

  • 3 – Kesalahan

Contoh:

synthetics.setLogLevel(0);

ExecuteStep (StepName,, [StepConfig] functionToExecute)

Menjalankan langkah yang disediakan, membungkusnya dengan start/pass/fail logging and pass/fail dan metrik durasi.

Fungsi executeStep juga melakukan hal berikut:

  • Log bahwa langkah dimulai

  • Memulai timer

  • Mengeksekusi fungsi yang disediakan

  • Ketika fungsi kembali normal, itu dihitung sebagai passing. Jika fungsi melempar, itu dianggap gagal

  • Mengakhiri timer

  • Mencatat log jika langkah berhasil atau gagal

  • Memancarkan stepName SuccessPercent metrik, 100 untuk lulus atau 0 untuk kegagalan

  • MemancarkanstepName Duration metric, dengan nilai berdasarkan waktu mulai dan akhir langkah

  • Mengembalikan apa yang functionToExecute dikembalikan atau kembali melempar apa yang dilemparkan functionToExecute

  • Menambahkan ringkasan eksekusi langkah ke laporan kenari

Contoh

await synthetics.executeStep(stepName, async function () { return new Promise((resolve, reject) => { const req = https.request(url, (res) => { console.log(`Status: ${res.statusCode}`); if (res.statusCode >= 400) { reject(new Error(`Request failed with status ${res.statusCode} for ${url}`)); } else { resolve(); } }); req.on('error', (err) => { reject(new Error(`Request failed for ${url}: ${err.message}`)); }); req.end(); }); });

executeHttpStep(StepName, requestOptions, [callback], [stepConfig])

Mengeksekusi permintaan HTTP yang disediakan sebagai langkah, dan menerbitkan SuccessPercent (lulus/gagal) dan metrik Duration.

executeHttpStepmenggunakan fungsi asli HTTP atau HTTPS di bawah tenda, tergantung pada protokol yang ditentukan dalam permintaan.

Fungsi ini juga menambahkan ringkasan pelaksanaan langkah ke laporan canary. Ringkasan mencakup detail tentang setiap permintaan HTTP, seperti berikut ini:

  • Waktu mulai

  • Waktu akhir

  • Status (LULUS/GAGAL)

  • Alasan kegagalan, jika gagal

  • Detail panggilan HTTP seperti request/response header, body, kode status, pesan status, dan timing kinerja.

Parameter

StepName () String

Menentukan nama dari langkah tersebut. Nama ini juga digunakan untuk menerbitkan CloudWatch metrik untuk langkah ini.

requestOptions () Object or String

Nilai parameter ini dapat berupa URL, string URL, atau sebuah objek. Jika itu adalah objek, maka itu harus berupa serangkaian opsi yang dapat dikonfigurasi untuk membuat permintaan HTTP. Ini mendukung semua opsi di http.request(options[, callback]) dalam dokumentasi Node.js.

Selain opsi Node.js ini, requestOptions mendukung parameter tambahan body. Anda dapat menggunakan parameter body untuk meneruskan data sebagai bodi permintaan.

panggilan balik () response

(Opsional) Ini adalah fungsi pengguna yang diinvokasi dengan respons HTTP. Responsnya adalah dari tipe Class: http. IncomingMessage.

StepConfig () object

(Opsional) Gunakan parameter ini untuk mengganti konfigurasi synthetics global dengan konfigurasi yang berbeda untuk langkah ini.

Contoh penggunaan executeHttpStep

Rangkaian contoh berikut membangun satu sama lain untuk menggambarkan berbagai penggunaan opsi ini.

Contoh pertama ini mengonfigurasi parameter permintaan. Anda dapat meneruskan URL sebagai requestOptions:

let requestOptions = 'https://www.amazon.com';

Atau Anda dapat meneruskan satu set opsi:

let requestOptions = { 'hostname': 'myproductsEndpoint.com', 'method': 'GET', 'path': '/test/product/validProductName', 'port': 443, 'protocol': 'https:' };

Contoh berikutnya menciptakan fungsi callback yang menerima respons. Secara default, jika Anda tidak menentukan callback, CloudWatch Synthetics memvalidasi bahwa statusnya antara 200 dan 299 inklusif.

// Handle validation for positive scenario const callback = async function(res) { return new Promise((resolve, reject) => { if (res.statusCode < 200 || res.statusCode > 299) { throw res.statusCode + ' ' + res.statusMessage; } let responseBody = ''; res.on('data', (d) => { responseBody += d; }); res.on('end', () => { // Add validation on 'responseBody' here if required. For ex, your status code is 200 but data might be empty resolve(); }); }); };

Contoh berikutnya membuat konfigurasi untuk langkah ini yang mengesampingkan konfigurasi Synthetics global CloudWatch . Konfigurasi langkah dalam contoh ini memungkinkan header permintaan, header respons, bodi permintaan (data posting), dan bodi respons dalam laporan Anda dan membatasi nilai header 'X-Amz-Security-Token' dan 'Authorization'. Secara bawaan, nilai-nilai ini tidak termasuk dalam laporan untuk alasan keamanan. Jika Anda memilih untuk memasukkannya, data hanya disimpan dalam bucket S3 Anda.

// By default headers, post data, and response body are not included in the report for security reasons. // Change the configuration at global level or add as step configuration for individual steps let stepConfig = { includeRequestHeaders: true, includeResponseHeaders: true, restrictedHeaders: ['X-Amz-Security-Token', 'Authorization'], // Restricted header values do not appear in report generated. includeRequestBody: true, includeResponseBody: true };

Contoh terakhir ini meneruskan permintaan Anda executeHttpStepdan memberi nama langkahnya.

await synthetics.executeHttpStep('Verify GET products API', requestOptions, callback, stepConfig);

Dengan kumpulan contoh ini, CloudWatch Synthetics menambahkan detail dari setiap langkah dalam laporan Anda dan menghasilkan metrik untuk setiap langkah menggunakan StepName.

Anda akan melihat metrik successPercent dan duration untuk langkah Verify GET products API. Anda dapat memantau performa API Anda dengan memantau metrik untuk langkah panggilan API Anda.

Untuk sampel skrip lengkap yang menggunakan fungsi-fungsi ini, silakan lihat Canary API multi-langkah.