ARMS Application Monitoring を使用すると、汎用 Kubernetes 環境で Go アプリケーションをモニタリングできます。これには、アプリケーショントポロジー、API 呼び出し、異常トランザクション、低速トランザクション、SQL 分析などが含まれます。このトピックでは、汎用 Kubernetes 環境のアプリケーションを ARMS Application Monitoring に接続する方法について説明します。
このトピックは、ご利用の Kubernetes クラスターが Container Service for Kubernetes (ACK) によって管理されている場合には適用されません。ACK クラスターについては、「ack-onepilot コンポーネントを使用した ACK および Container Compute Service (ACS) クラスターへの Go プローブのインストール」をご参照ください。
前提条件
-
ご利用の Kubernetes クラスターの kube-apiserver のバージョンが 1.10 以降であることを確認してください。
-
ご利用の Kubernetes クラスターが Alibaba Cloud にデプロイされていない場合は、クラスターがインターネットにアクセスできることを確認するか、Cloud Enterprise Network (CEN) または他のメソッドを使用して Alibaba Cloud VPC をクラスターに接続してください。
-
ご利用の Go アプリケーションのバージョンが 1.18 以降であることを確認してください。
ステップ 1: 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` を追加できます。
前のステップでコンパイルしたバイナリファイルを使用してイメージをビルドします。
ステップ 2: Helm 3 のインストール
ステップ 3: プローブのインストール
ARMS Application Monitoring は、ステートレス (Deployment) とステートフル (StatefulSet) の 2 種類のアプリケーションのみをサポートします。接続方法は両方のアプリケーションタイプで同じです。このセクションでは、Kubernetes 環境のステートレス (Deployment) アプリケーションを例として使用します。
-
次の
wgetコマンドを実行して、ack-onepilot インストールパッケージをダウンロードします。wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-onepilot-5.1.1.tgz' -
次のコマンドを実行して、ack-onepilot インストールパッケージを解凍します。
tar xvf ack-onepilot-5.1.1.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 Secret。手順については、「AccessKey の作成」をご参照ください。重要ご利用の Alibaba Cloud アカウント (ルートアカウント) に AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess 権限があることを確認してください。
-
uid: ご利用の Alibaba Cloud アカウント (ルートアカウント) の ID。UID は、Alibaba Cloud 管理コンソールの右上隅にあるプロフィール画像にカーソルを合わせると確認できます。 -
region_id: Alibaba Cloud リージョンの ID。サポートされているリージョンの詳細については、「利用可能なリージョン」をご参照ください。
-
-
次のコマンドを実行して ack-onepilot をインストールします。
このコマンドは ack-onepilot インストールパッケージディレクトリの外から実行してください。
helm3 upgrade --install ack-onepilot ack-onepilot --namespace ack-onepilot --create-namespace
ステップ 4: アプリケーションの YAML ファイルの変更
-
次のコマンドを実行して、対象のステートレス (Deployment) アプリケーションの YAML ファイルを表示します。
kubectl get deployment {deployment-name} -o yaml説明{deployment-name}が不明な場合は、次のコマンドを実行してすべてのデプロイメントをリスト表示できます。その後、出力から対象のステートレス (Deployment) アプリケーションを見つけ、その YAML ファイルを表示します。kubectl get deployments --all-namespaces -
対象のステートレス (Deployment) アプリケーションの YAML ファイルを編集します。
kubectl edit deployment {deployment-name} -o yaml -
YAML ファイルの
spec.template.metadataセクションに次の内容を追加します。labels: aliyun.com/app-language: "golang" # Go アプリケーションに必須。Go アプリケーションであることを示します。 armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" # <your-deployment-name> をご利用のアプリケーション名に置き換えます。Kubernetes 環境で新しいステートレス (Deployment) アプリケーションを作成し、それを ARMS に接続するには、次の完全な YAML ファイルを使用できます。
結果
これらの手順を完了してから約 1 分後、ご利用の Go アプリケーションが ARMS コンソール の ページに表示され、データをレポートしている場合、接続は成功です。
