Container Service for Kubernetes (ACK) または Container Compute Service (ACS) にデプロイされた Go アプリケーションをモニターするには、ack-onepilot コンポーネントをインストールし、Go バイナリファイルをコンパイルする必要があります。その後、Application Real-Time Monitoring Service (ARMS) コンソールで、アプリケーションのトポロジー、インターフェイスの呼び出し、データベース分析などのモニタリングデータを表示できます。このトピックでは、Container Service for Kubernetes (ACK) または Container Compute Service (ACS) で Go アプリケーションのエージェントをインストールする方法について説明します。
Go エージェントの使用についてご質問がある場合は、DingTalk グループ (ID: 159215000379) を通じてお問い合わせください。
前提条件
ACK または ACS クラスターが作成されていること。
ACK クラスター: ビジネス要件に基づいて、ACK マネージドクラスター、ACK 専用クラスター、Serverless Kubernetes クラスター、または登録済みクラスターを作成できます。
ACS クラスター: ACS クラスターの作成方法の詳細については、「ACS クラスターの作成」をご参照ください。
名前空間を作成します。このトピックでは、名前空間名として default を使用します。詳細については、「名前空間とクォータの管理」をご参照ください。
コンパイル時のオペレーティングシステム、アーキテクチャ、Go のバージョン、およびフレームワークのバージョンを確認します。詳細については、「アプリケーション監視でサポートされている Go コンポーネントとフレームワーク」をご参照ください。
ステップ 1: ARMS リソースへのアクセス権限を付与する
ACK マネージドクラスター
ACK マネージドクラスターに ARMS Addon Token が存在しない場合は、クラスターに ARMS リソースへのアクセス権限を手動で付与する必要があります。トークンが存在する場合は、ステップ 4 に進むことができます。
クラスターに ARMS Addon Token がある場合、ARMS はクラスターに対してパスワードなしの権限付与を実行します。一部の ACK マネージドクラスターには ARMS Addon Token が存在しない場合があります。クラスター内のアプリケーションを ARMS でモニターする前に、ACK マネージドクラスターに ARMS Addon Token があるかどうかを確認することをお勧めします。クラスターに ARMS Addon Token がない場合は、クラスターに ARMS へのアクセスを承認する必要があります。
ACK 専用クラスター/登録済みクラスター
ACK 専用クラスターまたは登録済みクラスターにデプロイされたアプリケーションをモニターするには、AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess 権限が Resouce Access Management (RAM) ユーザーに付与されていることを確認してください。
ack-onepilot コンポーネントをインストールした後、ack-onepilot の設定ファイルにアカウントの AccessKey ID と AccessKey Secret を入力します。
方法 1: Helm で入力する
ACK コンソールにログインします。左のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターをクリックします。表示されたページの左側のナビゲーションウィンドウで、 を選択します。次に、ack-onepilot の横にある [更新] をクリックします。
accessKeyとaccessKeySecretをアカウントの AccessKey ID と AccessKey Secret で置き換え、[OK] をクリックします。説明AccessKey Secret は、Alibaba Cloud AccessKey ペアの初回作成時にのみ表示され、その後は取得できません。この設計により、漏洩リスクが軽減されます。Secret はすぐに安全に保管してください。

Deployment を再起動します。
方法 2: Kubernetes Secret を介してインポートする
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターをクリックします。表示されたページの左側のナビゲーションウィンドウで、 を選択します。
[作成] をクリックします。表示されたパネルで [追加] をクリックし、ack-onepilot の AccessKey ID と AccessKey Secret を追加します。
説明AccessKey Secret は、Alibaba Cloud AccessKey ペアの初回作成時にのみ表示され、その後は取得できません。この設計により、漏洩リスクが軽減されます。Secret はすぐに安全に保管してください。

左側のナビゲーションウィンドウで、 を選択します。表示されたページで、ack-onepilot コンポーネントをクリックします。通常、ack-onepilot 名前空間では ack-onepilot-ack-onepilot という名前です。
表示されたページの右上隅で、[編集] をクリックします。
下にスクロールして [環境] セクションを表示します。[追加] をクリックし、環境変数
ONE_PILOT_ACCESSKEYおよびONE_PILOT_ACCESSKEY_SECRETを追加し、Kubernetes Secret の Secret を参照して、[OK] をクリックします。
ASK/ECI クラスター
Serverless Kubernetes (ASK) クラスター内のアプリケーション、または Elastic Container Instance に接続された Kubernetes クラスター内のアプリケーションをモニターするには、まず クラウドリソースアクセス承認ページでクラスターに ARMS へのアクセスを承認する必要があります。次に、ack-onepilot コンポーネントがデプロイされているすべての Pod を再起動します。
ステップ 2: ARMS エージェントヘルパー (ack-onepilot) をインストールする
ACK コンソールにログインします。 [クラスター] ページで、クラスターの名前をクリックします。
左側のナビゲーションウィンドウで、[コンポーネント管理] をクリックします。次に、ack-onepilot を検索します。
重要ack-onepilot のバージョンが 3.2.0 以降であることを確認してください。
ack-onepilot カードの [インストール] をクリックします。
説明デフォルトでは、ack-onepilot コンポーネントは 1,000 個の Pod をサポートします。クラスターに追加される 1,000 個の Pod ごとに、コンポーネントに 0.5 CPU コアと 512 MB のメモリを追加する必要があります。
表示されるダイアログボックスで、パラメーターを設定し、[OK] をクリックします。デフォルト値を使用することをお勧めします。
説明ack-onepilot をインストールした後、[アドオン] ページでアップグレード、設定、またはアンインストールできます。
ステップ 3: Golang アプリケーションイメージをコンパイルする
(オプション) プロジェクトがコンパイルに vendor モードを使用している場合、またはコンパイル時パラメーターに
-mod=vendorが含まれている場合は、以下を確認してください。go.mod ファイルに `google.golang.org/protobuf` 依存関係が直接または間接的に含まれているかどうかを確認します。含まれていない場合は、次の手順を参照してください。
コンパイル時パラメーターに
-mod=vendorが含まれているかどうかを確認します。含まれていない場合は、go buildの後に-mod=vendorを追加します。
wgetコマンドを使用して、コンパイル時ツール instgo をダウンロードします。コンパイル時の環境とマシンのリージョンに基づいてダウンロードアドレスを選択します。instgo はコンパイル時に自動的に更新されることに注意してください。instgo は変更権限のあるフォルダに保存してください。
説明Instgo は、ARMS が Go アプリケーション用に提供するコンパイル時ツールです。instgo で Go プロジェクトをコンパイルすると、ARMS でアプリケーションをモニターできます。
コンパイル時ツールはすべてのリージョンで同じです。お使いの環境がインターネット経由で Object Storage Service (OSS) にアクセスできる場合は、お使いのオペレーティングシステムとアーキテクチャに合わせて中国 (杭州) のインターネットダウンロードアドレスを使用できます。
コンパイル時ツールに実行権限を付与します。
Linux/Mac
# 実行権限を付与 chmod +x instgoWindows
Windows では実行権限は必要ありません。
LicenseKey を取得し、コンパイル時パラメーターを設定します。
重要このステップをスキップすると、instgo は dev モードに入り、デフォルトで最新バージョンの ARMS エージェントをインストールします。アプリケーションを本番環境にデプロイするには、次のパラメーターを設定する必要があります。
DescribeTraceLicenseKey OpenAPI 操作を呼び出して LicenseKey を取得します。
DescribeTraceLicenseKey ページで、[デバッグ] をクリックします。リージョンを選択し、[呼び出し開始] をクリックして LicenseKey を取得します。

LicenseKey を取得したら、
setコマンドを使用してコンパイル時パラメーターを設定します。instgo set --licenseKey=${YourLicenseKey}
元のコンパイルコマンドの前に `instgo` をプレフィックスとして追加し、コマンドを実行します。
instgo go build {arg1} {arg2} {arg3}`go install` を使用してプロジェクトをコンパイルする場合も、コマンドの前に `instgo` をプレフィックスとして追加できます。
前のステップでコンパイルしたバイナリファイルを使用してイメージをビルドします。
ステップ 4: Go アプリケーションのアプリケーション監視を有効にする
次の YAML テンプレートは、ステートレス (Deployment) アプリケーションを作成し、そのアプリケーション監視を有効にする方法を示しています。
ACK コンソールにログインします。左のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページの上部で、ターゲットクラスターが配置されているリージョンとリソースグループを選択し、ターゲットクラスターの名前をクリックします。左側のナビゲーションウィンドウで、[ワークロード] をクリックします。次に、[Deployment]、[StatefulSet]、または [DaemonSet] を選択します。
ターゲットアプリケーションを見つけ、 を選択します。
新しいアプリケーションを作成するには、[YAML から作成] をクリックします。
YAML ファイルの spec.template.metadata の下に次の
labelsを追加します。labels: aliyun.com/app-language: golang # Go アプリケーションに必須。これが Go アプリケーションであることを指定します。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "<your-deployment-name>" # <your-deployment-name> をアプリケーション名に置き換えます。
[更新] をクリックします。
実行結果
約 1 分後、ARMS コンソールの ページに Go アプリケーションが表示され、データがレポートされているかどうかを確認します。表示されている場合、エージェントは正常にインストールされています。

> [YAML の編集]