All Products
Search
Document Center

Container Service for Kubernetes:Pemantauan aplikasi Python

Last Updated:Sep 17, 2026

Untuk aplikasi Python yang diterapkan di kluster ACK—seperti aplikasi web berbasis framework Django, Flask, dan FastAPI, atau aplikasi AI dan LLM yang dikembangkan menggunakan LlamaIndex dan Langchain—Anda dapat menggunakan Application Real-Time Monitoring Service (ARMS) untuk memantau kinerja aplikasi. Untuk mengaktifkan pemantauan, instal komponen ack-onepilot dan modifikasi Dockerfile Anda. Hal ini mengaktifkan fitur seperti topologi aplikasi, pelacakan (tracing), analisis panggilan API, deteksi anomali, serta pelacakan detail interaksi model besar.

Prasyarat

Langkah 1: Instal komponen ack-onepilot

Penting

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 Uninstall arms-pilot and install ack-onepilot.

  1. Login ke ACK console. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Components and Add-ons .

  3. Di bagian Logs and Monitoring, temukan add-on ack-onepilot dan klik Install pada kartu add-on tersebut.

    Catatan

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

    Setelah instalasi selesai, Anda dapat melakukan upgrade, mengonfigurasi, atau menguninstal add-on ack-onepilot di halaman Add-ons.

Langkah 2: Berikan otorisasi kepada ARMS untuk mengakses sumber daya

ARMS menggunakan addon.arms.token untuk otorisasi tanpa password. Sebagian besar kluster ACK yang dikelola sudah menyertakan rahasia ini secara default. Beberapa kluster lama mungkin tidak memilikinya.

Periksa apakah kluster Anda memiliki token tersebut:

Periksa keberadaan rahasia addon.arms.token di kluster

  1. Login ke ACK console. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Configurations > Secrets.

  3. Pilih kube-system dari daftar drop-down Namespace dan periksa apakah addon.arms.token ada.

Jika token tidak tersedia, berikan izin secara manual:

  1. Login ke ACK console. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, klik Cluster Information.

  3. Di tab Basic Information, di bawah Cluster Resources, klik tautan di samping Worker RAM Role.

  4. Di tab Permissions, klik Grant Permission.

  5. Pilih kebijakan AliyunARMSFullAccess dan klik Grant permissions.

Jika kluster Anda terhubung ke Elastic Container Instance (ECI), buka halaman RAM Quick Authorization dan selesaikan proses otorisasi. Kemudian restart Pod yang dibuat untuk ack-onepilot.

Langkah 3: Integrasikan agen ARMS Python ke dalam Dockerfile Anda

Modifikasi Dockerfile Anda untuk mengintegrasikan agen ARMS Python dan gunakan untuk menjalankan aplikasi Python Anda.

  1. Instal installer agen dari PyPI:

       RUN pip3 install aliyun-bootstrap
  2. Instal agen tersebut. Ganti <region-id> dengan ID wilayah Alibaba Cloud Anda (misalnya, cn-hangzhou):

    Catatan

    Untuk menginstal versi agen tertentu, jalankan: aliyun-bootstrap -a install -v <version> . Untuk semua versi yang dirilis, lihat Python agent release notes.

       RUN ARMS_REGION_ID=<region-id> aliyun-bootstrap -a install
  3. Perbarui perintah startup agar menggunakan awalan aliyun-instrument:

       CMD ["aliyun-instrument", "python", "app.py"]
  4. Buat image tersebut.

Berikut ini contoh Dockerfile lengkap:

Sebelum:

FROM docker.m.daocloud.io/python:3.10

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY ./app.py /app/app.py
EXPOSE 8000
CMD ["python", "app.py"]

Sesudah (dengan agen ARMS):

FROM docker.m.daocloud.io/python:3.10

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Install the ARMS Python agent
RUN pip3 install aliyun-bootstrap \
    && ARMS_REGION_ID=<region-id> aliyun-bootstrap -a install

COPY ./app.py /app/app.py
EXPOSE 8000

# Start the application with the ARMS agent
CMD ["aliyun-instrument", "python", "app.py"]

Langkah 4: Aktifkan pemantauan ARMS

  1. Login ke ACK console. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workloads > Deployments.

  3. Di halaman Deployments, temukan aplikasi Anda dan klik image > Edit YAML di kolom Actions.

  4. Tambahkan label berikut di bawah spec.template.metadata: Ganti <app-name> dengan nama deskriptif untuk aplikasi Anda, misalnya my-python-service.

    Penting

    Jika Anda menggunakan ack-onepilot versi lebih baru dari 5.0.0 tetapi sudah menginstal agen secara manual di Dockerfile Anda, nonaktifkan auto-injection dengan menambahkan label ini: ``yaml armsAutoInstrumentationEnable: "off" ``

       labels:
         aliyun.com/app-language: python       # Required. Identifies this as a Python application.
         armsPilotAutoEnable: 'on'             # Enables ARMS monitoring.
         armsPilotCreateAppName: "<app-name>"  # Display name in the ARMS console.

    Kode berikut menyediakan templat YAML lengkap untuk membuat Deployment dan mengaktifkan pemantauan aplikasi:

    Contoh 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 # Required. Specifies the application language as Python.
            armsPilotAutoEnable: 'on'
            armsPilotCreateAppName: "arms-python-client"    # The application's display name in the ARMS console.
        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 # Required. Specifies the application language as Python.
            armsPilotAutoEnable: 'on'
            armsPilotCreateAppName: "arms-python-server"    # The application's display name in the ARMS console.
        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. Sekitar satu menit kemudian, login ke ARMS console. Di panel navigasi kiri, pilih Application Monitoring > Applications untuk melihat aplikasi Python Anda beserta data yang dilaporkannya.

    Di daftar aplikasi, Anda dapat melihat aplikasi arms-python-client yang terhubung beserta metriknya, seperti jumlah permintaan per detik, laju error, dan waktu respons rata-rata.

  2. Klik Application Name untuk membuka halaman pemantauan aplikasi di konsol ARMS dan melihat informasi pemantauan detail. Untuk informasi selengkapnya, lihat Application overview.

(Opsional) Langkah 6: Lepaskan sumber daya

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