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 ポリシーをアタッチするには、次の手順に従います。
IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。
[ロール] を選択し、Amazon EC2 インスタンスに使用しているロールを検索します。
[アクセス権限] タブで、[許可を追加]、[ポリシーをアタッチ] の順に選択します。
検索ボックスで CloudWatchAgentServerPolicy
ポリシーを検索します。
[CloudWatchAgentServerPolicy] ポリシーを選択し、[許可を追加] を選択します。
- Setup IAM permissions for on-premise hosts
-
オンプレミスホストにアクセス許可を付与するために使用する IAM ユーザーを作成します。
IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。
[ユーザー]、[ユーザーの作成] の順に選択します。
[ユーザーの詳細] で、[ユーザー名] に新しい IAM ユーザーの名前を入力します。これは、ホストの認証に使用される AWS のサインイン名です。
[次へ] を選択します。
[アクセス許可の設定] ページの [権限オプション] で、[ポリシーを直接アタッチする] を選択します。
[アクセス許可ポリシー] リストから、CloudWatchAgentServerPolicy ポリシーを選択して、ユーザーに追加します。
[次へ] を選択します。
[確認して作成] ページで、ユーザー名に問題がなく、[CloudWatchAgentServerPolicy] ポリシーが [許可の概要] に含まれていることを確認します。
[ユーザーの作成] を選択します。
AWS アクセスキーとシークレットキーを作成し取得する - IAM コンソールのナビゲーションペインで、[ユーザー] を選択し、前のステップで作成したユーザーのユーザー名を選択します。
ユーザーのページで、[セキュリティ認証情報] タブを選択します。
[アクセスキー] セクションで、[アクセスキーを作成] を選択します。
[アクセスキーの作成ステップ 1] で、[コマンドラインインターフェイス (CLI)] を選択します。
[アクセスキーの作成ステップ 2] で、必要に応じてタグを入力して [次へ] を選択します。
[アクセスキーの作成ステップ 3] で、[.csv ファイルをダウンロード] を選択し、.csv ファイルに IAM ユーザーのアクセスキーとシークレットアクセスキーを含めて保存します。この情報は、次のステップで必要になります。
[完了] をクリックします。
次のコマンドを入力して、オンプレミスホストで AWS 認証情報を設定します。ACCESS_KEY_ID と SECRET_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
-
次のコマンドを使用して、クラスターの IAM OIDC ID プロバイダーを作成します。
eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME}
--region ${REGION
} --approve
次のコマンドを使用して、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
-
次のコマンドを入力して、オンプレミスホストで AWS 認証情報を設定します。ACCESS_KEY_ID
と SECRET_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
OpenTelemetry Collector リソースを編集して、kubectl edit OpenTelemetryCollector otel_collector
コマンドを使用して新しく作成した AWS 認証情報シークレットを追加します。
ファイルエディタを使用して、デプロイの上部に次の設定を追加して、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
以下のコンテンツをコピーして貼り付け、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]