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 maupun lambat. Gunakan data pemantauan ini untuk dengan cepat mengidentifikasi antarmuka bermasalah atau lambat, mereproduksi parameter panggilan, mendeteksi kebocoran memori, dan menemukan bottleneck sistem. Untuk informasi selengkapnya tentang pemantauan aplikasi ARMS, lihat Apa itu pemantauan aplikasi?
Prasyarat
-
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 versi setelahnya 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 versi yang lebih baru.
Pastikan 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 arms-pilot lawas tidak lagi dipelihara. ack-onepilot merupakan 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 dalam 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 tersebut.
-
Pada 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, otorisasi tidak diperlukan 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.
Ketika 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 tersebut secara default, tetapi kluster ACK yang dikelola yang dibuat sebelumnya mungkin tidak menyertainya.
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 disediakan oleh layanan ini
- name: arms-demo-component-svc
port: 6666
targetPort: 8888
# kunci dan nilai label yang harus cocok agar menerima traffic untuk layanan 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 disediakan oleh layanan ini
- name: arms-mysql-svc
port: 3306
targetPort: 3306
# kunci dan nilai label yang harus cocok agar menerima traffic untuk layanan 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 berikutnya
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-topik berikut menjawab pertanyaan umum mengenai pemantauan aplikasi: