Metrik tingkat permintaan membantu Anda melacak pemanggilan fungsi dan eksekusinya. Dengan fitur ini, Anda dapat mendeteksi serta memecahkan masalah secara dini dan menganalisis hambatan aplikasi. Setelah mengaktifkan fitur ini, Anda dapat mengelola dan mengoptimalkan aplikasi fungsi secara efisien.
Ikhtisar
Metrik tingkat permintaan adalah metrik yang dihasilkan ketika suatu fungsi mengeksekusi permintaan. Setelah mengaktifkan fitur ini, sistem akan mengumpulkan metrik performa, pengecualian, dan jejak setiap kali fungsi dijalankan. Metrik tersebut dikirim ke Logstore yang telah ditentukan.
Metrik performa mencakup informasi berikut: penggunaan memori, waktu eksekusi fungsi, waktu inisialisasi, dan cold start.
Pengecualian mencakup kegagalan eksekusi dan detail kesalahan.
Metrik jejak mencakup informasi berikut: waktu eksekusi tautan kunci sistem, pengambilan sampel analisis jejak terintegrasi, jalur fungsi HTTP, kode status, dan alamat IP klien.
Setelah mengaktifkan fitur metrik tingkat permintaan, Function Compute mengirimkan metrik eksekusi setiap permintaan ke Logstores. Gambar berikut menunjukkan contoh log dari sebuah permintaan.

Skenario
Melihat detail eksekusi fungsi, metrik performa, dan pesan kesalahan
Permintaan fungsi ditampilkan di konsol Function Compute. Anda dapat masuk ke konsol untuk melihat informasi setiap permintaan, termasuk status eksekusi, ID instans, waktu eksekusi, penggunaan memori, dan log permintaan. Gambar berikut menunjukkan contoh metrik tingkat permintaan.
CatatanAnda juga dapat melihat permintaan meskipun fitur metrik tingkat permintaan dinonaktifkan. Namun, pengecualian mungkin terjadi dalam skenario berikut:
Jika ID permintaan muncul beberapa kali, Anda tidak dapat menemukan log permintaan. Hal ini terjadi selama percobaan ulang pemanggilan asinkron.
Jika
FC Invoke Start RequestId: xxxdanFC Invoke End RequestId: xxxdicetak dalam runtime kustom atau Custom Container runtime, satu pemanggilan mungkin muncul dua kali dalam daftar permintaan.
Mencari statistik dan membuat dasbor
Metrik tingkat permintaan dikirim ke Logstores dalam format
key:val. Anda dapat membuat dasbor sesuai dengan kebutuhan bisnis. Untuk informasi lebih lanjut, lihat Buat dasbor.
Catatan penggunaan
Ruang lingkup efektif
Saat mengonfigurasi log fungsi, Anda dapat mengonfigurasi parameter Metrik Tingkat Permintaan di konsol Function Compute untuk mengaktifkan fitur ini. Jika parameter ini diaktifkan, entri log dibuat setiap kali fungsi mengeksekusi permintaan.
Penagihan
Anda akan dikenakan biaya untuk penyimpanan log di Layanan Log Sederhana. Untuk informasi lebih lanjut tentang harga Layanan Log Sederhana, lihat Pricing.
Aktifkan fitur metrik tingkat permintaan
Gunakan konsol Function Compute
Sebelum memulai
Function Compute
Layanan Log Sederhana
Prosedur
Masuk ke konsol Function Compute. Di bilah navigasi sisi kiri, klik Services & Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Services, temukan layanan yang diinginkan dan klik Configure di kolom Actions.
Di bagian Log Settings halaman Modifikasi Layanan, konfigurasikan parameter sesuai kebutuhan bisnis Anda dan klik Save.
Tabel berikut menjelaskan parameter yang diperlukan. Pertahankan nilai default untuk parameter lainnya.
Parameter
Deskripsi
Contoh
Pengaturan Log
Tentukan apakah akan mengaktifkan fitur logging dan menggunakan Layanan Log Sederhana untuk menyimpan log eksekusi fungsi. Untuk informasi lebih lanjut, lihat Konfigurasikan logging.
Aktifkan
Proyek Layanan Log Sederhana
Pilih proyek log yang telah Anda konfigurasikan.
aliyun-fc-hangzhou-2238f0df-a742-524f-9f90-976ba*******
Logstore
Pilih Logstore yang telah Anda konfigurasikan.
function-log
Metrik Tingkat Permintaan
Tentukan apakah ingin melihat metrik tingkat permintaan. Setelah Anda mengaktifkan fitur ini, metrik pemanggilan untuk fungsi dikumpulkan dan dikirim ke Logstore yang ditentukan.
Aktifkan
Gunakan Serverless Devs
Sebelum memulai
Prosedur
Buat direktori kode. Contoh kode berikut memberikan contoh struktur direktori:
. ├── code │ └── index.js └── s.yamlBuat direktori kode. Contoh berikut menunjukkan struktur direktori:
Dalam contoh ini, bidang enableRequestMetrics digunakan untuk mengonfigurasi fitur metrik tingkat permintaan. Sebelum mengaktifkan fitur ini, Anda harus mengaktifkan fitur logging dan menyetel bidang logstore dan project ke Logstore dan proyek log yang ada di akun Anda.
edition: 1.0.0 name: hello-world-app access: "default" vars: region: "cn-hangzhou" service: name: "hello-world-service" description: 'hello world by serverless devs' logConfig: # Tentukan proyek dan Logstore yang sebenarnya digunakan. Atau, atur bidang ini ke auto untuk memungkinkan sistem membuat proyek dan Logstore untuk Anda. project: 'your-project' logstore: 'your-logstore' enableRequestMetrics: true # Aktifkan fitur metrik tingkat permintaan. Setelah Anda mengaktifkan fitur ini, sistem mengumpulkan metrik setiap kali fungsi mengeksekusi permintaan. enableInstanceMetrics: true role: 'acs:ram::<accountID>:role/aliyunfcdefaultrole' # Ganti <accountID> dengan ID akun Alibaba Cloud Anda. services: helloworld: component: fc props: region: ${vars.region} service: ${vars.service} function: name: "hello-world" description: 'hello world by serverless devs' runtime: nodejs14 codeUri: ./code handler: index.handler memorySize: 128 timeout: 60Jalankan perintah berikut untuk menerapkan aplikasi:
sudo s deploy -yJika eksekusi berhasil, Anda dapat masuk ke konsol Function Compute untuk memeriksa apakah fitur metrik tingkat permintaan fungsi yang diterapkan telah diaktifkan.
Kueri log
Format log
Topik log metrik tingkat permintaan mengikuti format berikut: FCRequestMetrics:serviceName/functionName. Anda dapat menggunakan pernyataan __topic__: "FCRequestMetrics:serviceName/functionName" untuk memfilter semua log metrik tingkat permintaan di Layanan Log Sederhana. Untuk informasi lebih lanjut, lihat Panduan kueri dan analisis log.
Metrik
Tabel berikut menjelaskan metrik pada permintaan.
Metrik | Deskripsi | Contoh | Dicatat untuk semua pemanggilan |
serviceName | Nama layanan. | my-service | Ya |
functionName | Nama fungsi. | my-function | Ya |
versionId | Nama versi. | 12 | Ya |
qualifier | Alias layanan. Nilai default: LATEST. | prod | Ya |
requestId | ID permintaan. | db72ce53-ccbe-4216-af55-642622e01494 | Ya |
operation | Nama operasi. | InvokeFunction | Ya |
invocationType | Jenis pemanggilan. Nilai valid: Sync: pemanggilan sinkron Async: pemanggilan asinkron | Sync | Ya |
memoryMB | Batas atas memori. | 512 | Ya |
memoryUsageMB | Memori yang dikonsumsi oleh eksekusi fungsi. | 410 | Ya |
durationMs | Memori yang dikonsumsi oleh eksekusi fungsi. | 20,20 | Ya |
isColdStart | Menentukan apakah cold start terjadi. Catatan Ketika permintaan dikirim ke Function Compute, sistem Function Compute tidak memiliki instans yang dimulai untuk mengeksekusi permintaan. Dalam kasus ini, Anda harus membuat instans baru, mengunduh kode, dan memulai lingkungan eksekusi. Dalam kasus ini, cold start terjadi. Function Compute membuat instans sebelumnya untuk mengurangi cold start. Cold start tidak terjadi jika permintaan masuk dikirim ke instans yang telah dibuat. | false | Ya |
instanceEvent | Peristiwa instans. Nilai valid: ColdStart. Metrik ini hanya dicatat ketika permintaan cold start terjadi. | ColdStart | Tidak |
hasFunctionError | Menentukan apakah kesalahan fungsi terjadi selama eksekusi fungsi. | false | Ya |
errorType | Jenis kesalahan fungsi. Nilai valid:
| FunctionUnhandledError | Tidak. Metrik ini hanya dicatat ketika kesalahan eksekusi fungsi terjadi ( |
invokeFunctionLatencyMs | Waktu eksekusi fungsi. | 99,00 | Ya. |
traceContext | Konteks analisis jejak. | 371d3ff242fcee9:371d3ff242fcee9:0:1 | Tidak. Metrik ini hanya dicatat ketika Managed Service for OpenTelemetry dikonfigurasi. |
isSampled | Menentukan apakah permintaan diambil sampel oleh Managed Service for OpenTelemetry. | true | Tidak. Metrik ini hanya dicatat ketika Managed Service for OpenTelemetry dikonfigurasi. |
resourceMode | Jenis instans yang mengeksekusi permintaan. Opsi:
| OnDemand | Ya |
instanceID | ID instans kontainer elastis. | c-65603d8c-37e1bf7123054a77**** | Ya |
hostname | Host instans. | c-65603d8c-37e1bf7123054a77**** | Ya |
ipAddress | Alamat IP instans. Catatan: Alamat IP ini dimaksudkan untuk penggunaan internal untuk membedakan antar instans. | 21.0.XX.XX | Ya |
activeInstances | Jumlah instans aktif. | 1 | Ya |
activeInstancesPerFunction | Jumlah instans aktif dari fungsi tersebut. | 1 | Ya |
scheduleLatencyMs | Latensi penjadwalan. Ketika cold start terjadi dalam permintaan, latensi dalam menjadwalkan instans untuk eksekusi meningkat. | 10,07 | Ya |
coldStartStartTimestamp | Timestamp ketika cold start dimulai. | 1700806029167 | Tidak. Metrik ini hanya dicatat ketika cold start terjadi. |
coldStartLatencyMs | Latensi cold start. | 487,65 | Tidak. Metrik ini hanya dicatat ketika cold start terjadi. |
prepareCodeStartTimestamp | Timestamp ketika kode mulai diunduh. Nilainya adalah timestamp 13 digit dalam milidetik. | 1700806029167 | Tidak. Metrik ini hanya dicatat ketika cold start terjadi. |
prepareCodeLatencyMs | Waktu yang digunakan untuk mengunduh kode. | 0,18 | Tidak. Metrik ini hanya dicatat ketika cold start terjadi. |
runtimeInitializationStartTimestamp | Timestamp ketika runtime mulai diinisialisasi. | 1700806029168 | Tidak. Metrik ini hanya dicatat ketika cold start terjadi. |
runtimeInitializationMs | Waktu yang digunakan untuk menginisialisasi runtime. | 487,37 | Tidak. Metrik ini hanya dicatat ketika cold start terjadi. |
asyncAttemptStartTimestamp | Secara default, Anda dapat mencoba ulang hingga tiga kali ketika pemanggilan asinkron fungsi gagal. Metrik ini adalah timestamp ketika Anda melakukan percobaan ulang ke-${retryCount}. | 1700806028084 | Tidak. Metrik ini hanya dicatat ketika pemanggilan asinkron dilakukan. |
asyncAttemptLatencyMs | Secara default, Anda dapat mencoba ulang hingga tiga kali ketika pemanggilan asinkron fungsi gagal. Metrik ini adalah timestamp ketika Anda melakukan percobaan ulang ke-${retryCount}. | 1688,74 | Tidak. Metrik ini hanya dicatat ketika pemanggilan asinkron dilakukan. |
asyncMode | Mode pemanggilan asinkron. Deskripsi nilai:
| Stateful | Tidak. Metrik ini hanya dicatat ketika pemanggilan asinkron dilakukan. |
retryCount | Jumlah maksimum percobaan ulang. | 0 | Tidak. Metrik ini hanya dicatat ketika pemanggilan asinkron dilakukan. |
Kueri log
Indeks diperlukan untuk menanyakan log. Indeks dikonfigurasi secara otomatis di konsol Function Compute. Setelah indeks dikonfigurasi, Anda dapat masuk ke konsol Layanan Log Sederhana, temukan Logstore yang diinginkan, dan gunakan pernyataan SQL untuk mengambil serta menyaring permintaan dalam log. Anda dapat menentukan topik untuk mengambil log metrik tingkat permintaan secara efisien.
Sebagai contoh, Anda dapat menggunakan pernyataan SQL berikut untuk menanyakan daftar permintaan yang durasi eksekusinya melebihi 10 detik.
__topic__: "FCRequestMetrics:s1/f1" AND qualifier: q1 and operation: InvokeFunction and durationMs>1000Untuk informasi lebih lanjut tentang sintaks kueri kompleks, lihat Panduan kueri dan analisis log.
Buat dasbor kustom
Jika Anda ingin membuat grafik dengan koordinat X sebagai t dan koordinat Y sebagai nilai metrik, rujuk pada pernyataan SQL berikut:
__topic__: "FCRequestMetrics:s1/f1" AND qualifier: q1 and operation: InvokeFunction | select __time__ - __time__ % 60 as t, count(*) as invocations, avg(durationMs) as avgDurationMs group by t order by t Untuk informasi lebih lanjut tentang cara membuat dasbor kustom, lihat Buat dasbor.