OpenTelemetry Collector Contrib - Amazon CloudWatch

OpenTelemetry Collector Contrib

OpenTelemetry Collector Contrib を使用して、CloudWatch で OpenTelemetry の使用を開始できます。

前提条件

CloudWatch でトランザクション検索が有効になっていることを確認します。詳細については、「Transaction Search」を参照してください。

OpenTelemetry Collector Contrib をダウンロードする

OpenTelemetry Collector Contrib ディストリビューションの最新リリースをダウンロードします。

OpenTelemetry Collector Contrib をインストールする

OpenTelemetry Collector Contrib を任意のオペレーティングシステムとプラットフォームにインストールします。詳細については、「Install the Collector」を参照してください。

Amazon EC2 またはオンプレミスホストで AWS 認証情報を設定する

Amazon EC2 またはオンプレミスホストで AWS 認証情報を設定できます。

Setup IAM permissions for Amazon EC2
Amazon EC2 インスタンスの IAM ロールに CloudWatchAgentServerPolicy IAM ポリシーをアタッチするには、次の手順に従います。
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. [ロール] を選択し、Amazon EC2 インスタンスに使用しているロールを検索します。

  3. [アクセス権限] タブで、[許可を追加][ポリシーをアタッチ] の順に選択します。

  4. 検索ボックスで CloudWatchAgentServerPolicy ポリシーを検索します。

  5. [CloudWatchAgentServerPolicy] ポリシーを選択し、[許可を追加] を選択します。

Setup IAM permissions for on-premise hosts
オンプレミスホストにアクセス許可を付与するために使用する IAM ユーザーを作成します。
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. [ユーザー][ユーザーの作成] の順に選択します。

  3. [ユーザーの詳細] で、[ユーザー名] に新しい IAM ユーザーの名前を入力します。これは、ホストの認証に使用される AWS のサインイン名です。

  4. [次へ] を選択します。

  5. [アクセス許可の設定] ページの [権限オプション] で、[ポリシーを直接アタッチする] を選択します。

  6. [アクセス許可ポリシー] リストから、CloudWatchAgentServerPolicy ポリシーを選択して、ユーザーに追加します。

  7. [次へ] を選択します。

  8. [確認して作成] ページで、ユーザー名に問題がなく、[CloudWatchAgentServerPolicy] ポリシーが [許可の概要] に含まれていることを確認します。

  9. [ユーザーの作成] を選択します。

  10. AWS アクセスキーとシークレットキーを作成し取得する - IAM コンソールのナビゲーションペインで、[ユーザー] を選択し、前のステップで作成したユーザーのユーザー名を選択します。

  11. ユーザーのページで、[セキュリティ認証情報] タブを選択します。

  12. [アクセスキー] セクションで、[アクセスキーを作成] を選択します。

  13. [アクセスキーの作成ステップ 1] で、[コマンドラインインターフェイス (CLI)] を選択します。

  14. [アクセスキーの作成ステップ 2] で、必要に応じてタグを入力して [次へ] を選択します。

  15. [アクセスキーの作成ステップ 3] で、[.csv ファイルをダウンロード] を選択し、.csv ファイルに IAM ユーザーのアクセスキーとシークレットアクセスキーを含めて保存します。この情報は、次のステップで必要になります。

  16. [完了] をクリックします。

  17. 次のコマンドを入力して、オンプレミスホストで AWS 認証情報を設定します。ACCESS_KEY_IDSECRET_ACCESS_ID を、前のステップでダウンロードした .csv ファイルに新しく生成したアクセスキーとシークレットアクセスキーに置き換えます。

    $ aws configure 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]: json

Amazon EKS または Kubernetes クラスターの AWS 認証情報を設定する

Amazon EKS または Kubernetes クラスターの AWS 認証情報を設定してテレメトリを CloudWatch に送信するには、以下の手順に従います。

Setup IAM permissions for Amazon EKS
  1. 次のコマンドを使用して、クラスターの IAM OIDC ID プロバイダーを作成します。

    eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} --region ${REGION} --approve
  2. 次のコマンドを使用して、OTel Collector の Kubernetes サービスアカウントに IAM ロールを割り当てます。

    eksctl create iamserviceaccount \ --name ${COLLECTOR_SERVICE_ACCOUNT}\ --namespace ${NAMESPACE} \ --cluster ${CLUSTER_NAME} \ --region ${REGION} \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --approve \ --override-existing-serviceaccounts
Setup IAM permissions for Kubernetes
  1. 次のコマンドを入力して、オンプレミスホストで AWS 認証情報を設定します。ACCESS_KEY_IDSECRET_ACCESS_ID を、前のステップでダウンロードした .csv ファイルに新しく生成したアクセスキーとシークレットアクセスキーに置き換えます。デフォルトでは、認証情報ファイルは /home/user/.aws/credentials に保存されます。

    aws configure 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]: json
  2. OpenTelemetry Collector リソースを編集して、kubectl edit OpenTelemetryCollector otel_collector コマンドを使用して新しく作成した AWS 認証情報シークレットを追加します。

  3. ファイルエディタを使用して、デプロイの上部に次の設定を追加して、OpenTelemetryCollector コンテナに AWS 認証情報を追加します。パス /home/user/.aws/credentials をローカルの AWS 認証ファイルの場所に置き換えます。

    spec: volumeMounts: - mountPath: /rootfs volumeMounts: - name: aws-credentials mountPath: /root/.aws readOnly: true volumes: - hostPath: path: /home/user/.aws/credentials name: aws-credentials

OpenTelemetry Collector を設定する

以下のコンテンツをコピーして貼り付け、OTLP エンドポイントにログとトレースを送信するようにコレクターを設定します。

receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: logs_otlp_endpoint headers: x-aws-log-group: ency_log_group x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: traces_otlp_endpoint auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "region" service: "logs" sigv4auth/traces: region: "region" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]

sigv4 を使用してログとトレースを us-east-1 に送信する例を次に示します。

receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: https://logs.us-east-1.amazonaws.com/v1/logs headers: x-aws-log-group: MyApplicationLogs x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: https://xray.us-east-1.amazonaws.com/v1/traces auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "us-east-1" service: "logs" sigv4auth/traces: region: "us-east-1" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]
注記

OpenTelemetry SDK を always_on サンプリング設定に設定して、100% のスパンを確実に記録し、CloudWatch Application Signals を使用して重要なアプリケーションを完全に可視化します。詳細については、「OpenTelemetry Java SDK sampler configuration」の例を参照してください。X-Ray OTLP エンドポイントで OpenTelemetry Collector を設定する例については、「application signals demo」リポジトリを参照してください。