Metrik tingkat permintaan memberikan wawasan mendalam mengenai setiap pemanggilan fungsi dan membantu Anda memahami kinerja fungsi tersebut. Gunakan metrik ini untuk mendeteksi serta mendiagnosis masalah secara cepat dan menganalisis bottleneck aplikasi. Aktifkan metrik tingkat permintaan agar Anda dapat mengelola dan mengoptimalkan aplikasi fungsi dengan lebih baik.
Apa itu metrik tingkat permintaan
Metrik tingkat permintaan merangkum status eksekusi setiap permintaan fungsi. Saat diaktifkan, sistem mengumpulkan metrik untuk setiap eksekusi fungsi—termasuk metrik kinerja, pengecualian, dan pelacakan—lalu mengirimkannya ke Logstore yang Anda pilih selama konfigurasi log.
-
Metrik kinerja: penggunaan memori, waktu eksekusi fungsi, waktu inisialisasi, informasi cold start, dan lainnya.
-
Metrik pengecualian: apakah eksekusi gagal dan detail error-nya.
-
Metrik pelacakan: durasi eksekusi jalur utama, apakah pengambilan sampel pelacakan terdistribusi diaktifkan, serta untuk fungsi HTTP—jalur (path), kode status, dan alamat IP klien.
Setelah mengaktifkan metrik tingkat permintaan, Function Compute mengirimkan metrik eksekusi untuk setiap permintaan ke Logstore Anda dalam format berikut.
activeInstances: 0
activeInstancesPerFunction: 0
durationMs: 1.56
functionName: sync-clone
hasFunctionError: false
hostname: sr-65a76c74-1224f354965f43a...
instanceID: c-65a77eb0-15416274-ff5addb...
invocationStartTimestamp: 1705476027407
invocationType: Sync
invokeFunctionLatencyMs: 2.92
invokeFunctionStartTimestamp: 1705476027406
ipAddress: 21.0
isColdStart: false
memoryMB: 512
memoryUsageMB: 8.99
operation: InvokeFunction
qualifier: LATEST
requestId: 1-65a77fbb-157f3f32-e1ee24b17e49
resourceMode: OnDemand
Skenario Penggunaan
-
Gunakan metrik permintaan untuk melihat detail eksekusi fungsi, metrik kinerja, dan informasi error.
Konsol menyediakan daftar permintaan berdasarkan metrik tingkat permintaan. Gunakan antarmuka ini untuk melihat informasi detail setiap permintaan, termasuk status eksekusi, ID instans, durasi eksekusi, penggunaan memori, dan log permintaan.
Pada tab Logs halaman detail fungsi, pilih sub-tab Invocation Requests untuk melihat daftar permintaan. Filter di atas daftar mencakup Show logs only for the current version or alias, Show only function errors, Show only client errors, dan Show only cold start requests.
CatatanAnda dapat melihat daftar permintaan tanpa mengaktifkan metrik tingkat permintaan, tetapi hasilnya mungkin tidak akurat dalam skenario berikut.
-
Saat beberapa RequestId identik muncul berulang kali—umum terjadi pada skenario retry pemanggilan asinkron—Anda tidak dapat menemukan log untuk permintaan tertentu.
-
Pada lingkungan runtime custom runtime atau custom image, jika kode Anda mencetak
FC Invoke Start RequestId: xxxdanFC Invoke End RequestId: xxx, satu pemanggilan akan muncul dua kali dalam daftar permintaan.
-
-
Gunakan metrik permintaan untuk pencarian kustom dan membuat dasbor kustom.
Metrik permintaan dikirimkan ke Logstore Anda dalam format
key:val. Buat dasbor kustom sesuai kebutuhan bisnis Anda. Untuk petunjuknya, lihat Create a dashboard.
Catatan
-
Lingkup
Log metrik tingkat permintaan merupakan konfigurasi tingkat fungsi. Setelah diaktifkan, konfigurasi ini berlaku untuk fungsi saat ini, dan setiap eksekusi menghasilkan satu entri log.
-
Biaya
Mengirimkan log ke Simple Log Service dikenai biaya penyimpanan. Untuk detail harga, lihat Pricing.
Aktifkan metrik tingkat permintaan
Aktifkan metrik tingkat permintaan di konsol
Prasyarat
-
Function Compute
-
Simple Log Service (SLS)
Prosedur
-
Login ke Function Compute console. Di panel navigasi sebelah kiri, pilih .
-
Di bilah menu atas, pilih wilayah. Pada halaman Functions, klik fungsi target.
-
Di halaman konfigurasi fungsi, pilih tab Configuration.
-
Temukan Advanced Settings dan klik Modify di sebelah kanannya. Di panel Advanced Configuration, buka bagian Logging, aktifkan Instance-level Metrics, lalu klik Deploy.
Tabel berikut menjelaskan item konfigurasi utama. Biarkan semua pengaturan lain pada nilai default-nya.
Configuration item
Description
Example value
Logging
Apakah log pemanggilan fungsi disimpan di Simple Log ServiceSLS. Untuk informasi lebih lanjut, lihat Configure logging.
Enabled
Log project
Pilih log project yang sudah ada.
aliyun-fc-hangzhou-2238f0df-a742-524f-9f90-976ba*******
Logstore
Pilih Logstore yang sudah ada.
function-log
Log segmentation rule
Apakah aturan segmentasi log diaktifkan. Jika diaktifkan, Function Compute membagi log menjadi beberapa segmen sesuai aturan dan menulis setiap segmen ke SLS.
Enabled
Request-level metrics
Apakah metrik tingkat permintaan dikumpulkan. Jika diaktifkan, metrik untuk setiap pemanggilan fungsi dikumpulkan dan dikirimkan ke Logstore yang Anda tentukan dalam konfigurasi log.
Enabled
Instance-level metrics
Apakah metrik tingkat instans diaktifkan. Jika diaktifkan, metrik instans dikirimkan ke Logstore yang Anda tentukan dalam konfigurasi log.
Enabled
Aktifkan metrik tingkat permintaan menggunakan Serverless Devs
Prasyarat
Prosedur
-
Buat direktori kode dengan struktur berikut.
. ├── code │ └── index.js └── s.yamlDalam contoh ini, field enableRequestMetrics mengonfigurasi metrik tingkat permintaan. Sebelum mengaktifkannya, aktifkan terlebih dahulu logging dan atur logstore serta project ke Logstore dan log project yang sudah ada di akun Anda.
edition: 3.0.0 name: hello-world-app access: "default" vars: # Global variables region: "cn-hangzhou" resources: hello_world: component: fc3 # Component name props: region: ${vars.region} functionName: "start-nodejs-****" description: 'hello world by serverless devs' runtime: "nodejs16" code: ./code handler: index.handler memorySize: 128 timeout: 30 logConfig: # Update logstore and project to match your setup. Alternatively, use logConfig:auto to auto-create them. enableInstanceMetrics: true enableRequestMetrics: true # Enable request-level metrics to collect execution metrics for every invocation logBeginRule: DefaultRegex logstore: 'your-logstore' project: 'your-project' -
Jalankan perintah berikut untuk menerapkan aplikasi.
sudo s deploy -ySetelah penerapan berhasil, login ke Function Compute console untuk memastikan bahwa metrik tingkat permintaan telah diaktifkan untuk fungsi yang Anda terapkan.
Log kueri
Format log
Log metrik tingkat permintaan menggunakan format topik: FCRequestMetrics:/functionName. Di Simple Log Service, gunakan kondisi kueri __topic__: "FCRequestMetrics:/functionName" untuk memfilter semua log metrik tingkat permintaan. Untuk informasi lebih lanjut, lihat Quick guide to querying and analysis.
Field metrik
Metrik tingkat permintaan mencatat informasi berikut.
|
Metric name |
Description |
Example value |
Recorded for every invocation? |
|
functionName |
Nama fungsi. |
my-function |
Yes |
|
versionId |
Nama versi. |
12 |
Yes |
|
qualifier |
Alias layanan. Nilai default adalah LATEST. |
prod |
Yes |
|
requestId |
ID permintaan. |
db72ce53-ccbe-4216-af55-642622e01494 |
Yes |
|
operation |
Nama tindakan. |
InvokeFunction |
Yes |
|
invocationType |
Terdapat dua jenis pemanggilan. Sync: panggilan sinkron Async: pemanggilan asinkron |
Sync |
Yes |
|
memoryMB |
Batas memori fungsi. |
512 |
Yes |
|
memoryUsageMB |
Memori yang digunakan selama eksekusi fungsi. |
410 |
Yes |
|
durationMs |
Waktu eksekusi permintaan. |
20.20 |
Yes |
|
isColdStart |
Apakah ini merupakan cold start. Catatan
Cold start terjadi ketika Function Compute menerima permintaan tetapi tidak memiliki instans fungsi yang siap untuk menanganinya. Sistem harus membuat instans baru, mengunduh kode, dan menginisialisasi lingkungan runtime. Kami mendefinisikan permintaan cold start sebagai permintaan yang melewati proses lengkap pembuatan instans, pengunduhan kode, dan inisialisasi runtime. Function Compute mengoptimalkan cold start dengan melakukan pre-warming instans. Jika permintaan tiba saat instans sedang dibuat dan menemukan instans yang telah dipre-warm siap, maka permintaan tersebut tidak dianggap sebagai cold start. |
false |
Yes |
|
instanceEvent |
Event instans. Saat ini hanya ColdStart, yang dicatat untuk permintaan cold start. |
ColdStart |
No |
|
hasFunctionError |
Apakah eksekusi fungsi mengalami error. |
false |
Yes |
|
errorType |
Error fungsi terbagi menjadi tiga jenis berikut:
|
FunctionUnhandledError |
No. Dicatat hanya saat |
|
invokeFunctionLatencyMs |
Waktu eksekusi fungsi. |
99.00 |
Yes. Dicatat untuk setiap pemanggilan. |
|
traceContext |
Konteks pelacakan terdistribusi. |
371d3ff242fcee9:371d3ff242fcee9:0:1 |
No. Dicatat hanya saat pelacakan terdistribusi dikonfigurasi. |
|
isSampled |
Apakah permintaan diambil sampelnya untuk pelacakan terdistribusi. |
true |
No. Dicatat hanya saat pelacakan terdistribusi dikonfigurasi. |
|
resourceMode |
Jenis instans yang digunakan untuk permintaan:
|
OnDemand |
Yes |
|
instanceID |
ID instans. |
c-65603d8c-37e1bf7123054a77**** |
Yes |
|
hostname |
Hostname instans. |
c-65603d8c-37e1bf7123054a77**** |
Yes |
|
ipAddress |
Alamat IP instans. Catatan: Ini adalah IP internal yang digunakan untuk membedakan antar instans, bukan Alamat IP publik. |
21.0.XX.XX |
Yes |
|
activeInstances |
Jumlah instans aktif. |
1 |
Yes |
|
activeInstancesPerFunction |
Jumlah instans aktif untuk fungsi ini. |
1 |
Yes |
|
scheduleLatencyMs |
Latensi penjadwalan. Lebih lama selama cold start. |
10.07 |
Yes |
|
coldStartStartTimestamp |
Stempel waktu awal cold start. |
1700806029167 |
No. Dicatat hanya selama cold start. |
|
coldStartLatencyMs |
Durasi cold start. |
487.65 |
No. Dicatat hanya selama cold start. |
|
prepareCodeStartTimestamp |
Stempel waktu awal pengunduhan kode. Stempel waktu UNIX 13 digit, presisi milidetik. |
1700806029167 |
No. Dicatat hanya selama cold start. |
|
prepareCodeLatencyMs |
Durasi pengunduhan kode. |
0.18 |
No. Dicatat hanya selama cold start. |
|
runtimeInitializationStartTimestamp |
Stempel waktu awal inisialisasi runtime. |
1700806029168 |
No. Dicatat hanya selama cold start. |
|
runtimeInitializationMs |
Durasi inisialisasi runtime. |
487.37 |
No. Dicatat hanya selama cold start. |
|
asyncAttemptStartTimestamp |
Untuk pemanggilan asinkron, eksekusi yang gagal secara default akan diulang hingga 3 kali. Parameter ini adalah stempel waktu awal retry ke-${retryCount}. |
1700806028084 |
No. Dicatat hanya untuk pemanggilan asinkron. |
|
asyncAttemptLatencyMs |
Untuk pemanggilan asinkron, eksekusi yang gagal secara default akan diulang hingga 3 kali. Parameter ini adalah durasi retry ke-${retryCount}. |
1688.74 |
No. Dicatat hanya untuk pemanggilan asinkron. |
|
asyncMode |
Mode pemanggilan asinkron:
|
Stateful |
No. Dicatat hanya untuk pemanggilan asinkron. |
|
retryCount |
Jumlah retry. |
0 |
No. Dicatat hanya untuk pemanggilan asinkron. |
Ambil log
Untuk mengambil log, Anda memerlukan indeks. Konsol Function Compute secara otomatis mengonfigurasi indeks untuk Anda. Setelah pengindeksan, gunakan pernyataan SQL di Konsol Simple Log Service untuk mencari dan memfilter permintaan di Logstore Anda. Tentukan topik untuk membatasi hasil hanya pada log metrik tingkat permintaan.
Sebagai contoh, untuk menemukan permintaan dengan waktu eksekusi lebih dari 1 detik, gunakan pernyataan SQL berikut.
__topic__: "FCRequestMetrics:/f1" AND qualifier: q1 and operation: InvokeFunction and durationMs>1000
Untuk sintaks kueri lanjutan, lihat Quick guide to querying and analysis.
Buat dasbor kustom
Untuk membuat grafik dengan waktu (t) pada sumbu x dan nilai metrik pada sumbu y, gunakan pernyataan SQL seperti berikut.
__topic__: "FCRequestMetrics:/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 pembuatan dasbor kustom, lihat Create a dashboard.