すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Python アプリケーションのモニタリング

最終更新日:Sep 17, 2026

Container Service for Kubernetes (ACK) クラスターにデプロイされた Python アプリケーション (Django、Flask、FastAPI などのフレームワークで構築された Web アプリケーションや、LlamaIndex と Langchain を使用して開発された AI および LLM アプリケーションなど) では、Application Real-Time Monitoring Service (ARMS) を使用してアプリケーションのパフォーマンスをモニタリングできます。モニタリングを有効にするには、ack-onepilot コンポーネントをインストールし、Dockerfile を変更します。これにより、アプリケーション トポロジー、トレーシング、API 呼び出し分析、異常検出、大規模モデルのインタラクションの詳細な追跡などの機能が有効になります。

前提条件

手順 1:ack-onepilot コンポーネントのインストール

重要

レガシーコンポーネントである arms-pilot はメンテナンスが終了しています。ack-onepilot はその後継であり、完全な互換性があります。移行に際してアプリケーション設定の変更は不要です。移行手順については、「arms-pilot のアンインストールと ack-onepilot のインストール」をご参照ください。

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. [ログとモニタリング] セクションで ack-onepilot アドオンを見つけ、アドオンカードにある インストール をクリックします。

    説明

    ack-onepilot のバージョンが 3.2.4 以降であることを確認してください。デフォルトでは、ack-onepilot コンポーネントは最大 1,000 個の Pod をサポートします。この制限を超える Pod が 1,000 個増えるごとに、ack-onepilot の CPU リソースを 0.5 コア、メモリリソースを 512 MB 増やしてください。

    インストールが完了すると、アドオン管理 ページで ack-onepilot アドオンのアップグレード、設定、またはアンインストールができます。

手順 2:ARMS へのリソースアクセスの承認

ARMS は、パスワードなしの承認に addon.arms.token を使用します。ほとんどの ACK マネージドクラスターには、デフォルトでこの Secret が含まれています。一部の古いクラスターには含まれていない場合があります。

クラスターにトークンがあるかどうかを確認します。

クラスター内の addon.arms.token Secret の確認

  1. ACK コンソールにログインします。左側メニューで、[クラスター] をクリックします。

  2. [クラスター] ページで、対象クラスターの名前をクリックします。左側メニューで、[設定] > [Secret] を選択します。

  3. [名前空間] ドロップダウンリストから [kube-system] を選択し、addon.arms.token が存在するかどうかを確認します。

トークンが見つからない場合は、手動で権限を付与します。

  1. ACK コンソールにログインします。左側メニューで、[クラスター] をクリックします。

  2. [クラスター] ページで、対象クラスターの名前をクリックします。左側メニューで、[クラスター情報] をクリックします。

  3. [基本情報] タブの [クラスターリソース] で、[ワーカー RAM ロール] の横にあるリンクをクリックします。

  4. [権限] タブで、[権限を付与] をクリックします。

  5. [AliyunARMSFullAccess] ポリシーを選択し、[権限を付与] をクリックします。

クラスターが Elastic Container Instance (ECI) に接続されている場合は、[RAM クイック承認] ページに移動して承認を完了します。その後、ack-onepilot 用に作成された Pod を再起動します。

手順 3:ARMS Python エージェントの Dockerfile への統合

Dockerfile を変更して ARMS Python エージェントを統合し、エージェントを使用して Python アプリケーションを起動します。

  1. PyPI からエージェントインストーラーをインストールします。

       RUN pip3 install aliyun-bootstrap
  2. エージェントをインストールします。<region-id> をお使いの Alibaba Cloud リージョン ID (例:cn-hangzhou) に置き換えます。

    説明

    特定のエージェントバージョンをインストールするには、aliyun-bootstrap -a install -v <version> を実行します。リリースされたすべてのバージョンについては、「Python エージェントのリリースノート」をご参照ください。

       RUN ARMS_REGION_ID=<region-id> aliyun-bootstrap -a install
  3. 起動コマンドを更新して、aliyun-instrument プレフィックスを使用します。

       CMD ["aliyun-instrument", "python", "app.py"]
  4. イメージをビルドします。

以下は、完全な Dockerfile の例です。

変更前:

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"]

変更後 (ARMS エージェントあり):

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

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

# ARMS Python エージェントをインストール
RUN pip3 install aliyun-bootstrap \
    && ARMS_REGION_ID=<region-id> aliyun-bootstrap -a install

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

# ARMS エージェントを使用してアプリケーションを起動
CMD ["aliyun-instrument", "python", "app.py"]

手順 4:ARMS モニタリングの有効化

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ワークロード] > [デプロイ] を選択します。

  3. デプロイメント ページで、お使いのアプリケーションを探し、操作列の image > YAML の編集 をクリックします。

  4. spec.template.metadata の下に次のラベルを追加します。<app-name> を、my-python-service のようなアプリケーションのわかりやすい名前に置き換えます。

    重要

    ack-onepilot のバージョンが 5.0.0 より後で、かつ Dockerfile にエージェントを手動でインストール済みの場合、自動インジェクションを無効にするには、armsAutoInstrumentationEnable: "off" ラベルを追加します。

       labels:
         aliyun.com/app-language: python       # 必須。Python アプリケーションであることを示します。
         armsPilotAutoEnable: 'on'             # ARMS モニタリングを有効にします。
         armsPilotCreateAppName: "<app-name>"  # ARMS コンソールに表示されるアプリケーション名。

    次のコードは、Deployment を作成し、アプリケーションモニタリングを有効にするための完全な YAML テンプレートです。

    完全な YAML サンプル

    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 # 必須。Python アプリケーションであることを示します。
            armsPilotAutoEnable: 'on'
            armsPilotCreateAppName: "arms-python-client"    # 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 # 必須。Python アプリケーションであることを示します。
            armsPilotAutoEnable: 'on'
            armsPilotCreateAppName: "arms-python-server"    # 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
    

手順 5:モニタリング詳細の表示

  1. 約 1 分後、ARMS コンソールにログインし、左側メニューで アプリケーションのモニタリング > アプリケーションリスト を選択して、Python アプリケーションとそのレポートデータを確認します。

    [アプリケーションリスト] には、接続されている [arms-python-client] アプリケーションとそのメトリクス (1 秒あたりのリクエスト数、エラー率、平均応答時間など) が表示されます。

  2. 名前 をクリックして ARMS コンソールのアプリケーションモニタリングページに移動し、詳細なモニタリング情報を表示します。詳細については、「アプリケーション概要」をご参照ください。

(任意) 手順 6:リソースの解放

ARMS で Python アプリケーションをモニタリングする必要がなくなった場合は、ARMS Python エージェントをアンインストールしてモニタリングを停止できます。詳細については、「Python エージェントのアンインストール」をご参照ください。