Container Service for Kubernetes (ACK) にデプロイされた Python アプリケーションを監視するには、Application Real-Time Monitoring Service (ARMS) エージェント (ack-onepilot) をインストールし、Dockerfile を変更します。その後、アプリケーショントポロジ、インターフェースコール、トレース分析など、アプリケーションの監視データを表示できます。このトピックでは、ACK にデプロイされた Python アプリケーションに ARMS エージェント (ack-onepilot) をインストールする方法について説明します。
ARMS エージェントの使用中に質問がある場合は、DingTalk グループチャット (ID: 35568145) に参加してテクニカルサポートを受けてください。
前提条件
ACK クラスタが作成されていること。ビジネス要件に基づいて、ACK 専用クラスタ、ACK マネージドクラスタ、または ACK Serverless クラスタ を作成できます。
クラスタに名前空間が作成されていること。詳細については、名前空間とリソースクォータの管理 を参照してください。この例で使用される名前空間は arms-demo です。
Python とフレームワークのバージョンがサポートされていること。詳細については、Python 用 ARMS エージェントの互換性要件 を参照してください。
使用上の注意
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) をインストールする
ACK コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。[クラスタ] ページで、クラスタの名前をクリックしてクラスタの詳細ページに移動します。
左側のナビゲーションペインで、
を選択します。アドオン ページの右上隅に ack-onepilot と入力します。重要ack-onepilot のバージョンが 3.2.4 以降であることを確認してください。
ack-onepilot カードの インストール をクリックします。
説明デフォルトでは、ack-onepilot コンポーネントは 1,000 ポッドをサポートしています。クラスタ内のポッドが 1,000 ポッド増えるごとに、コンポーネントに 0.5 CPU コアと 512 MB のメモリを追加する必要があります。
表示されたダイアログボックスで、パラメータを設定し、OK をクリックします。デフォルト値を使用することをお勧めします。
説明ack-onepilot をインストールした後、アドオン ページでアップグレード、設定、またはアンインストールできます。
ステップ 2: Dockerfile を変更する
PyPI から aliyun-bootstrap をダウンロードします。
pip3 install aliyun-bootstrap
aliyun-bootstrap を使用して ARMS エージェントをインストールします。
aliyun-bootstrap -a install
ARMS エージェントを使用してアプリケーションを起動します。
aliyun-instrument python app.py
イメージをビルドします。
Dockerfile のサンプル:
ステップ 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 がある場合、ARMS はクラスタでパスワードなしの認証を実行します。一部の ACK マネージドクラスタには、ARMS Addon Token が存在しない場合があります。ARMS を使用してクラスタ内のアプリケーションを監視する前に、ACK マネージドクラスタに ARMS Addon Token があるかどうかを確認することをお勧めします。クラスタに ARMS Addon Token がない場合は、手動でクラスタに ARMS へのアクセスを許可する必要があります。
ACK 専用クラスタまたは登録済みクラスタにデプロイされたアプリケーションを監視するには、Alibaba Cloud アカウントに AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess アクセス許可が付与されていることを確認してください。RAM ユーザーにアクセス許可を付与する方法の詳細については、RAM ユーザーにアクセス許可を付与する を参照してください。
ARMS エージェントをインストールした後、ARMS エージェントの構成ファイルに Alibaba Cloud アカウントの AccessKey ID と AccessKey シークレットを入力する必要があります。
左側のナビゲーションペインで、
を選択します。次に、ack-onepilot の横にある 更新 をクリックします。accessKey
とaccessKeySecret
を Alibaba Cloud アカウントの AccessKey ID と AccessKey シークレットに置き換え、OK をクリックします。説明AccessKey ペアを取得する方法の詳細については、AccessKey ペアを作成する を参照してください。
デプロイメントを再起動します。
(オプション) ステップ 4: アプリケーションのアプリケーション監視を有効にする
ACK コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。クラスタ ページで、管理するクラスタを見つけ、アクション 列の アプリケーション をクリックします。
デプロイメント ページで、アプリケーションを見つけ、
アクション 列の を選択します。新しいアプリケーションを作成するには、YAML から作成 をクリックします。
次の
labels
を spec.template.metadata パラメーターに追加します。labels: aliyun.com/app-language: python # 必須。アプリケーションが Python 言語を使用することを指定します。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "<your-deployment-name>" # ARMS に表示されるデプロイメントの表示名を指定します。
次の YAML テンプレートは、デプロイメントを作成し、アプリケーションのアプリケーション監視を有効にする方法を示しています。
結果の確認
約 1 分後、ARMS コンソール にログインします。左側のナビゲーションペインで、 を選択します。アプリケーションが アプリケーションリスト ページに表示されている場合、アプリケーションは監視されています。