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

Container Service for Kubernetes:Python アプリケーションの監視

最終更新日:Mar 27, 2026

Application Real-Time Monitoring Service (ARMS) を使用して、Alibaba Cloud Container Service for Kubernetes (ACK) クラスターにデプロイされた Python アプリケーションを監視します。サポートされているフレームワークには、Django、Flask、FastAPI、LlamaIndex、Langchain が含まれます。ARMS は、アプリケーションのトポロジー、トレース分析、API 呼び出し分析、異常検知、および大規模言語モデル (LLM) のインタラクションの詳細なトレースを提供します。

インストールパスの選択

ARMS は、ご利用の Python アプリケーションをインストルメントする 2 つの方法をサポートしています。ご利用の ack-onepilot のバージョンに基づいて、いずれかを選択してください:

パス 使用するケース 必要なステップ
手動でのエージェントインストール (このページ) ack-onepilot のバージョンが 5.0.0 未満の場合、またはエージェントのインストールを完全に制御したい場合 ステップ 1~5
自動インストルメンテーション ack-onepilot のバージョンが 5.0.0 以降で、Dockerfile の変更が不要なセットアップを希望する場合 ステップ 3 をスキップします。ステップ 4 で、3 つすべてのラベルに加えて armsAutoInstrumentationEnable: "on" を追加します。ack-onepilot は Python エージェントを自動的にダウンロードしてインジェクトします。

前提条件

開始する前に、以下が準備できていることを確認してください:

  • ACK クラスター内の名前空間。このガイドでは、arms-demo という名前の名前空間を使用します。「名前空間とリソースクォータの管理」をご参照ください。

  • Python 3.8 以降。ARMS は、これより前のバージョンの Python とは互換性がありません。

  • ARMS が有効化されていること。詳細については、「ARMS の有効化」をご参照ください。

ステップ 1:ack-onepilot アドオンのインストール

ack-onepilot は、非推奨となった arms-pilot コンポーネントを置き換えるもので、完全な互換性があります。アプリケーションの設定変更は不要です。

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

  2. [クラスター] ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[アドオン] をクリックします。

  3. [ログとモニタリング] セクションで ack-onepilot を見つけ、[インストール] をクリックします。表示されるダイアログボックスで、デフォルト値を使用して [OK] をクリックします。

ack-onepilot バージョン 3.2.4 以降を使用してください。デフォルトでは、ack-onepilot は最大 1,000 個の Pod をサポートします。Pod が 1,000 個追加されるごとに、ack-onepilot の CPU を 0.5 コア、メモリを 512 MB 増やしてください。

インストール後、[アドオン] ページから ack-onepilot のアップグレード、設定、またはアンインストールができます。

arms-pilot からの移行については、「arms-pilot をアンインストールし、ack-onepilot をインストールする方法」をご参照ください。

ステップ 2:ARMS へのリソースアクセス権限の付与

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

ご利用のクラスターにトークンがあるかどうかを確認します:

クラスター内の addon.arms.token シークレットの確認

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

  2. [クラスター] ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[設定] > [シークレット] を選択します。

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

トークンがない場合は、手動で権限を付与します:

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

  2. [クラスター] ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[クラスター情報] をクリックします。

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

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

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

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

ステップ 3:Python エージェントの Dockerfile への統合

Dockerfile を変更して、Python エージェントをインストールし、起動します。変更には次の 3 行が含まれます:

  • PyPI から aliyun-bootstrap をインストール — ARMS Python エージェントのインストーラーツールです。

  • エージェントインストーラーを実行 — ご利用の Alibaba Cloud リージョン ID を使用してエージェントをダウンロードし、設定します。

  • 起動コマンドを変更 — ご利用のアプリケーションを aliyun-instrument でラップして、監視を有効化します。

変更前の Dockerfile

# Python 3.10 ベースイメージを使用します。
FROM docker.m.daocloud.io/python:3.10

# 作業ディレクトリを設定します。
WORKDIR /app

# requirements.txt ファイルを作業ディレクトリにコピーします。
COPY requirements.txt .

# pip を使用して依存パッケージをインストールします。
RUN pip install --no-cache-dir -r requirements.txt

COPY ./app.py /app/app.py
# コンテナのポート 8000 を公開します。
EXPOSE 8000
CMD ["python","app.py"]

変更後の Dockerfile

# 公式 Python 3.10 ベースイメージを使用します。

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

# 作業ディレクトリを設定します。
WORKDIR /app

# requirements.txt ファイルを作業ディレクトリにコピーします。
COPY requirements.txt .

# pip を使用して依存関係をインストールします。
RUN pip install --no-cache-dir -r requirements.txt

# ARMS Python エージェントをインストールします。  
# xxx をご利用の Alibaba Cloud リージョン ID(例:cn-hangzhou)に置き換えます。
RUN pip3 install aliyun-bootstrap && ARMS_REGION_ID=xxx aliyun-bootstrap -a install

COPY ./app.py /app/app.py

# コンテナのポート 8000 を公開します。
EXPOSE 8000
# ARMS Python エージェントを有効化した状態でアプリケーションを起動します。
CMD ["aliyun-instrument","python","app.py"]
特定のエージェントバージョンをインストールするには、aliyun-bootstrap -a install -v <version> を実行します。aliyun-bootstrap -a install は実行しないでください。利用可能なバージョンについては、「Python エージェントのリリースノート」をご参照ください。

Dockerfile を編集した後、イメージをビルドし、ご利用のレジストリにプッシュします。

ステップ 4:ARMS アプリケーション監視の有効化

ご利用の Deployment の Pod テンプレートにラベルを追加して、監視を有効化します。

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

  2. [クラスター] ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[ワークロード] > [Deployment] を選択します。

  3. [デプロイメント] ページで、対象のアプリケーションの image > [YAML の編集] をクリックします。

  4. spec.template.metadata の下に、次のラベルを追加します:

    labels:
      aliyun.com/app-language: python        # 必須。これを Python アプリケーションとして識別します。
      armsPilotAutoEnable: 'on'
      armsPilotCreateAppName: "deployment-name"    # ARMS でのアプリケーションの表示名。

    deployment-name を ARMS コンソールに表示したい名前に置き換えます。

    image

重要

ack-onepilot のバージョンが 5.0.0 以降の場合、Python エージェントが自動的にダウンロードおよびインジェクトされるため、Dockerfile の変更は不要です。コンテナにエージェントを手動でインストール済みの場合 (ステップ 3)、次のラベルを追加して自動インジェクションを無効にしてください:

armsAutoInstrumentationEnable: "off"

完全な 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
        armsPilotAutoEnable: 'on'
        armsPilotCreateAppName: "arms-python-client"
    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
        armsPilotAutoEnable: 'on'
        armsPilotCreateAppName: "arms-python-server"
    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

次の YAML は、arms-demo 名前空間に 2 つの Deployment (arms-python-clientarms-python-server) と 2 つのサービスを作成し、ARMS 監視を有効にします。

ステップ 5:モニタリングデータの表示

約 1 分後、ご利用のアプリケーションが ARMS コンソールに表示されます。

  1. ARMS コンソールに移動し、[アプリケーションモニタリング] > [アプリケーションリスト] に進みます。

    image

  2. アプリケーション名をクリックして、詳細なメトリックを表示します。モニタリングページの完全な説明については、「アプリケーションの概要」をご参照ください。

トラブルシューティング

1 分経ってもアプリケーションが ARMS コンソールに表示されない場合は、以下を確認してください:

Pod が実行中で、ラベルが適用されていることを確認します:

kubectl get pods -n arms-demo
kubectl describe pod <pod-name> -n arms-demo | grep -A 10 "Labels:"

Pod のラベルに armsPilotAutoEnable: onaliyun.com/app-language: python が含まれていることを確認します。

モニタリングデータが表示されない一般的な原因:

症状 考えられる原因 修正方法
アプリケーションが ARMS コンソールに表示されない ラベルがない、またはスペルミスがある Deployment の YAML でラベル名を再確認する
アプリケーションは表示されるがデータがない Python のバージョンが 3.8 未満 Python 3.8 以降にアップグレードする
アプリケーションは表示されるがデータがない エージェントがインストールされていない (手動パスの場合) Dockerfile に aliyun-bootstrap のインストール行と aliyun-instrument の CMD の両方が含まれていることを確認する
Pod ログに権限付与エラーがある addon.arms.token がない ステップ 2 を完了し、影響を受ける Pod を再起動する

(オプション) リソースの解放

モニタリングを停止するには、Python エージェントをアンインストールしてください。詳細については、「Python エージェントのアンインストール」をご参照ください。

次のステップ