Runtime Java 8 bawaan Function Compute mendukung integrasi dengan Application Real-Time Monitoring Service (ARMS). Runtime kustom untuk Java 8, Java 11, dan Java 17 juga mendukung ekstensi ARMS. Topik ini menjelaskan cara mengintegrasikan agen ARMS ke dalam fungsi runtime kustom.
Sebelum memulai, pastikan:
Memori fungsi Anda lebih dari 512 MB. ARMS mengonsumsi sekitar 300 MB memori.
ARMS berada di wilayah yang sama dengan fungsi Anda. Pemantauan lintas-wilayah tidak didukung.
Kemampuan pemantauan
Setelah mengintegrasikan ARMS, Anda dapat memantau fungsi Anda dengan kemampuan berikut:
| Kemampuan | Apa yang dapat Anda lakukan |
|---|---|
| Observabilitas tingkat instans | Lihat metrik CPU, memori, dan permintaan untuk setiap instans fungsi |
| Tracing | Periksa hubungan panggilan antara fungsi Anda dan komponen hulu serta hilir seperti database dan antrian pesan |
| Metrik Java virtual machine (JVM) | Lacak jumlah pengumpulan sampah (GC), penggunaan heap, dan informasi stack thread |
| Profil tingkat kode | Identifikasi metode lambat dan pengecualian pada tingkat kode |
| Keamanan aplikasi | Lindungi aplikasi Anda dari kerentanan yang tidak diketahui menggunakan teknologi Runtime Application Self-Protection (RASP) |
Untuk ikhtisar lengkap ARMS, lihat Apa itu ARMS?
Prasyarat
Sebelum memulai, pastikan Anda telah:
Membuat fungsi yang menggunakan runtime kustom (Java 8, Java 11, atau Java 17). Lihat Buat fungsi
Mengaktifkan ARMS. Lihat Aktifkan dan upgrade ARMS
Menyetel memori fungsi lebih dari 512 MB
Cara kerja
ARMS diintegrasikan ke dalam runtime kustom sebagai ekstensi internal. Agen ARMS dikirimkan sebagai lapisan publik. Skrip bootstrap menyuntikkan agen ke dalam aplikasi Java Anda saat startup, dan dua variabel lingkungan meneruskan kunci lisensi serta mengaktifkan ekstensi tersebut.
Hubungkan runtime kustom ke ARMS
Langkah 1: Tambahkan lapisan agen ARMS
Function Compute menyediakan lapisan publik yang berisi agen ARMS untuk setiap versi Java yang didukung.
| Versi Java | Runtime yang kompatibel | Layer ARN |
|---|---|---|
| Java 11 / Java 8 | Runtime kustom | acs:fc:{region}:official:layers/ArmsAgent273x/versions/1 |
| Java 17 | Runtime kustom | acs:fc:{region}:official:layers/ArmsAgent273x_JDK17/versions/1 |
Ganti {region} dengan ID wilayah fungsi Anda (misalnya, cn-hangzhou).
Masuk ke Konsol Function Compute. Di panel navigasi kiri, klik Functions.
Di bilah navigasi atas, pilih wilayah tempat fungsi Anda berada. Pada halaman Functions, klik fungsi yang ingin Anda konfigurasi.
Di halaman detail fungsi, klik tab Configurations.
Klik Modify di samping Advanced Settings. Di panel Advanced Settings, perluas Layers dan klik + Add Layer > Add Public Layer.
Pilih lapisan yang sesuai dengan versi Java Anda dan klik OK.
Langkah 2: Setel variabel lingkungan
Di panel Advanced Settings, perluas Environment Variables dan setel nilai berikut:
| Variabel lingkungan | Nilai | Deskripsi |
|---|---|---|
FC_EXTENSION_ARMS | true | Mengaktifkan ekstensi ARMS |
FC_EXTENSIONS_ARMS_LICENSE_KEY | Kunci lisensi Anda | Meneruskan kunci lisensi ARMS Anda ke agen. Lihat Dapatkan kunci lisensi |
Setelah pemanggilan fungsi selesai, instans tetap aktif selama 10 detik agar agen ARMS dapat menyelesaikan pelaporan log. Biaya terus berjalan selama periode ini dengan laju yang sama seperti saat pemanggilan. Lihat Billing.
Langkah 3: Buat skrip bootstrap
Buat file bernama bootstrap di direktori kode fungsi Anda menggunakan WebIDE, lalu jadikan file tersebut dapat dieksekusi dengan menjalankan chmod +x bootstrap di terminal.
Skrip berikut menunjukkan contoh lengkap. Semua parameter agen ARMS disuntikkan sebagai argumen JVM ketika variabel lingkungan FC_EXTENSIONS_ARMS_LICENSE_KEY tersedia.
#!/bin/bash
set -eo pipefail
# 1. Setel nama aplikasi ARMS. Nilai default adalah FC:{FunctionName}.
appName="FC:Custom_Java_Arms_Demo"
if [ -n "${FC_FUNCTION_NAME}" ]; then
appName="FC:${FC_FUNCTION_NAME}"
fi
echo "appName: ${appName}"
params=" "
# 2. Suntikkan parameter agen ARMS jika kunci lisensi telah dikonfigurasi.
if [[ -n "${FC_EXTENSIONS_ARMS_LICENSE_KEY}" ]]; then
echo "FC_EXTENSIONS_ARMS_LICENSE_KEY: ${FC_EXTENSIONS_ARMS_LICENSE_KEY}"
params+="-Dfc.instanceId=$HOSTNAME@`hostname -i` "
# Jalur ke file JAR agen ARMS di lapisan publik
params+="-javaagent:/opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar "
params+="-Darms.licenseKey=${FC_EXTENSIONS_ARMS_LICENSE_KEY} "
params+="-Darms.appName=${appName} "
else
echo "Variabel lingkungan FC_EXTENSIONS_ARMS_LICENSE_KEY tidak ada, harap setel variabel lingkungan FC_EXTENSIONS_ARMS_LICENSE_KEY!"
exit 1
fi
# 3. Jalankan aplikasi dengan parameter ARMS.
echo "params: ${params}"
exec java $params \
-Dserver.port=9000 \
-jar /code/target/demo-0.0.1-SNAPSHOT.jarSkrip ini meneruskan tiga argumen JVM yang diperlukan oleh ARMS:
| Parameter | Deskripsi |
|---|---|
-javaagent | Jalur ke file JAR agen ARMS. Saat menggunakan lapisan publik, jalurnya selalu /opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar |
-Darms.licenseKey | Kunci lisensi ARMS Anda, dibaca dari variabel lingkungan FC_EXTENSIONS_ARMS_LICENSE_KEY |
-Darms.appName | Nama aplikasi yang ditampilkan di Konsol ARMS. Nilai default adalah FC:{FunctionName} |
Langkah 4: Deploy
Klik Deploy di WebIDE untuk menerapkan perubahan kode. Setelah fungsi dimulai ulang, agen ARMS mulai mengumpulkan data pemantauan.
Verifikasi integrasi
Setelah deployment, panggil fungsi Anda minimal satu kali, lalu verifikasi integrasi di Konsol ARMS:
Masuk ke Konsol ARMS.
Di panel navigasi kiri, pilih Application Monitoring > Applications.
Cari aplikasi bernama
FC:{FunctionName}(misalnya,FC:my-java-function). Jika aplikasi tersebut muncul dalam daftar, integrasi berhasil.
Untuk detail cara membaca data pemantauan, lihat Ikhtisar aplikasi.
Billing
Mengaktifkan ekstensi ARMS mempertimbangkan dua aspek biaya:
Biaya ARMS: Dikenakan biaya untuk pemantauan aplikasi ARMS. Lihat Ikhtisar billing.
Pembekuan pasca-pemanggilan: Setelah setiap pemanggilan selesai, instans tetap aktif selama 10 detik sementara agen ARMS melaporkan log. Biaya Function Compute berlaku selama periode ini dengan laju standar pemanggilan.