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

:ACK にデプロイされた Python アプリケーションに ARMS エージェントをインストールする

最終更新日:Dec 30, 2024

Container Service for Kubernetes (ACK) にデプロイされた Python アプリケーションを監視するには、Application Real-Time Monitoring Service (ARMS) エージェント (ack-onepilot) をインストールし、Dockerfile を変更します。その後、アプリケーショントポロジ、インターフェースコール、トレース分析など、アプリケーションの監視データを表示できます。このトピックでは、ACK にデプロイされた Python アプリケーションに ARMS エージェント (ack-onepilot) をインストールする方法について説明します。

説明

ARMS エージェントの使用中に質問がある場合は、DingTalk グループチャット (ID: 35568145) に参加してテクニカルサポートを受けてください。

前提条件

使用上の注意

  • Unicorn を使用してアプリケーションを起動する場合は、代わりに Gunicorn を使用してください。

    サンプルコマンド:

    unicorn -w 4 -b 0.0.0.0:8000 app:app

    新しいコマンド:

    gunicorn -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 app:app
  • gevent コルーチンを使用する場合は、環境変数 GEVENT_ENABLE=true を設定します。

    例:

    from gevent import monkey
    monkey.patch_all()

    次のコマンドを実行して環境変数を設定します。

    GEVENT_ENABLE=true

ステップ 1: ARMS エージェント (ack-onepilot) をインストールする

  1. ACK コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。[クラスタ] ページで、クラスタの名前をクリックしてクラスタの詳細ページに移動します。

  2. 左側のナビゲーションペインで、操作 > アドオン を選択します。アドオン ページの右上隅に ack-onepilot と入力します。

    重要

    ack-onepilot のバージョンが 3.2.4 以降であることを確認してください。

  3. ack-onepilot カードの インストール をクリックします。

    説明

    デフォルトでは、ack-onepilot コンポーネントは 1,000 ポッドをサポートしています。クラスタ内のポッドが 1,000 ポッド増えるごとに、コンポーネントに 0.5 CPU コアと 512 MB のメモリを追加する必要があります。

  4. 表示されたダイアログボックスで、パラメータを設定し、OK をクリックします。デフォルト値を使用することをお勧めします。

    説明

    ack-onepilot をインストールした後、アドオン ページでアップグレード、設定、またはアンインストールできます。

ステップ 2: Dockerfile を変更する

  1. PyPI から aliyun-bootstrap をダウンロードします。

    pip3 install aliyun-bootstrap
  2. aliyun-bootstrap を使用して ARMS エージェントをインストールします。

    aliyun-bootstrap -a install
  3. ARMS エージェントを使用してアプリケーションを起動します。

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

Dockerfile のサンプル:

    変更前の 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
    # ACK クラスタのポート 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
    ######################### Python 用 ARMS エージェントをインストールします ###############################
    RUN pip3 install aliyun-bootstrap && aliyun-bootstrap -a install
    ##########################################################
    
    COPY ./app.py /app/app.py
    
    
    # ACK クラスタのポート 8000 を公開します。
    EXPOSE 8000
    #########################################################
    CMD ["aliyun-instrument","python","app.py"]

ステップ 3: ARMS リソースへのアクセス許可を付与する

  • サーバーレス Kubernetes (ASK) クラスタ内のアプリケーション、または Elastic Container Instance (ECI) に接続された Kubernetes クラスタ内のアプリケーションを監視するには、まず クラウド リソースアクセス認証 ページで、クラスタに ARMS へのアクセスを許可する必要があります。次に、ack-onepilot コンポーネントがデプロイされているすべてのポッドを再起動します。

  • ARMS Addon Token がない ACK クラスタにデプロイされたアプリケーションを監視するには、次の操作を実行して、ACK クラスタに ARMS へのアクセスを許可します。ARMS Addon Token が存在する場合は、ステップ 4 に進んでください。

    クラスタに ARMS Addon Token が存在するかどうかを確認する

    1. ACK コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。クラスタ ページで、クラスタの名前をクリックしてクラスタの詳細ページに移動します。

    2. 左側のナビゲーションペインで、構成 > シークレット を選択します。ページの上部にある 名前空間 ドロップダウンリストから kube-system を選択し、シークレット ページに addon.arms.token が表示されているかどうかを確認します。

    説明

    クラスタに ARMS Addon Token がある場合、ARMS はクラスタでパスワードなしの認証を実行します。一部の ACK マネージドクラスタには、ARMS Addon Token が存在しない場合があります。ARMS を使用してクラスタ内のアプリケーションを監視する前に、ACK マネージドクラスタに ARMS Addon Token があるかどうかを確認することをお勧めします。クラスタに ARMS Addon Token がない場合は、手動でクラスタに ARMS へのアクセスを許可する必要があります。

    アクセス許可ポリシーを手動で追加する

    1. ACK コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。クラスタ ページで、クラスタの名前をクリックします。

    2. クラスタ情報 ページの 基本情報 タブで、クラスタリソース セクションの ワーカー RAM ロール の横にあるリンクをクリックします。

    3. 表示されたページの アクセス許可 タブで、アクセス許可の付与 をクリックします。

    4. アクセス許可の付与 パネルで、次のポリシーを追加し、アクセス許可の付与 をクリックします。

      • AliyunTracingAnalysisFullAccess: Managed Service for OpenTelemetry へのフルアクセス。

      • AliyunARMSFullAccess: ARMS へのフルアクセス。

  • ACK 専用クラスタまたは登録済みクラスタにデプロイされたアプリケーションを監視するには、Alibaba Cloud アカウントに AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess アクセス許可が付与されていることを確認してください。RAM ユーザーにアクセス許可を付与する方法の詳細については、RAM ユーザーにアクセス許可を付与する を参照してください。

    ARMS エージェントをインストールした後、ARMS エージェントの構成ファイルに Alibaba Cloud アカウントの AccessKey ID と AccessKey シークレットを入力する必要があります。

    1. 左側のナビゲーションペインで、アプリケーション > Helm を選択します。次に、ack-onepilot の横にある 更新 をクリックします。

    2. accessKeyaccessKeySecret を Alibaba Cloud アカウントの AccessKey ID と AccessKey シークレットに置き換え、OK をクリックします。

      説明

      AccessKey ペアを取得する方法の詳細については、AccessKey ペアを作成する を参照してください。

      image

    3. デプロイメントを再起動します。

(オプション) ステップ 4: アプリケーションのアプリケーション監視を有効にする

  1. ACK コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。クラスタ ページで、管理するクラスタを見つけ、アクション 列の アプリケーション をクリックします。

  2. デプロイメント ページで、アプリケーションを見つけ、詳細 > YAML で表示アクション 列の を選択します。

    新しいアプリケーションを作成するには、YAML から作成 をクリックします。

  3. 次のlabels を spec.template.metadata パラメーターに追加します。

    labels:
      aliyun.com/app-language: python # 必須。アプリケーションが Python 言語を使用することを指定します。
      armsPilotAutoEnable: 'on'
      armsPilotCreateAppName: "<your-deployment-name>"    # ARMS に表示されるデプロイメントの表示名を指定します。

    image

    次の 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
    
    ---
    
    # 省略
    
    

結果の確認

約 1 分後、ARMS コンソール にログインします。左側のナビゲーションペインで、アプリケーション監視 > アプリケーションリスト を選択します。アプリケーションが アプリケーションリスト ページに表示されている場合、アプリケーションは監視されています。

2024-09-23_17-45-22