Untuk memantau aplikasi Python yang diterapkan pada Container Service for Kubernetes (ACK) dan Container Compute Service (ACS), Anda perlu menginstal komponen ack-onepilot untuk Application Real-Time Monitoring Service (ARMS) dan memodifikasi Dockerfile yang sesuai. Dengan demikian, Anda dapat melihat data pemantauan—seperti topologi aplikasi, panggilan API, dan analisis jejak panggilan—di Konsol ARMS. Topik ini menjelaskan cara menginstal agen untuk aplikasi Python yang diterapkan pada Container Service for Kubernetes (ACK) dan Container Compute Service (ACS).
Jika Anda memiliki pertanyaan saat menggunakan agen Python, lihat FAQ tentang agen Python. Jika dokumen tersebut tidak menyelesaikan masalah Anda, Anda dapat menghubungi kami melalui grup DingTalk (ID: 159215000379).
Untuk memastikan Anda dapat menggunakan fitur terbaru dari agen Python, versi terbaru agen akan diinstal secara default setiap kali Anda menggunakan komponen aliyun-bootstrap atau metode instalasi non-intrusif. Untuk menentukan versi agen secara manual, lihat bagian Bagaimana cara menginstal agen untuk wilayah dan versi tertentu? dalam FAQ tentang agen Python.
Prasyarat
Kluster ACK atau ACS telah dibuat.
Untuk kluster ACK: Buat kluster khusus ACK (pembuatan baru telah dihentikan), Buat kluster ACK yang dikelola, atau Buat kluster ACK Serverless.
Untuk kluster ACS: Buat kluster ACS.
Namespace telah dibuat. Untuk informasi selengkapnya, lihat Kelola namespace dan kuota. Topik ini menggunakan arms-demo sebagai contoh nama namespace.
Versi Python dan framework Anda didukung. Untuk informasi selengkapnya, lihat Komponen dan framework Python yang didukung oleh Pemantauan Aplikasi ARMS.
Catatan
Jika aplikasi Anda dimulai dengan uvicorn, pilih salah satu metode konfigurasi berikut.
Metode 1: Tambahkan pernyataan berikut ke baris pertama file entri uvicorn untuk mengimpor agen Python.
from aliyun.opentelemetry.instrumentation.auto_instrumentation import sitecustomizeMetode 2: Ganti uvicorn dengan gunicorn dan tambahkan awalan
aliyun-instrumentke perintah gunicorn.Contoh:
uvicorn app:app --workers 4 --port=9090 --host 0.0.0.0Ubah perintah menjadi:
aliyun-instrument gunicorn -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 app:appCatatanInstruksi aliyun-instrument menangani inisialisasi dan instrumentasi non-intrusif dari agen Python ARMS.
Jika aplikasi Anda dimulai dengan uWSGI, lihat Instal agen Python untuk proyek Django atau Flask yang dimulai dengan uWSGI.
Jika Anda menggunakan korutin gevent, Anda harus menyetel variabel lingkungan
GEVENT_ENABLE=true.Sebagai contoh, jika program Anda berisi kode berikut:
from gevent import monkey monkey.patch_all()Anda harus menyetel variabel lingkungan sebagai berikut:
GEVENT_ENABLE=true
Langkah 1: Instal penginstal agen ARMS (ack-onepilot)
Masuk ke Konsol ACK. Pada halaman Clusters, klik nama kluster.
Pada panel navigasi sebelah kiri, klik Add-ons. Di pojok kanan atas, cari ack-onepilot.
PentingPastikan versi ack-onepilot adalah 3.2.4 atau lebih baru.
Klik Install pada kartu ack-onepilot.
CatatanSecara default, komponen ack-onepilot mendukung 1.000 Pod. Untuk setiap tambahan 1.000 Pod di kluster, Anda harus menambahkan 0,5 core CPU dan memori 512 MB untuk komponen tersebut.
Pada kotak dialog yang muncul, konfigurasikan parameter dan klik OK. Kami menyarankan Anda menggunakan nilai default.
CatatanSetelah menginstal ack-onepilot, Anda dapat melakukan peningkatan, konfigurasi, atau uninstal di halaman Add-ons.
- Penting
Jika versi komponen ack-onepilot yang Anda instal lebih baru dari 5.0.0, Anda dapat melewati Langkah 2 dan langsung ke Langkah 3. Ini memberikan pengalaman instalasi sepenuhnya non-intrusif untuk aplikasi Python.
Langkah 2: Modifikasi Dockerfile
Unduh penginstal agen dari repositori Python Package Index (PyPI).
pip3 install aliyun-bootstrapGunakan aliyun-bootstrap untuk menginstal agen.
# ID wilayah Akun Alibaba Cloud. ARMS_REGION_ID=xxx aliyun-bootstrap -a installCatatanUntuk menginstal versi tertentu dari agen Python, jalankan perintah berikut:
# Ganti ${version} dengan nomor versi aktual. aliyun-bootstrap -a install -v ${version}Untuk informasi selengkapnya tentang semua versi rilis agen Python, lihat Catatan rilis agen Python.
Jalankan aplikasi menggunakan agen Python ARMS.
aliyun-instrument python app.pyBuat citra.
Kode berikut menyediakan contoh lengkap Dockerfile:
Langkah 3: Berikan izin akses ke resource ARMS
Kluster ACK yang dikelola
Jika token ARMS Addon tidak ada di kluster ACK yang dikelola, berikan izin secara manual untuk mengakses resource ARMS. Jika token ARMS Addon sudah ada, lewati ke Langkah 4.
Jika kluster memiliki token ARMS Addon, ARMS melakukan otorisasi tanpa kata sandi pada kluster tersebut. Token ARMS Addon mungkin tidak tersedia di beberapa kluster ACK yang dikelola. Kami menyarankan Anda memeriksa keberadaan token ARMS Addon sebelum menggunakan ARMS untuk memantau aplikasi di kluster tersebut. Jika kluster tidak memiliki token ARMS Addon, Anda harus memberikan otorisasi agar kluster dapat mengakses ARMS.
Kluster khusus ACK/kluster terdaftar
Untuk memantau aplikasi yang diterapkan di kluster khusus ACK atau kluster terdaftar, pastikan izin AliyunARMSFullAccess dan AliyunSTSAssumeRoleAccess telah diberikan kepada pengguna Resource Access Management (RAM) Anda.
Setelah menginstal komponen ack-onepilot, masukkan ID AccessKey dan Rahasia AccessKey akun ke dalam file konfigurasi ack-onepilot.
Metode 1: Input di Hem
Masuk ke Konsol ACK. Pada panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik kluster yang ingin Anda kelola. Pada panel navigasi kiri halaman yang muncul, pilih . Lalu, klik Update di sebelah ack-onepilot.
Ganti
accessKeydanaccessKeySecretdengan ID AccessKey dan Rahasia AccessKey akun, lalu klik OK.CatatanRahasia AccessKey hanya terlihat saat pembuatan awal pasangan AccessKey Alibaba Cloud dan tidak dapat diambil kembali setelah itu. Desain ini mengurangi risiko kebocoran. Simpan Rahasia tersebut dengan aman segera setelah dibuat.

Mulai ulang Penyebaran.
Metode 2: Impor melalui Secrets Kubernetes
Masuk ke Konsol ACK. Pada panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik kluster yang ingin Anda kelola. Pada panel navigasi kiri halaman yang muncul, pilih .
Klik Create. Pada panel yang muncul, klik Add dan tambahkan ID AccessKey dan Rahasia AccessKey untuk ack-onepilot.
CatatanRahasia AccessKey hanya terlihat saat pembuatan awal pasangan AccessKey Alibaba Cloud dan tidak dapat diambil kembali setelah itu. Desain ini mengurangi risiko kebocoran. Simpan Rahasia tersebut dengan aman segera setelah dibuat.

Pada panel navigasi kiri, pilih . Pada halaman yang muncul, klik komponen ack-onepilot. Biasanya bernama ack-onepilot-ack-onepilot di namespace ack-onepilot.
Di pojok kanan atas halaman yang muncul, klik Edit.
Gulir ke bawah hingga Anda melihat bagian Environments. Klik Add, tambahkan variabel lingkungan
ONE_PILOT_ACCESSKEYdanONE_PILOT_ACCESSKEY_SECRET, referensikan Secrets di Kubernetes Secrets, lalu klik OK.
Kluster ASK/ECI
Untuk memantau aplikasi di kluster ACK Serverless (ASK) atau aplikasi di kluster Kubernetes yang terhubung ke Elastic Container Instance, Anda harus terlebih dahulu memberikan otorisasi akses ARMS pada halaman Cloud Resource Access Authorization. Kemudian, restart semua Pod tempat komponen ack-onepilot diterapkan.
Langkah 4: Aktifkan Pemantauan Aplikasi ARMS untuk aplikasi Python
Jika versi komponen ack-onepilot yang Anda instal lebih baru dari 5.0.0, komponen tersebut secara otomatis mengunduh dan menyuntikkan paket agen Python pada langkah ini. Anda tidak perlu memodifikasi perintah startup di Dockerfile secara manual. Ini memberikan pengalaman instalasi sepenuhnya non-intrusif.
Paket agen Python diunduh dan disuntikkan oleh init container. Secara default, init container mengonsumsi 0,5 core dan 250 MB sumber daya, serta eksekusinya membutuhkan waktu sekitar 10 detik. Sumber daya ini dilepas setelah inisialisasi selesai. Anda dapat menyesuaikan kuota sumber daya untuk init container guna mengubah kecepatan eksekusinya menggunakan variabel lingkungan berikut:
PYTHON_INIT_RESOURCE_REQUESTS_CPU: Permintaan CPU untuk init container aplikasi Python. Contoh: 500m.
PYTHON_INIT_RESOURCE_REQUESTS_MEM: Permintaan memori untuk init container aplikasi Python. Contoh: 250Mi.
PYTHON_INIT_RESOURCE_LIMIT_CPU: Batas CPU untuk init container aplikasi Python. Contoh: 1000m.
PYTHON_INIT_RESOURCE_LIMIT_MEM: Batas memori untuk init container aplikasi Python. Contoh: 500Mi.
Fitur ini masih dalam tahap beta. Jika Anda memiliki pertanyaan saat menggunakan fitur penyuntikan non-intrusif ini, hubungi kami melalui grup DingTalk (ID: 159215000379).
Templat berikut merupakan contoh YAML lengkap untuk membuat deployment dan mengaktifkan Pemantauan Aplikasi ARMS:
Masuk ke Konsol ACK. Pada panel navigasi kiri, klik Clusters.
Pada halaman Deployments, temukan aplikasi target dan pilih dari kolom Actions.
Klik Create From YAML untuk membuat aplikasi baru.
Pada file YAML, tambahkan
labelsberikut di bawah `spec.template.metadata`.labels: aliyun.com/app-language: python # Wajib untuk aplikasi Python. Menentukan bahwa ini adalah aplikasi Python. armsPilotAutoEnable: 'on' armsPilotCreateAppName: "deployment-name" # Nama tampilan aplikasi di ARMS.PentingJika versi komponen ack-onepilot yang Anda instal lebih baru dari 5.0.0, komponen tersebut secara otomatis mengunduh dan menyuntikkan paket agen Python pada langkah ini. Ini memberikan pengalaman instalasi sepenuhnya non-intrusif. Jika Anda tidak ingin menggunakan fitur ini, atau jika Anda telah menginstal agen Python secara manual di kontainer, kami menyarankan Anda menonaktifkan fitur penyuntikan non-intrusif untuk Python menggunakan label berikut:
labels: aliyun.com/app-language: python # Wajib untuk aplikasi Python. Menentukan bahwa ini adalah aplikasi Python. armsPilotAutoEnable: 'on' armsPilotCreateAppName: "deployment-name" # Nama tampilan aplikasi di ARMS. armsAutoInstrumentationEnable: "off" # Menonaktifkan fitur penyuntikan non-intrusif untuk aplikasi Python.
Klik Update.
Hasil
Instalasi agen berhasil jika aplikasi Python muncul di halaman di Konsol ARMS dan mulai melaporkan data dalam waktu sekitar satu menit.

> Edit YAML