全部产品
Search
文档中心

Application Real-Time Monitoring Service:Instal agen Python untuk Container Service for Kubernetes (ACK) dan Container Compute Service (ACS) menggunakan komponen ack-onepilot

更新时间:Dec 18, 2025

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).

Catatan
  • 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

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 sitecustomize
    • Metode 2: Ganti uvicorn dengan gunicorn dan tambahkan awalan aliyun-instrument ke perintah gunicorn.

      Contoh:

      uvicorn app:app --workers 4 --port=9090 --host 0.0.0.0

      Ubah perintah menjadi:

      aliyun-instrument gunicorn -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 app:app
      Catatan

      Instruksi 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)

  1. Masuk ke Konsol ACK. Pada halaman Clusters, klik nama kluster.

  2. Pada panel navigasi sebelah kiri, klik Add-ons. Di pojok kanan atas, cari ack-onepilot.

    Penting

    Pastikan versi ack-onepilot adalah 3.2.4 atau lebih baru.

  3. Klik Install pada kartu ack-onepilot.

    Catatan

    Secara 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.

  4. Pada kotak dialog yang muncul, konfigurasikan parameter dan klik OK. Kami menyarankan Anda menggunakan nilai default.

    Catatan

    Setelah menginstal ack-onepilot, Anda dapat melakukan peningkatan, konfigurasi, atau uninstal di halaman Add-ons.

  5. 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

  1. Unduh penginstal agen dari repositori Python Package Index (PyPI).

    pip3 install aliyun-bootstrap
  2. Gunakan aliyun-bootstrap untuk menginstal agen.

    # ID wilayah Akun Alibaba Cloud.
    ARMS_REGION_ID=xxx aliyun-bootstrap -a install
    Catatan

    Untuk 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.

  3. Jalankan aplikasi menggunakan agen Python ARMS.

    aliyun-instrument python app.py
  4. Buat citra.

Kode berikut menyediakan contoh lengkap Dockerfile:

    Dockerfile sebelum modifikasi

    # Gunakan citra dasar Python 3.10.
    FROM docker.m.daocloud.io/python:3.10
    
    # Tetapkan direktori kerja.
    WORKDIR /app
    
    # Salin file requirements.txt ke direktori kerja.
    COPY requirements.txt .
    
    # Gunakan pip untuk menginstal dependensi.
    RUN pip install --no-cache-dir -r requirements.txt
    
    COPY ./app.py /app/app.py
    # Ekspos port 8000 kontainer.
    EXPOSE 8000
    CMD ["python","app.py"]

    Dockerfile yang telah dimodifikasi

    # Gunakan citra dasar resmi Python 3.10.
    FROM docker.m.daocloud.io/python:3.10
    
    # Tetapkan direktori kerja.
    WORKDIR /app
    
    # Salin file requirements.txt ke direktori kerja.
    COPY requirements.txt .
    
    # Gunakan pip untuk menginstal dependensi.
    RUN pip install --no-cache-dir -r requirements.txt
    #########################Instal agen Python Aliyun###############################
    # ID wilayah Akun Alibaba Cloud.
    RUN pip3 install aliyun-bootstrap && ARMS_REGION_ID=xxx aliyun-bootstrap -a install 
    ##########################################################
    
    COPY ./app.py /app/app.py
    
    
    # Ekspos port 8000 kontainer.
    EXPOSE 8000
    #########################################################
    CMD ["aliyun-instrument","python","app.py"]

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.

Periksa apakah token ARMS Addon ada di kluster

  1. Masuk ke Konsol ACK. Pada panel navigasi sebelah kiri, klik Clusters. Pada halaman Clusters, klik nama kluster untuk membuka halaman detail kluster.

  2. Pada panel navigasi sebelah kiri, pilih Configurations > Secrets. Di bagian atas halaman, pilih kube-system dari daftar drop-down Namespace dan periksa apakah addon.arms.token ditampilkan di halaman Secrets.

Catatan

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.

Tambahkan kebijakan izin secara manual

  1. Masuk ke Konsol ACK. Pada panel navigasi sebelah kiri, klik Clusters. Pada halaman Clusters, klik nama kluster.

  2. Pada tab Basic Information di halaman Cluster Information, klik tautan di samping Worker RAM Role di bagian Cluster Resources.

  3. Pada halaman yang muncul, klik Grant Permission pada tab Permissions.

  4. Pada panel Grant Permission, tambahkan kebijakan berikut dan klik Grant permissions.

    • AliyunTracingAnalysisFullAccess: akses penuh ke Managed Service for OpenTelemetry.

    • AliyunARMSFullAccess: akses penuh ke 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

  1. Masuk ke Konsol ACK. Pada panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik kluster yang ingin Anda kelola. Pada panel navigasi kiri halaman yang muncul, pilih Applications > Helm. Lalu, klik Update di sebelah ack-onepilot.

  3. Ganti accessKey dan accessKeySecret dengan ID AccessKey dan Rahasia AccessKey akun, lalu klik OK.

    Catatan

    Rahasia 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.

    image

  4. Mulai ulang Penyebaran.

Metode 2: Impor melalui Secrets Kubernetes

  1. Masuk ke Konsol ACK. Pada panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik kluster yang ingin Anda kelola. Pada panel navigasi kiri halaman yang muncul, pilih Configurations > Secrets.

  3. Klik Create. Pada panel yang muncul, klik Add dan tambahkan ID AccessKey dan Rahasia AccessKey untuk ack-onepilot.

    Catatan

    Rahasia 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.

    image

  4. Pada panel navigasi kiri, pilih Workloads > Deployments. Pada halaman yang muncul, klik komponen ack-onepilot. Biasanya bernama ack-onepilot-ack-onepilot di namespace ack-onepilot.

  5. Di pojok kanan atas halaman yang muncul, klik Edit.

  6. Gulir ke bawah hingga Anda melihat bagian Environments. Klik Add, tambahkan variabel lingkungan ONE_PILOT_ACCESSKEY dan ONE_PILOT_ACCESSKEY_SECRET, referensikan Secrets di Kubernetes Secrets, lalu klik OK.

    image

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

Penting
  • 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:

Lihat file YAML contoh lengkap (Python)

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: arms-python-client
  name: arms-python-client
  namespace: arms-demo
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: arms-python-client
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: arms-python-client
        aliyun.com/app-language: python # Wajib untuk aplikasi Python. Menentukan bahwa ini adalah aplikasi Python.
        armsPilotAutoEnable: 'on'
        armsPilotCreateAppName: "arms-python-client"    # Nama tampilan aplikasi di ARMS.
    spec:
      containers:
        - image: registry.cn-hangzhou.aliyuncs.com/arms-default/python-agent:arms-python-client
          imagePullPolicy: Always
          name: client
          resources:
            requests:
              cpu: 250m
              memory: 300Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

---

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: arms-python-server
  name: arms-python-server
  namespace: arms-demo
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: arms-python-server
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: arms-python-server
        aliyun.com/app-language: python # Wajib untuk aplikasi Python. Menentukan bahwa ini adalah aplikasi Python.
        armsPilotAutoEnable: 'on'
        armsPilotCreateAppName: "arms-python-server"    # Nama tampilan aplikasi di ARMS.
    spec:
      containers:
        - env:
          - name: CLIENT_URL
            value: 'http://arms-python-client-svc:8000'
        - image: registry.cn-hangzhou.aliyuncs.com/arms-default/python-agent:arms-python-server
          imagePullPolicy: Always
          name: server
          resources:
            requests:
              cpu: 250m
              memory: 300Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

---

apiVersion: v1
kind: Service
metadata:
  labels:
    app: arms-python-server
  name: arms-python-server-svc
  namespace: arms-demo
spec:
  internalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  ports:
    - name: http
      port: 8000
      protocol: TCP
      targetPort: 8000
  selector:
    app: arms-python-server
  sessionAffinity: None
  type: ClusterIP

apiVersion: v1
kind: Service
metadata:
  name: arms-python-client-svc
  namespace: arms-demo
  uid: 91f94804-594e-495b-9f57-9def1fdc7c1d
spec:
  internalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  ports:
    - name: http
      port: 8000
      protocol: TCP
      targetPort: 8000
  selector:
    app: arms-python-client
  sessionAffinity: None
  type: ClusterIP
  1. Masuk ke Konsol ACK. Pada panel navigasi kiri, klik Clusters.

  2. Pada halaman Deployments, temukan aplikasi target dan pilih image > Edit YAML dari kolom Actions.

    Klik Create From YAML untuk membuat aplikasi baru.

  3. Pada file YAML, tambahkan labels berikut 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.
    Penting

    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. 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.

    image

  4. Klik Update.

Hasil

Instalasi agen berhasil jika aplikasi Python muncul di halaman Application Monitoring > Applications di Konsol ARMS dan mulai melaporkan data dalam waktu sekitar satu menit.

2024-09-23_17-45-22