Application Real-Time Monitoring Service (ARMS) memantau aplikasi Java yang berjalan di kluster Container Service for Kubernetes (ACK) melalui add-on ack-onepilot. Instal dan otorisasi add-on tersebut untuk mendiagnosis masalah di lingkungan produksi secara signifikan lebih cepat.
Informasi latar belakang
Application Real-Time Monitoring Service (ARMS) adalah produk Alibaba Cloud untuk manajemen kinerja aplikasi (APM). Di Container Service for Kubernetes (ACK), instal dan otorisasi add-on ack-onepilot untuk memantau aplikasi Java dari ujung ke ujung tanpa mengubah kode apa pun.
Add-on ini secara otomatis menemukan topologi dan antarmuka aplikasi, serta menghasilkan peta topologi 3D. Add-on ini memantau antarmuka dan menangkap transaksi yang abnormal dan lambat. Gunakan data pemantauan ini untuk dengan cepat mengidentifikasi antarmuka bermasalah dan lambat, mereproduksi parameter panggilan, mendeteksi kebocoran memori, serta mengidentifikasi hambatan sistem. Untuk informasi selengkapnya tentang pemantauan aplikasi ARMS, lihat Apa itu pemantauan aplikasi?
Prasyarat
Sebuah namespace telah dibuat. Untuk informasi selengkapnya, lihat Kelola namespace dan kuota sumber daya. Topik ini menggunakan namespace
arms-demosebagai contoh.Versi JDK didukung oleh Pemantauan Aplikasi. ARMS mendukung versi JDK berikut:
JDK 1.7.0+
PentingAgen ARMS V3.0.X dan yang lebih baru tidak lagi mendukung Java 7. Jika Anda masih menggunakan Java 7, kami menyarankan agar Anda meningkatkan versi Java Anda. Untuk informasi selengkapnya, lihat Pemantauan Aplikasi tidak lagi mendukung Java 7.
JDK 1.8.0_25+
CatatanJika Anda menerapkan aplikasi di kluster Kubernetes, kami menyarankan agar Anda menggunakan JDK V1.8.0_191 atau yang lebih baru.
Pastikan bahwa versi JDK bukan 1.8.0_25 atau 1.8.0_31. Jika tidak, agen ARMS mungkin gagal diinstal. Dalam kasus ini, kami menyarankan agar Anda meningkatkan JDK ke versi 1.8.X terbaru.
JDK 11.0.8+
JDK 17
Langkah 1: Instal add-on pemantauan aplikasi ARMS
Komponen lama arms-pilot tidak lagi dipelihara. ack-onepilot adalah penggantinya dan sepenuhnya kompatibel — migrasi tidak memerlukan perubahan pada konfigurasi aplikasi Anda. Untuk langkah-langkah migrasi, lihat Uninstal arms-pilot dan instal ack-onepilot.
Secara default, add-on ack-onepilot mendukung hingga 1.000 Pod. Untuk setiap tambahan 1.000 Pod di kluster, tingkatkan sumber daya CPU untuk add-on sebesar 0,5 core dan memori sebesar 512 MB.
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Components and Add-ons .
Di bagian Logs and Monitoring, temukan add-on ack-onepilot dan klik Install pada kartu add-on.
Di kotak dialog, konfigurasikan parameter add-on. (Disarankan) Pertahankan nilai default. Klik OK untuk menyelesaikan instalasi.
Setelah instalasi selesai, Anda dapat melakukan peningkatan, mengonfigurasi, atau menguninstal add-on ack-onepilot di halaman Add-ons.
Langkah 2: Berikan izin untuk mengakses resource ARMS
Apakah Anda harus memberikan izin secara manual bergantung pada keberadaan Secret addon.arms.token di kluster. Jika Secret tersebut ada, tidak diperlukan otorisasi dan Anda dapat langsung melanjutkan ke Langkah 3. Jika Secret tersebut tidak ada, berikan izin kepada kluster untuk mengakses resource ARMS secara manual agar ARMS dapat memantau aplikasi di kluster tersebut.
Saat sebuah kluster berisi Secret addon.arms.token, ARMS secara otomatis memberikan izin kepada kluster untuk mengakses resource ARMS tanpa kredensial. Sebagian besar kluster ACK yang dikelola menyertakan Secret ini secara default, tetapi kluster ACK yang dikelola yang dibuat sebelumnya mungkin tidak.
Periksa apakah Secret addon.arms.token ada
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Secrets, pilih kube-system dari daftar drop-down Namespace, lalu periksa apakah Secret
addon.arms.tokenterdaftar.
Berikan izin untuk mengakses resource ARMS secara manual
Lakukan langkah-langkah berikut hanya jika Secret addon.arms.token tidak ada di kluster.
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Cluster Information.
Di tab Basic Information, temukan bagian Cluster Resources dan klik tautan di sebelah kanan Worker RAM Role.
Di halaman Role, klik tab Permissions, lalu klik Add Permissions.
Tetapkan izin menjadi AliyunARMSFullAccess, lalu klik OK.
Berikan izin untuk kluster yang terintegrasi dengan Elastic Container Instance (ECI)
Untuk memantau aplikasi di kluster ACK yang dikelola yang terintegrasi dengan ECI, berikan izin di halaman Otorisasi Cepat RAM, lalu restart semua Pod add-on ack-onepilot.
Langkah 3: Aktifkan pemantauan aplikasi ARMS untuk aplikasi Java
Aktifkan pemantauan aplikasi ARMS saat Anda membuat aplikasi Java. Langkah-langkah berikut membuat Deployment dari templat YAML di Konsol ACK.
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Deployments, klik Create from YAML.
Pilih Sampel Template, lalu tambahkan
labelsberikut ke bagian spec.template.metadata di bidang Template (format YAML):labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" # Ganti <your-deployment-name> dengan nama aplikasi yang sebenarnya. # armsSecAutoEnable: "on" # Jika Anda ingin menghubungkan aplikasi ke Application Security, Anda harus mengonfigurasi parameter ini.
Label armsPilotAutoEnable: "on" dan armsPilotCreateAppName: "arms-k8s-demo" dalam templat Pod Deployment mengaktifkan pemantauan aplikasi ARMS. Cuplikan YAML berikut menunjukkan lokasi penambahan label dalam templat Pod:
apiVersion: v1
kind: Namespace
metadata:
name: arms-demo
---
apiVersion: apps/v1 # untuk versi sebelum 1.8.0 gunakan apps/v1beta1
kind: Deployment
metadata:
name: arms-springboot-demo
namespace: arms-demo
labels:
app: arms-springboot-demo
spec:
replicas: 2
selector:
matchLabels:
app: arms-springboot-demo
template:
metadata:
labels:
app: arms-springboot-demo
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "arms-k8s-demo"
spec:
containers:
- resources:
limits:
# ...File YAML contoh lengkap berikut membuat Deployment dan mengaktifkan pemantauan aplikasi ARMS:
apiVersion: v1
kind: Namespace
metadata:
name: arms-demo
---
apiVersion: apps/v1 # untuk versi sebelum 1.8.0 gunakan apps/v1beta1
kind: Deployment
metadata:
name: arms-springboot-demo
namespace: arms-demo
labels:
app: arms-springboot-demo
spec:
replicas: 2
selector:
matchLabels:
app: arms-springboot-demo
template:
metadata:
labels:
app: arms-springboot-demo
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "arms-k8s-demo"
one-agent.jdk.version: "OpenJDK11"
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
imagePullPolicy: Always
name: arms-springboot-demo
env:
- name: SELF_INVOKE_SWITCH
value: "true"
- name: COMPONENT_HOST
value: "arms-demo-component"
- name: COMPONENT_PORT
value: "6666"
- name: MYSQL_SERVICE_HOST
value: "arms-demo-mysql"
- name: MYSQL_SERVICE_PORT
value: "3306"
---
apiVersion: apps/v1 # untuk versi sebelum 1.8.0 gunakan apps/v1beta1
kind: Deployment
metadata:
name: arms-springboot-demo-subcomponent
namespace: arms-demo
labels:
app: arms-springboot-demo-subcomponent
spec:
replicas: 2
selector:
matchLabels:
app: arms-springboot-demo-subcomponent
template:
metadata:
labels:
app: arms-springboot-demo-subcomponent
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "arms-k8s-demo-subcomponent"
one-agent.jdk.version: "OpenJDK11"
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
imagePullPolicy: Always
name: arms-springboot-demo-subcomponent
env:
- name: SELF_INVOKE_SWITCH
value: "false"
- name: MYSQL_SERVICE_HOST
value: "arms-demo-mysql"
- name: MYSQL_SERVICE_PORT
value: "3306"
---
apiVersion: v1
kind: Service
metadata:
labels:
name: arms-demo-component
name: arms-demo-component
namespace: arms-demo
spec:
ports:
# port yang harus dilayani oleh service ini
- name: arms-demo-component-svc
port: 6666
targetPort: 8888
# kunci dan nilai label yang harus cocok agar menerima traffic untuk service ini
selector:
app: arms-springboot-demo-subcomponent
---
apiVersion: apps/v1 # untuk versi sebelum 1.8.0 gunakan apps/v1beta1
kind: Deployment
metadata:
name: arms-demo-mysql
namespace: arms-demo
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1
name: mysql
ports:
- containerPort: 3306
name: mysql
---
apiVersion: v1
kind: Service
metadata:
labels:
name: mysql
name: arms-demo-mysql
namespace: arms-demo
spec:
ports:
# port yang harus dilayani oleh service ini
- name: arms-mysql-svc
port: 3306
targetPort: 3306
# kunci dan nilai label yang harus cocok agar menerima traffic untuk service ini
selector:
app: mysql
---Untuk informasi selengkapnya tentang keamanan aplikasi, lihat Apa itu keamanan aplikasi?
Untuk informasi selengkapnya tentang penagihan keamanan aplikasi, lihat Penagihan.
Setelah menyelesaikan langkah-langkah di atas, pemantauan aplikasi ARMS diaktifkan untuk aplikasi yang diterapkan di kluster ACK.
Langkah selanjutnya
Untuk melihat detail pemantauan aplikasi, buka halaman Deployments dan temukan aplikasi tersebut. Di kolom Actions, klik ikon
dan pilih ARMS Console. Untuk informasi selengkapnya, lihat ikhtisar aplikasi.
FAQ
Topik berikut menjawab pertanyaan umum tentang pemantauan aplikasi: