Metrik tingkat permintaan menyediakan data terperinci untuk setiap pemanggilan fungsi. Gunakan metrik ini untuk dengan cepat mengidentifikasi dan memecahkan masalah, menganalisis hambatan aplikasi, serta mengoptimalkan fungsi Anda.
Apa itu metrik tingkat permintaan
Metrik tingkat permintaan merangkum status eksekusi setiap pemanggilan fungsi. Saat diaktifkan, sistem mengumpulkan data performa, error, dan tracing untuk setiap eksekusi, lalu mengirimkannya ke Logstore yang ditentukan dalam pengaturan log Anda.
-
Metrik performa: Meliputi penggunaan memori, waktu eksekusi fungsi, durasi inisialisasi, dan informasi cold start.
-
Metrik error: Meliputi kegagalan eksekusi dan detail error.
-
Metrik tracing: Meliputi waktu eksekusi operasi sistem utama, apakah tracing terintegrasi di-sampling, serta untuk fungsi yang dipicu HTTP, mencakup path, kode status, dan alamat IP client.
Setelah Anda mengaktifkan metrik tingkat permintaan, Function Compute mengirimkan metrik eksekusi untuk setiap permintaan ke Logstore Anda sebagai berikut.
functionName: hello-world
instanceID: c-6555d93e-454b5d0cbd9e45xxx
qualifier: LATEST
serviceName: cici-test
versionId:
requestId: 1-6555d93e-b51d5f9f6040a7c32a4de6b7
activeInstances: 0
activeInstancesPerFunction: 0
coldStartLatencyMs: 157.48
coldStartStartTimestamp: 1700124992484
durationMs: 3.20
hasFunctionError: false
hostname: sr-6555cc30-0e3437ce9a9443cxxx
instanceEvent: ColdStart
invocationStartTimestamp: 1700124992930
invocationType: Sync
invokeFunctionLatencyMs: 2523.46
invokeFunctionStartTimestamp: 1700124990410
ipAddress: 21.0.xxx
isColdStart: true
isSampled: true
Kasus penggunaan
-
Lihat informasi performa dan error terperinci untuk setiap pemanggilan.
Konsol menggunakan metrik tingkat permintaan untuk menyediakan daftar permintaan terperinci. Dari daftar ini, Anda dapat menyelidiki lebih dalam status eksekusi, ID instans, durasi, penggunaan memori, dan log untuk setiap permintaan.
CatatanAnda tetap dapat melihat daftar permintaan meskipun metrik tingkat permintaan dinonaktifkan. Namun, daftar tersebut mungkin tidak akurat dalam skenario berikut:
-
Jika RequestId yang sama muncul berulang kali, Anda tidak dapat menemukan log untuk permintaan tertentu. Hal ini sering terjadi selama retry pemanggilan asinkron.
-
Jika runtime kustom atau kontainer kustom mencetak kedua baris berikut:
FC Invoke Start RequestId: xxxdanFC Invoke End RequestId: xxx, satu pemanggilan bisa muncul dua kali dalam daftar permintaan.
-
-
Lakukan pencarian kustom dan buat dasbor kustom berdasarkan metrik permintaan.
Metrik tingkat permintaan dikirim ke Logstore Anda dalam format
key:value. Anda dapat membuat dasbor kustom sesuai kebutuhan bisnis Anda. Untuk informasi selengkapnya, lihat Buat dasbor.
Catatan penggunaan
-
Ruang lingkup
Metrik tingkat permintaan dikonfigurasi di tingkat layanan. Saat diaktifkan, fitur ini berlaku untuk semua fungsi dalam layanan tersebut, dan entri log dicatat untuk setiap pemanggilan fungsi.
-
Penagihan
Penyimpanan log di Simple Log Service dikenai biaya. Untuk informasi selengkapnya mengenai harga Simple Log Service, lihat Harga.
Aktifkan metrik tingkat permintaan
Konsol
Prasyarat
-
Function Compute
-
Simple Log Service
Prosedur
Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, klik Services & Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Services, temukan layanan yang diinginkan lalu klik Configure di kolom Actions.
-
Pada halaman Edit Service, di bagian Log Settings, konfigurasikan parameter lalu klik Save.
Tabel berikut menjelaskan parameter utama. Anda dapat mempertahankan nilai default untuk parameter lainnya.
Parameter
Deskripsi
Contoh
Logging
Aktifkan untuk menyimpan log eksekusi fungsi di Simple Log Service. Untuk informasi selengkapnya, lihat Konfigurasi log.
Enable
Log project
Pilih proyek log yang telah dikonfigurasi.
aliyun-fc-hangzhou-2238f0df-a742-524f-9f90-976ba*******
Logstore
Pilih Logstore yang telah dikonfigurasi.
function-log
Request-level metrics
Aktifkan untuk mengumpulkan metrik setiap pemanggilan fungsi. Metrik ini dikirim ke Logstore yang ditentukan dalam konfigurasi log Anda.
Enable
Serverless Devs
Prasyarat
Prosedur
-
Buat direktori kode dengan struktur berikut.
. ├── code │ └── index.js └── s.yamlField
enableRequestMetricspada contoh berikut mengonfigurasi metrik tingkat permintaan. Sebelum mengaktifkan fitur ini, Anda harus terlebih dahulu mengaktifkan logging dan mengaturlogstoresertaprojectke Logstore dan proyek log yang sudah ada.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: # Ganti project dan logstore dengan yang sudah ada di akun Anda. Anda juga dapat mengatur logConfig ke auto untuk secara otomatis membuat proyek log dan Logstore. project: 'your-project' logstore: 'your-logstore' enableRequestMetrics: true # Saklar untuk metrik tingkat permintaan. Jika diaktifkan, sistem mengumpulkan metrik untuk setiap pemanggilan fungsi. 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: 60 -
Jalankan perintah berikut untuk menerapkan aplikasi.
sudo s deploy -ySetelah penerapan berhasil, Anda dapat masuk ke Konsol Function Compute untuk memverifikasi bahwa metrik tingkat permintaan telah diaktifkan untuk layanan tersebut.
Kueri log
Format log
Log metrik tingkat permintaan memiliki topik dalam format: FCRequestMetrics:serviceName/functionName. Anda dapat menggunakan kondisi kueri __topic__: "FCRequestMetrics:serviceName/functionName" di Simple Log Service untuk memfilter log tersebut. Untuk informasi selengkapnya, lihat Memulai kueri dan analisis.
Field metrik
Metrik tingkat permintaan mencatat informasi berikut.
|
Field |
Deskripsi |
Contoh |
Selalu direkam? |
|
serviceName |
Nama layanan. |
my-service |
Ya |
|
functionName |
Nama fungsi. |
my-function |
Ya |
|
versionId |
ID versi. |
12 |
Ya |
|
qualifier |
Alias layanan. Nilai default adalah LATEST. |
prod |
Ya |
|
requestId |
ID permintaan. |
db72ce53-ccbe-4216-af55-642622e01494 |
Ya |
|
operation |
Nama operasi. |
InvokeFunction |
Ya |
|
invocationType |
Jenis pemanggilan. Nilai yang valid: Sync: Pemanggilan sinkron Async: Pemanggilan asinkron |
Sync |
Ya |
|
memoryMB |
Batas memori untuk fungsi dalam MB. |
512 |
Ya |
|
memoryUsageMB |
Memori yang dikonsumsi oleh eksekusi fungsi dalam MB. |
410 |
Ya |
|
durationMs |
Durasi eksekusi kode fungsi, dalam milidetik. |
20.20 |
Ya |
|
isColdStart |
Menunjukkan apakah pemanggilan tersebut merupakan cold start. Catatan
Cold start terjadi ketika Function Compute menerima permintaan tetapi tidak memiliki instans yang tersedia untuk melayaninya. Sistem kemudian harus membuat instans baru, mengunduh kode fungsi, dan memulai runtime. Seluruh proses ini—membuat instans, mengunduh kode, dan memulai runtime—mendefinisikan cold start. Function Compute meminimalkan cold start dengan melakukan pre-warming instans. Oleh karena itu, permintaan yang dilayani oleh instans yang telah di-pre-warm bukanlah cold start. |
false |
Ya |
|
instanceEvent |
Event instans. Saat ini, satu-satunya nilai adalah |
ColdStart |
Tidak |
|
hasFunctionError |
Menunjukkan apakah terjadi error fungsi selama eksekusi. |
false |
Ya |
|
errorType |
Jenis error fungsi. Nilai yang valid:
|
FunctionUnhandledError |
Tidak. Hanya direkam saat terjadi error selama eksekusi fungsi, yang ditunjukkan oleh |
|
invokeFunctionLatencyMs |
Latensi total pemanggilan fungsi, diukur dalam milidetik. |
99.00 |
Ya. Ini direkam untuk setiap pemanggilan. |
|
traceContext |
Informasi konteks tracing. |
371d3ff242fcee9:371d3ff242fcee9:0:1 |
Tidak. Hanya direkam saat tracing dikonfigurasi. |
|
isSampled |
Menunjukkan apakah permintaan di-sampling untuk tracing. |
true |
Tidak. Hanya direkam saat tracing dikonfigurasi. |
|
resourceMode |
Jenis instans yang mengeksekusi permintaan. Nilai yang valid:
|
OnDemand |
Ya |
|
instanceID |
ID instans. |
c-65603d8c-37e1bf7123054a77**** |
Ya |
|
hostname |
Host dari instans. |
c-65603d8c-37e1bf7123054a77**** |
Ya |
|
ipAddress |
Alamat IP instans. Ini adalah alamat IP internal instans, digunakan untuk identifikasi, dan tidak dapat diakses publik. |
21.0.XX.XX |
Ya |
|
activeInstances |
Jumlah instans aktif. |
1 |
Ya |
|
activeInstancesPerFunction |
Jumlah instans aktif untuk fungsi saat ini. |
1 |
Ya |
|
scheduleLatencyMs |
Latensi penjadwalan dalam milidetik. Latensi penjadwalan relatif panjang untuk permintaan cold start. |
10.07 |
Ya |
|
coldStartStartTimestamp |
Timestamp saat cold start dimulai. |
1700806029167 |
Tidak, hanya direkam untuk cold start. |
|
coldStartLatencyMs |
Latensi cold start dalam milidetik. |
487.65 |
Tidak, hanya direkam untuk cold start. |
|
prepareCodeStartTimestamp |
Timestamp saat pengunduhan kode dimulai. Ini adalah timestamp 13 digit, akurat hingga milidetik. |
1700806029167 |
Tidak, hanya direkam untuk cold start. |
|
prepareCodeLatencyMs |
Durasi pengunduhan kode dalam milidetik. |
0.18 |
Tidak, hanya direkam untuk cold start. |
|
runtimeInitializationStartTimestamp |
Timestamp saat inisialisasi runtime dimulai. |
1700806029168 |
Tidak, hanya direkam untuk cold start. |
|
runtimeInitializationMs |
Durasi inisialisasi runtime dalam milidetik. |
487.37 |
Tidak, hanya direkam untuk cold start. |
|
asyncAttemptStartTimestamp |
Secara default, pemanggilan fungsi asinkron yang gagal akan diulang hingga 3 kali. Parameter ini adalah timestamp awal untuk upaya retry ke-N, di mana N ditentukan oleh |
1700806028084 |
Tidak, hanya direkam untuk pemanggilan asinkron. |
|
asyncAttemptLatencyMs |
Secara default, pemanggilan fungsi asinkron yang gagal akan diulang hingga 3 kali. Parameter ini menunjukkan latensi upaya ke- |
1688.74 |
Tidak, hanya direkam untuk pemanggilan asinkron. |
|
asyncMode |
Mode pemanggilan asinkron. Nilai yang valid:
|
Stateful |
Tidak, hanya direkam untuk pemanggilan asinkron. |
|
retryCount |
Jumlah upaya retry. |
0 |
Tidak, hanya direkam untuk pemanggilan asinkron. |
Cari log
Function Compute secara otomatis mengonfigurasi indeks yang diperlukan di Simple Log Service saat Anda mengaktifkan fitur ini. Anda kemudian dapat menggunakan pernyataan SQL di Logstore yang sesuai dalam Konsol Simple Log Service untuk mengkueri dan memfilter permintaan. Anda dapat menentukan topik untuk mempersempit pencarian ke log metrik tingkat permintaan.
Sebagai contoh, untuk mengkueri permintaan yang memerlukan waktu eksekusi lebih dari 1.000 ms, gunakan pernyataan SQL berikut.
__topic__: "FCRequestMetrics:s1/f1" AND qualifier: q1 and operation: InvokeFunction and durationMs>1000
Untuk informasi selengkapnya mengenai sintaks kueri kompleks, lihat Memulai kueri dan analisis.
Buat dasbor kustom
Untuk membuat grafik deret waktu suatu metrik, gunakan pernyataan SQL seperti 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 selengkapnya mengenai cara membuat dasbor kustom, lihat Buat dasbor.