Application Real-Time Monitoring Service (ARMS) のアプリケーション監視サブサービスを使用して、Kubernetes クラスターにデプロイされている Go アプリケーションを監視できます。ARMS では、トポロジ、API リクエスト、異常トランザクション、低速トランザクション、SQL 分析など、さまざまなパフォーマンスメトリクスに基づいてアプリケーションを監視できます。このトピックでは、Kubernetes クラスターに Go 用 ARMS エージェントを自動的にインストールする方法について説明します。
このトピックは、Alibaba Cloud Container Service for Kubernetes (ACK) クラスターには適用されません。ACK クラスターに Go 用 ARMS エージェントをインストールする方法については、ACK への ARMS エージェントの自動インストールを参照してください。
前提条件
Kubernetes クラスターの kube-apiserver のバージョンが 1.10 以降であること。
クラスターがインターネット経由でアクセス可能であるか、Cloud Enterprise Network (CEN) インスタンスを使用して Alibaba Cloud 仮想プライベートクラウド (VPC) とクラスター間にネットワーク接続が確立されていること。
アプリケーションで Go 1.18 以降を使用していること。
手順 1: Go バイナリファイルをコンパイルする
wget
コマンドを実行して、環境とマシンが存在するリージョンに基づいてコンパイルツールをダウンロードします。説明インターネット経由で Object Storage Service (OSS) にアクセスできる場合は、中国 (杭州) リージョンのオペレーティングシステムとアーキテクチャのパブリックエンドポイントを直接使用して、コンパイルツールを取得できます。
コンパイルツールに、関連操作を実行するために必要な権限を付与します。
Linux/Darwin
# 権限を付与します。 chmod +x instgo
Windows
Windows では、権限を付与する必要はありません。
(オプション) ライセンスキーを取得し、コンパイルパラメータを設定します。
重要この手順をスキップすると、instgo は開発モードに入り、デフォルトで最新バージョンの ARMS エージェントをインストールします。本番環境にエージェントをデプロイするには、DescribeTraceLicenseKey パラメータを設定することをお勧めします。
操作を呼び出してライセンスキーを取得できます。詳細については、DescribeTraceLicenseKey を参照してください。
ライセンスキーを取得したら、
set
コマンドを実行してコンパイルパラメータを設定します。instgo set --licenseKey=${YourLicenseKey} --regionId=${YourRegionId} --dev=false
既存のコンパイルコマンドにプレフィックスとして instgo を追加し、次のコマンドを実行します。
instgo go build {arg1} {arg2} {arg3}
前の手順でコンパイルしたバイナリファイルを使用して、イメージをビルドします。
参照
次の表に、一般的な Instgo コマンドを示します。
コマンド
フラグ
パラメータタイプ
説明
必須
build
(コンパイル)--licenseKey, -l
文字列
ライセンスキー。
はい (開発モードを除く)
--dev
-
開発モードとして開発モードを指定します。このモードでは、ライセンスキーを指定せずにデータをコンパイルして機能をテストできます。
重要一部の機能は制限されています。運用環境では開発モードを使用しないでください。
いいえ
--agentVersion
文字列
ARMS エージェントのバージョンを指定します。
いいえ
--agentPath
文字列
ARMS エージェントのローカルパスを指定します。
いいえ
--cacheDir
文字列
ARMS エージェントのキャッシュディレクトリを指定します。
いいえ
--regionId, -r
文字列
ARMS エージェントの依存関係をダウンロードするリージョンの ID。デフォルト値: cn-hangzhou。
いいえ
--timeout, -t
整数
ARMS エージェントの依存関係をダウンロードするためのタイムアウト期間。単位:秒。デフォルト値:180。
いいえ
--verbose, -v
-
詳細なコンパイルログを出力するかどうかを指定します。
いいえ
--vpc
-
仮想プライベートクラウド (VPC) 経由で ARMS エージェントの依存関係をダウンロードするかどうかを指定します。
いいえ
clean
(クリーンアップ)
-
-
-
-
update
(更新)--licenseKey, -l
文字列
ライセンスキー。
はい
--cacheDir
文字列
ARMS エージェントのキャッシュディレクトリを指定します。
いいえ
--regionId, -r
文字列
ARMS エージェントの依存関係をダウンロードするリージョンの ID。デフォルト値: cn-hangzhou。
いいえ
--timeout, -t
整数
ARMS エージェントの依存関係をダウンロードするためのタイムアウト期間。単位:秒。デフォルト値:180。
いいえ
--vpc
ARMS エージェントの依存関係を VPC 経由でダウンロードするかどうかを指定します。
いいえ
version
(バージョン)
-
-
-
-
アプリケーションを初めてコンパイルすると、ARMS エージェントはデフォルトで
/opt
ディレクトリ (Windows ではC:\ProgramData
) にダウンロードされます。ディレクトリに対する権限がない場合は、--cacheDir
フラグを使用してキャッシュディレクトリを指定するか、sudo -E
コマンドを実行してエージェントをコンパイルできます。Windows では、管理者としてコマンドを実行してアプリケーションをコンパイルします。コンパイルが強制的に停止または強制終了された場合、残留物が発生する可能性があります。残留物をクリーンアップする方法については、Go 用 ARMS エージェントのアンインストールを参照してください。
手順 2: Helm V3 をインストールする
手順 3: Go 用 ARMS エージェントをインストールする
アプリケーション監視を使用して、次のタイプのアプリケーションを監視できます。Deployment および StatefulSet。このセクションでは、Deployment を例として使用します。
次の
wget
コマンドを実行して、Go 用 ARMS エージェント (ack-onepilot) のインストールパッケージをダウンロードします。wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-onepilot-3.2.2.tgz'
次のコマンドを実行して、インストールパッケージを解凍します。
tar xvf ack-onepilot-3.2.2.tgz
インストールパッケージ内の values.yaml ファイルを編集します。ビジネス要件に基づいて次のパラメータを変更し、ファイルを保存します。
registry: registry-__ACK_REGION_ID__.ack.aliyuncs.com/acs/ cluster_id: __ACK_CLUSTER_ID__ accessKey: __ACCESSKEY__ accessKeySecret: __ACCESSKEY_SECRET__ uid: "__ACK_UID__" region_id: __ACK_REGION_ID__
registry
: ack-onepilot のイメージアドレス。cluster_id
: Kubernetes クラスターの一意の ID。<uid>-<clusterid>
形式でこのパラメータを指定することをお勧めします。accessKey
およびaccessKeySecret
: Alibaba Cloud アカウントの AccessKey ID と AccessKey シークレット。AccessKey ペアの取得方法については、AccessKey ペアの作成を参照してください。重要AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess ポリシーが Alibaba Cloud アカウントにアタッチされていることを確認する必要があります。
uid
: Alibaba Cloud アカウントの ID。Alibaba Cloud アカウントの ID を取得するには、Alibaba Cloud 管理コンソールの右上隅にあるプロフィール画像にポインターを移動します。region_id
: リージョン ID。アプリケーション監視でサポートされているリージョンの詳細については、サポートされているリージョンを参照してください。
ack-onepilot をインストールします。
インストールパッケージを開かずに、次のコマンドを実行します。
helm3 upgrade --install ack-onepilot ack-onepilot --namespace ack-onepilot --create-namespace
手順 4: アプリケーションの YAML ファイルを変更する
次のコマンドを実行して、Deployment の YAML ファイルを表示します。
kubectl get deployment {Deployment 名} -o yaml
説明Deployment 名がわからない場合は、次のコマンドを実行してすべての Deployment を表示します。結果に Deployment があります。次に、アプリケーションの YAML ファイルを表示します。
kubectl get deployments --all-namespace
次のコマンドを実行して、Deployment の YAML ファイルを開きます。
kubectl edit deployment {Deployment 名} -o yaml
YAML ファイルで、
spec.template.metadata
ディレクトリに移動し、次のコンテンツを追加します。labels: aliyun.com/app-language: "golang" # 値は、アプリケーションが Go 言語を使用していることを示します。 armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" # <your-deployment-name> を Deployment 名に置き換えます。
次の例は、Kubernetes クラスターで Deployment を作成および監視するための完全な YAML ファイルを示しています。
結果を確認する
約 1 分後、ARMS コンソールにログインします。左側のナビゲーションペインで、 を選択します。アプリケーションが [アプリケーションリスト] ページに表示されている場合、アプリケーションは監視されています。