Kubernetes プラットフォームで Application Signals を有効にする
Amazon EKS 以外の Kubernetes システムで実行されているアプリケーションを有効にするには、このセクションの手順に従ってください。Application Signals は、Java、Python、および .NET アプリケーションをサポートしています。
要件
Kubernetes クラスター上で、Application Signals を有効にできる管理者アクセス許可が付与されていること。
Kubernetes クラスターが実行されている環境に AWS CLI がインストールされていること。AWS CLI のインストールについては、「AWS CLI の最新バージョンを使用してインストールまたは更新を行う」で詳しく確認できます。
kubectl と Helm がローカルターミナルにインストールされていること。詳細については、 kubectl
と Helm のドキュメントを参照してください。
ステップ 1: アカウントで Application Signals を有効にする
このアカウントで Application Signals をまだ有効にしていない場合は、サービスの検出に必要なアクセス権限を Application Signals に付与する必要があります。このためには、次の操作を行います。この操作はアカウントごとに 1 回のみ必要です。
特定のアプリケーション向けに Application Signals を有効にするには
CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/
) を開きます。 ナビゲーションペインで [Services (サービス)] を選択します。
[サービスの検出を開始] を選択します。
チェックボックスを選択し、[サービスの検出を開始] を選択します。
自分のアカウントでこのステップを初めて完了すると、[AWSServiceRoleForCloudWatchApplicationSignals] サービスリンクロールが作成されます。このロールによって、Application Signals に次のアクセス権限が付与されます。
-
xray:GetServiceGraph
-
logs:StartQuery
-
logs:GetQueryResults
-
cloudwatch:GetMetricData
-
cloudwatch:ListMetrics
-
tag:GetResources
このロールの詳細については、「CloudWatch Application Signals のサービスリンクロールのアクセス許可」を参照してください。
-
ステップ 2: クラスターに CloudWatch エージェントオペレータをインストールする
CloudWatch エージェントオペレータをインストールすると、オペレータや CloudWatch エージェント、その他の自動計測機能がクラスターにインストールされます。これを行うには、次のコマンドを入力します。$REGION
を AWS リージョンに置き換えます。$YOUR_CLUSTER_NAME
を、Application Signals ダッシュボードでのクラスターの表示名に置き換えます。
helm repo add aws-observability https://aws-observability.github.io/helm-charts helm install amazon-cloudwatch-operator aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch --create-namespace \ --set region=
$REGION
\ --set clusterName=$YOUR_CLUSTER_NAME
詳細については、GitHub の「amazon-cloudwatch-observability
ステップ 3: Kubernetes クラスターの AWS 認証情報を設定する
重要
Kubernetes クラスターが Amazon EC2 上にホストされている場合は、このセクションをスキップして ステップ 4: アノテーションを追加する に進むことができます。
Kubernetes クラスターがオンプレミスにホストされている場合は、このセクションの手順を使用して Kubernetes 環境に AWS 認証情報を追加する必要があります。
オンプレミスの Kubernetes クラスターのアクセス許可を設定するには
オンプレミスホストにアクセス許可を付与するために使用する IAM ユーザーを作成します。
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 [ユーザー]、[ユーザーの作成] の順に選択します。
[ユーザー詳細] で、[ユーザー名] に新しい IAM ユーザーの名前を入力します。これは、ホストの認証に使用される AWS のサインイン名です。その後、[Next] (次へ) を選択します。
[アクセス許可の設定] ページの [権限オプション] で、[ポリシーを直接アタッチする] を選択します。
[アクセス許可ポリシー] リストから、CloudWatchAgentServerPolicy ポリシーを選択して、ユーザーに追加します。次いで、[次へ] を選択します。
[確認と作成] ページで、ユーザー名に問題がなく、CloudWatchAgentServerPolicy ポリシーが [許可の概要] に含まれていることを確認します。
[ユーザーの作成] を選択します。
AWS アクセスキーとシークレットキーを作成して取得します。
IAM コンソールのナビゲーションペインで、[ユーザー] を選択し、前のステップで作成したユーザーのユーザー名を選択します。
ユーザーのページで、[セキュリティ認証情報] タブを選択します。次に、[アクセスキー] セクションで、[アクセスキーを作成] を選択します。
[アクセスキーの作成ステップ 1] で、[コマンドラインインターフェイス (CLI)] を選択します。
[アクセスキーの作成ステップ 2] で、必要に応じてタグを入力して [次へ] を選択します。
[アクセスキーの作成ステップ 3] で、[.csv ファイルをダウンロード] を選択し、.csv ファイルに IAM ユーザーのアクセスキーとシークレットアクセスキーを含めて保存します。この情報は、次のステップで必要になります。
[完了] をクリックします。
次のコマンドを入力して、オンプレミスホストで AWS 認証情報を設定します。
ACCESS_KEY_ID
とSECRET_ACCESS_ID
を、前のステップでダウンロードした .csv ファイルに新しく生成したアクセスキーとシークレットアクセスキーに置き換えます。デフォルトでは、認証情報ファイルは/home/
に保存されます。user
/.aws/credentials.$ aws configure --profile AmazonCloudWatchAgent AWS Access Key ID [None]:
ACCESS_KEY_ID
AWS Secret Access Key [None]:SECRET_ACCESS_ID
Default region name [None]:MY_REGION
Default output format [None]: jsonHelm チャートを使用して、新規に作成した AWS 認証情報シークレットを、CloudWatch エージェントがインストールしたカスタムリソースに追加します。
kubectl edit amazoncloudwatchagent cloudwatch-agent -n amazon-cloudwatch
ファイルエディタを開いたままにして、デプロイの上部に次の設定を追加して、CloudWatch エージェントコンテナに AWS 認証情報をマウントします。パス
/home/
をローカルの AWS ファイルシステム上の場所に置き換えます。user
/.aws/credentialsapiVersion: cloudwatch.aws.amazon.com/v1alpha1 kind: AmazonCloudWatchAgent metadata: name: cloudwatch-agent namespace: amazon-cloudwatch spec: volumeMounts: - mountPath: /rootfs volumeMounts: - name: aws-credentials mountPath: /root/.aws readOnly: true volumes: - hostPath: path: /home/
user
/.aws/credentials name: aws-credentials ---
ステップ 4: アノテーションを追加する
次のステップでは、Kubernetes ワークロード
Application Signals のアノテーションを追加するには
-
アノテーションには次の 2 つのオプションがあります。
ワークロードへのアノテーション: クラスター内の 1 つのワークロードの計測を自動的に開始します。
名前空間へのアノテーション: 選択した名前空間にデプロイしたすべてのワークロードに対し自動的に計測を開始します。
以上のいずれかのオプションを選択し、次の適切な手順に従います。
1 つのワークロードに注釈を追加するには、次のいずれかのコマンドを入力します。
$WORKLOAD_TYPE
と$WORKLOAD_NAME
をワークロードの値に置き換えます。Java ワークロードの場合:
kubectl patch
$WORKLOAD_TYPE
$WORKLOAD_NAME
-p '{"spec": {"template": {"metadata": {"annotations": {"instrumentation.opentelemetry.io/inject-java": "true"}}}}}'Python ワークロードの場合:
kubectl patch
$WORKLOAD_TYPE
$WORKLOAD_NAME
-p '{"spec": {"template": {"metadata": {"annotations": {"instrumentation.opentelemetry.io/inject-python": "true"}}}}}'Python アプリケーションには、追加で必要な設定があります。詳細については、「Application Signals を有効にしたが、その後、Python アプリケーションを起動できない」を参照してください。
.NET ワークロードの場合:
kubectl patch
$WORKLOAD_TYPE
$WORKLOAD_NAME
-p '{"spec": {"template": {"metadata": {"annotations": {"instrumentation.opentelemetry.io/inject-dotnet": "true"}}}}}'注記
Alpine Linux (
linux-musl-x64
) ベースのイメージでの .NET ワークロードに対して Application Signals を有効にするには、さらに以下の注釈を追加します。instrumentation.opentelemetry.io/otel-dotnet-auto-runtime: "linux-musl-x64"
(プレビュー) Node.js ワークロードの場合:
kubectl patch
$WORKLOAD_TYPE
$WORKLOAD_NAME
-p '{"spec": {"template": {"metadata": {"annotations": {"instrumentation.opentelemetry.io/inject-nodejs": "true"}}}}}'
-
名前空間内のすべてのワークロードにアノテーションを追加するには、次のいずれかのコマンドを入力します。
$NAMESPACE
を名前空間の名前に置き換えます。名前空間に Java、Python、および .NET ワークロードが含まれている場合は、すべての注釈を名前空間に追加します。
名前空間に Java ワークロードがある場合:
kubectl annotate ns
$NAMESPACE
instrumentation.opentelemetry.io/inject-java=true名前空間に Python ワークロードがある場合:
kubectl annotate ns
$NAMESPACE
instrumentation.opentelemetry.io/inject-python=truePython アプリケーションには、追加で必要な設定があります。詳細については、「Application Signals を有効にしたが、その後、Python アプリケーションを起動できない」を参照してください。
-
名前空間に .NET ワークロードがある場合:
kubectl annotate ns
$NAMESPACE
instrumentation.opentelemetry.io/inject-dotnet=true -
(プレビュー) 名前空間に Node.js ワークロードがある場合:
kubectl annotate ns
$NAMESPACE
instrumentation.opentelemetry.io/inject-nodejs=true
アノテーションを追加したら、次のコマンドを入力して、名前空間内のすべてのポッドを再起動します。
kubectl rollout restart
前のステップが完了したら、CloudWatch コンソールで、[Application Signals]、[サービス] の順に選択します。ダッシュボードが開いて、Application Signals が収集したデータが表示されます。データが表示されるまでに数分かかる場合があります。
[サービス] ビューの詳細については、「Application Signals を使用したアプリケーションの運用状態のモニタリング」を参照してください。