Container Service for Kubernetes (ACK) または Container Compute Service (ACS) にデプロイされた Go アプリケーションをモニタリングするには、Application Real-Time Monitoring Service (ARMS) の ack-onepilot コンポーネントをインストールし、Go バイナリファイルをコンパイルする必要があります。 その後、ARMS で、アプリケーションのトポロジ、API コール、データベース分析などのモニタリングデータを表示できます。 このトピックでは、Container Service for Kubernetes (ACK) または Container Compute Service (ACS) にデプロイされたアプリケーションに Go エージェントをインストールする方法について説明します。
ACK と ACS のインストール手順は同じです。本トピックでは ACK を例として使用します。
Go エージェントについてご質問がある場合は、DingTalk の Q&A グループ (ID: 159215000379) までお問い合わせください。
前提条件
ACK または ACS クラスター:
名前空間は必須です。詳細については、「名前空間とクォータの管理」をご参照ください。このトピックでは、[default] 名前空間を使用します。
ビルド環境のオペレーティングシステム、アーキテクチャ、Go バージョン、フレームワークバージョンを確認してください。詳細については、「ARMS アプリケーション監視でサポートされている Go コンポーネントとフレームワーク」をご参照ください。
ステップ 1:ARMS リソースへのアクセス権限の付与
ACK マネージドクラスター
ACK マネージドクラスターに ARMS アドオン トークンが存在しない場合、クラスターに ARMS リソースへのアクセス権限を手動で付与する必要があります。
クラスターに ARMS Addon トークンがある場合、ARMS はクラスターに対してパスワードなしの権限付与を実行します。一部の ACK マネージドクラスターには ARMS Addon トークンが存在しない場合があります。ARMS を使用してクラスター内のアプリケーションをモニターする前に、ACK マネージドクラスターに ARMS Addon トークンがあるかどうかを確認することを推奨します。クラスターに ARMS Addon トークンがない場合は、クラスターに ARMS へのアクセスを承認する必要があります。
ACK 専用クラスターと登録クラスター
ACK 専用クラスターおよびACK One 登録済みクラスター内のアプリケーションをモニタリングするには、Alibaba Cloud アカウントに AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess 権限が必要です。権限の付与方法の詳細については、「RAM ユーザーに権限を付与する」をご参照ください。
ack-onepilot コンポーネントをインストールした後、ARMS 権限を持つ Alibaba Cloud アカウントの AccessKey ペア (AccessKey ID と AccessKey シークレット) を提供する必要があります。
方法 1: Helm で AccessKey ペアを指定する
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスターリスト ページで、目的のクラスターの名前をクリックします。 左側のナビゲーションペインで、 を選択します。 ack-onepilot コンポーネントを見つけ、[操作] 列の [更新] をクリックします。
accessKeyとaccessKeySecretをご自身の AccessKey ID と AccessKey シークレットに置き換え、[OK] をクリックします。説明AccessKey ペアの取得方法については、「AccessKey ペアを作成する」をご参照ください。
[リリース更新] ページの YAML 設定エディターで、controller セクションの下にある
accessKeyフィールドとaccessKeySecretフィールドを探します。アプリケーションの Deployment を再起動します。
方法 2: シークレットから AccessKey ペアを参照する
コンテナサービス for Kubernetes (ACK) コンソールにログインします。左側のナビゲーションペインで、クラスターリスト をクリックします。
クラスターリスト ページで目的のクラスターの名前をクリックし、左側のナビゲーションペインで を選択します。
ack-onepilot名前空間を選択し、シークレットを作成して AccessKey ペア情報を追加します。説明AccessKey ペアの取得方法については、「AccessKey ペアの作成」をご参照ください。
[Name] を
ack-onepilot-akskに、[Type] を [Opaque] に設定し、データテーブルでキーとしてakとskを、値として対応する AccessKey ID と AccessKey シークレットを追加してから、[OK] をクリックします。左側のナビゲーションペインで、 を選択します。
ack-onepilot名前空間にある、通常ack-onepilot-ack-onepilotという名前のack-onepilotコンポーネントをクリックします。ack-onepilot-ack-onepilot ページの右上隅にある[編集]をクリックします。 次に、[環境変数] セクションで
ONE_PILOT_ACCESSKEYとONE_PILOT_ACCESSKEY_SECRETを追加し、シークレットを参照して値を設定し、[OK] をクリックします。両方の変数の参照シークレットを ack-onepilot-aksk に設定します。
ONE_PILOT_ACCESSKEYのキーを ak に、ONE_PILOT_ACCESSKEY_SECRETのキーを sk に設定します。
ACK Serverless クラスター (ASK) および ECI 統合クラスター
[リソースアクセス承認] ページで承認を完了し、次に ack-onepilot コンポーネントのすべてのポッドを再起動します。
ステップ 2:ack-onepilot コンポーネントのインストール
ACK コンソールにログインします。[クラスター] ページで、クラスターの名前をクリックします。
左側のナビゲーションペインで、コンポーネントの管理 をクリックし、ack-onepilot を検索します。
重要ack-onepilot のバージョンが 3.2.0 以降であることを確認してください。
[ack-onepilot] カードの [インストール] をクリックします。
説明デフォルトでは、ack-onepilot コンポーネントは 1,000 個の Pod をサポートします。クラスター内で Pod が 1,000 個追加されるごとに、コンポーネントに 0.5 CPU コアと 512 MB のメモリを追加する必要があります。
表示されるダイアログボックスで、パラメーターを設定し、[OK] をクリックします。デフォルト値を使用することを推奨します。
説明ack-onepilot をインストールした後、[アドオン] ページでアップグレード、設定、またはアンインストールできます。
ステップ 3:Go アプリケーションイメージのコンパイル
(任意) プロジェクトに vendor ディレクトリが含まれている場合は、
go buildの後に-mod=vendorを追加します。wgetコマンドを使用して instgo コンパイルツールをダウンロードし、お使いのコンパイル環境とコンパイルマシンのリージョンに対応するダウンロードアドレスを選択してください。instgoはコンパイル中に自動的に更新されることに注意してください。ビルドユーザーが書き込み権限を持つディレクトリにinstgoを保存してください。説明Instgo は、ARMS が Go アプリケーション用に提供するビルドツールです。instgo を使用して Go プロジェクトをコンパイルすると、ARMS で Go アプリケーションをモニタリングできます。
ビルドツールはすべてのリージョンで同じです。パブリックネットワークから OSS URL にアクセスできる場合は、オペレーティングシステムとアーキテクチャに一致する中国 (杭州) リージョンのパブリックエンドポイントからツールをダウンロードできます。
ビルドツールに実行権限を付与します。
Linux と Mac
# 実行権限を付与します chmod +x instgoWindows
Windows では、実行権限を付与する必要はありません。
(任意) UID をビルドパラメータとして設定します。
重要この手順をスキップすると、
instgoはデフォルトで最新バージョンの ARMS エージェントをインストールします。setコマンドを使用して、UID またはライセンスキーをビルドパラメータとして設定します。instgo set --uid={YourAliyunUid} // instgo 1.4.5 以降のバージョンが必要です。uid は、プライマリ Alibaba Cloud アカウントの UID です。元のビルドコマンドの前に
instgoを追加します。instgo go build {arg1} {arg2} {arg3}この方法は、
go installを使用する場合にも適用されます。前の手順で生成されたバイナリファイルを使用してイメージをビルドします。
ステップ 4:Go アプリケーションに対する ARMS 監視の有効化
次の YAML テンプレートは、ステートレス (Deployment) アプリケーションを作成し、ARMS アプリケーション監視を有効にする方法の完全な例を示しています:
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスターリスト ページの上部で、対象のクラスターが配置されているリソースグループとリージョンを選択し、対象のクラスターの名前をクリックします。左側のナビゲーションペインで ワークロード をクリックし、ステータスなし、StatefulSets、または Daemon Sets を選択します。
対象のアプリケーションを探し、「操作」列でを選択します。
新しいアプリケーションを作成するには、YAML のリソースの作成 をクリックします。
YAML ファイルで、spec.template.metadata 階層に次の
labelsを追加します。labels: aliyun.com/app-language: golang # Go アプリケーションに必須。Go アプリケーションであることを示します。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "<YOUR-DEPLOYMENT-NAME>" # <YOUR-DEPLOYMENT-NAME> をアプリケーション名に置き換えます。更新 をクリックします。
結果
約 1 分後、お客様の Go アプリケーションが ARMS コンソールの ページに表示され、データを報告している場合、エージェントは接続されています。
> YAML の編集