Go エージェントをインストールすると、Application Real-Time Monitoring Service (ARMS) は Go アプリケーションを監視し、アプリケーションのトポロジー、トレース、SQL 分析に関するデータを提供します。
Kubernetes 環境のアプリケーションでは、エージェントを手動でインストールしないでください。代わりに、提供されているコンポーネントを使用してアプリケーションを ARMS と統合します。詳細については、「ack-onepilot コンポーネントを使用した Container Service for Kubernetes (ACK) および Container Compute Service (ACS) 向け Go エージェントのインストール」をご参照ください。
Go エージェントの使用についてご質問がある場合は、DingTalk グループ (ID: 159215000379) を通じてお問い合わせください。
前提条件
ビルド環境は、インターネットまたは Alibaba Cloud 内部ネットワークに接続できる必要があります。セキュリティグループで、ポート 8080、9990、80、443 でのアウトバウンド TCP トラフィックが許可されていることを確認してください。
ネットワーク環境を確認してください。詳細については、「Go アプリケーション監視のネットワーク設定」をご参照ください。
ビルド環境のオペレーティングシステム、アーキテクチャ、Go のバージョン、およびフレームワークのバージョンを確認してください。詳細については、「ARMS アプリケーション監視でサポートされている Go のコンポーネントとフレームワーク」をご参照ください。
ステップ 1:Go アプリケーションイメージのコンパイル
ARMS Go アプリケーション監視を使用するには、元の go build コマンドにプレフィックスとして instgo を追加し、ビルド時に instgo ツールを使用するだけです。ビジネスコードの変更や、OpenTelemetry SDK の統合は不要です。instgo エージェントは OpenTelemetry 標準に基づいて自動計装を実装し、コンパイル時の AST 分析段階で監視コードを自動的に挿入します。
(任意) ビルド中にプロジェクトに vendor ディレクトリが含まれている場合は、
go buildの後に-mod=vendorを追加します。wgetコマンドを使用して instgo ビルドツールをダウンロードします。ビルド環境のオペレーティングシステムとアーキテクチャに基づいて、ダウンロード URL を選択します。instgo はビルドプロセス中に自動的に更新されることにご注意ください。ビルドユーザーが書き込み権限を持つディレクトリに instgo を保存するようにしてください。
説明instgo は、Go プロジェクトを計装して、ARMS がアプリケーションを監視できるようにする ARMS のビルドツールです。
Object Storage Service (OSS) へのインターネットアクセスがある場合は、お使いのオペレーティングシステムとアーキテクチャに対応する中国 (杭州) のダウンロード URL を使用してください。
ビルドツールに実行権限を付与します。
Linux/Mac
# 実行権限を付与します。 chmod +x instgoWindows
Windows では実行権限を付与する必要はありません。
(任意) UID をビルドパラメーターとして設定します。
重要この手順をスキップした場合、instgo はデフォルトで最新バージョンの ARMS エージェントをインストールします。
setコマンドを使用して UID をビルドパラメーターとして設定します。instgo set --uid={YourAliyunUid} // instgo 1.4.5 以降が必要です。UID は Alibaba Cloud プライマリアカウントの ID です。元のビルドコマンドにプレフィックスとして
instgoを追加し、コマンドを実行します。instgo go build {arg1} {arg2} {arg3}プロジェクトのビルドに
go installを使用する場合も、元のビルドコマンドにプレフィックスとしてinstgoを追加できます。前の手順で生成されたバイナリファイルを使用してイメージをビルドします。
ステップ 2:環境変数の設定
ビルド後、次の環境変数を Go アプリケーションに追加します:
export ARMS_ENABLE=true export ARMS_APP_NAME=xxx # アプリケーション名 export ARMS_REGION_ID=xxx # Alibaba Cloud アカウントのリージョン ID export ARMS_LICENSE_KEY=xxx # ARMS コンソールから取得したライセンスキー説明デフォルトでインターネット経由でデータを報告する場合は、環境変数
ARMS_NETWORK_STRATEGY=publicを設定できます。環境変数をエクスポートする代わりに、-ldflags フラグを使用してビルドプロセス中に指定することもできます。
以下のコード例の
{agent_repository_path}を、実際のエージェントのリポジトリパスに置き換えてください。その他のパラメーターについては、環境変数を参照してください。instgo go build -ldflags " -X '{agent_repository_path}/pkg/exporters.ArmsApmName=${appName}' -X '{agent_repository_path}/pkg/exporters.ArmsEnable=true' -X '{agent_repository_path}/pkg/exporters.LicenseKey=${licenseKey}' -X '{agent_repository_path}/pkg/exporters.RegionId=${regionId}'"systemctl を使用してアプリケーションを起動する場合は、次のコマンドを使用して環境変数を設定できます:
systemctl set-environment ARMS_ENABLE=true systemctl set-environment ARMS_APP_NAME=xxx # アプリケーション名 systemctl set-environment ARMS_REGION_ID=xxx # Alibaba Cloud アカウントのリージョン ID systemctl set-environment ARMS_LICENSE_KEY=xxx # ARMS コンソールから取得したライセンスキー
(任意) Dockerfile の設定
Docker 環境を使用している場合は、次の例に従って Dockerfile を変更してください。
FROM golang:1.21 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo
RUN chmod +x instgo
RUN ./instgo go build -o myapp .
FROM debian:bookworm-slim
WORKDIR /app
COPY --from=builder /app/myapp .
ENV ARMS_ENABLE=true
ENV ARMS_APP_NAME=AppName
ENV ARMS_REGION_ID=regionId
ENV ARMS_LICENSE_KEY=licenseKey
EXPOSE 8080
CMD ["./myapp"]結果の検証
約 1 分後、ARMS コンソールの ページを確認してください。アプリケーションが表示され、データが報告されていれば、エージェントのインストールは成功です。