全部产品
Search
文档中心

Container Service for Kubernetes:Pemantauan aplikasi Python

更新时间:Nov 11, 2025

Anda dapat memantau kinerja aplikasi Python yang diterapkan di kluster Alibaba Cloud Container Service for Kubernetes (ACK), termasuk aplikasi web berbasis kerangka kerja seperti Django, Flask, dan FastAPI, serta aplikasi artificial intelligence (AI) atau large language model (LLM) yang dikembangkan dengan LlamaIndex atau Langchain. Untuk menggunakan Application Real-Time Monitoring Service (ARMS), instal komponen ack-onepilot dan modifikasi Dockerfile. ARMS menyediakan fitur pemantauan kinerja aplikasi, seperti topologi aplikasi, analisis pelacakan, analisis panggilan API, deteksi anomali, serta pelacakan terperinci interaksi model besar.

Prasyarat

Langkah 1: Instal komponen ack-onepilot untuk pemantauan aplikasi

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

  2. Di halaman Clusters, temukan kluster yang ingin Anda kelola lalu klik namanya. Di panel navigasi kiri, klik Add-ons.

  3. Di bagian Logs and Monitoring, temukan ack-onepilot lalu klik Install. Pada kotak dialog yang muncul, konfigurasikan parameter sesuai kebutuhan. Kami menyarankan menggunakan nilai default. Kemudian, klik OK.

    Catatan

    Pastikan versi ack-onepilot adalah 3.2.4 atau lebih baru. Secara default, komponen ack-onepilot mendukung 1.000 Pod. Untuk setiap tambahan 1.000 Pod melebihi batas ini, tingkatkan sumber daya CPU untuk ack-onepilot sebesar 0,5 core dan sumber daya memori sebesar 512 MB.

Langkah 2: Otorisasi ARMS untuk mengakses sumber daya

  • Untuk memantau aplikasi yang diterapkan di kluster ACK tanpa addon.arms.token, lakukan langkah-langkah berikut untuk memberikan otorisasi kepada kluster ACK agar dapat mengakses ARMS. Jika addon.arms.token sudah ada, tidak diperlukan otorisasi tambahan.

    Catatan

    Di kluster ACK, addon.arms.token memungkinkan ARMS melakukan otorisasi otomatis tanpa kata sandi. Biasanya, kluster ACK yang dikelola memiliki addon.arms.token secara default. Namun, beberapa kluster ACK yang dikelola yang dibuat sebelumnya mungkin tidak menyertakan addon.arms.token.

    1. Periksa apakah kluster memiliki addon.arms.token.

      Periksa keberadaan rahasia addon.arms.token di kluster

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

      2. Di halaman Clusters, klik nama kluster yang ingin Anda ubah. Di panel navigasi kiri, pilih Configurations > Secrets.

      3. Di bagian atas halaman, pilih kube-system dari daftar drop-down Namespace dan periksa apakah addon.arms.token ada.

    2. Jika addon.arms.token tidak ada, lakukan langkah-langkah berikut untuk memberikan otorisasi manual agar kluster dapat mengakses sumber daya ARMS:

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

      2. Di halaman Clusters, temukan kluster target lalu klik namanya. Di panel navigasi kiri, klik Cluster Information.

      3. Klik tab Basic Information. Di bagian Cluster Resources, klik tautan di sebelah kanan Worker RAM Role.

      4. Di tab Permissions, klik Grant Permission.

      5. Pilih kebijakan AliyunARMSFullAccess lalu klik OK.

  • Untuk memantau aplikasi yang diterapkan di kluster ACK yang dikelola yang terhubung ke instans kontainer elastis, buka halaman Otorisasi Cepat RAM dan selesaikan otorisasi tersebut. Kemudian, mulai ulang Pod yang dibuat untuk ack-onepilot.

Langkah 3: Integrasikan agen Python ARMS ke dalam Dockerfile

Modifikasi Dockerfile untuk mengintegrasikan agen Python ARMS ke dalam aplikasi Python Anda dan menjalankannya.

  1. Unduh installer 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 dimodifikasi

    # 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 4: Aktifkan Pemantauan Aplikasi ARMS untuk aplikasi Python

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

  2. Di halaman Clusters, temukan kluster yang ingin Anda kelola lalu klik namanya. Di panel navigasi kiri, pilih Workloads > Deployments.

  3. Di halaman Stateless, klik image > YAML Edit untuk aplikasi target.

  4. Di 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 akan secara otomatis mengunduh dan menyuntikkan paket agen Python pada langkah ini. Hal ini memberikan pengalaman instalasi yang sepenuhnya non-intrusif. Jika Anda tidak ingin menggunakan fitur ini, atau jika Anda telah menginstal agen Python secara manual di dalam kontainer, kami menyarankan agar 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

    Kode berikut menyediakan templat YAML lengkap untuk membuat aplikasi tanpa status (Deployment) dan mengaktifkan Pemantauan Aplikasi ARMS:

    Perluas untuk melihat templat YAML lengkap

    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. Label ini menunjukkan bahwa aplikasi merupakan 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. Label ini menunjukkan bahwa aplikasi merupakan 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
    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
    

Langkah 5: Lihat detail pemantauan

  1. Setelah sekitar satu menit, Anda dapat melihat aplikasi Python dan data yang dilaporkannya di halaman Application Monitoring > Application List di Konsol ARMS.

    image

  2. Klik Application Name untuk melihat detail pemantauan di halaman pemantauan aplikasi pada konsol ARMS. Untuk informasi selengkapnya, lihat Ikhtisar Aplikasi.

(Opsional) Langkah 6: Lepaskan sumber daya

Jika Anda tidak lagi memerlukan ARMS untuk memantau aplikasi Python Anda, Anda dapat menguninstall agen Python ARMS untuk menghentikan pemantauan. Untuk informasi selengkapnya, lihat Uninstall the Python agent.