

# 開始方法
<a name="CloudWatch-OTLPGettingStarted"></a>

CloudWatch で OpenTelemetry の使用を開始するには、事前にパッケージ化した OpenTelemetry セットアップを使用します。これは CloudWatch エージェントと AWS Distro for OpenTelemetry SDK で使用できます。これにより、CloudWatch で最も統合されたモニタリングエクスペリエンスが提供されます。

**注記**  
トレース用に OTLP エンドポイントを使用する前に、トランザクション検索が有効になっていることを確認します。

または、OpenTelemetry Collector または独自のカスタム OpenTelemetry Collector を使用してテレメトリを OTLP エンドポイントに直接送信することができます。AWS Distro for OpenTelemetry を使用してコレクターレスに移行し、テレメトリを OTLP エンドポイントに直接送信できます。機能のサポートに基づいて、情報に基づいた選択を行います。


| 機能 | OpenTelemetry Collector | OpenTelemetry Collector | AWS オープンテレメトリー用ディストロ | 
| --- | --- | --- | --- | 
|  CloudWatch アプリケーションシグナル (アプリケーションパフォーマンスメトリクス、サービス検出、アプリケーションマップ)  |  あり  |  はい  |  はい  | 
|  スパンとトレースの概要を検索および分析する  |  あり  |  はい  |  はい  | 
|  ログの概要の検索と分析  |  あり  |  はい  |  はい  | 
|  アプリケーションのパフォーマンスモニタリングテレメトリの強化と、アプリケーションがホストされている AWS インフラストラクチャ属性。  |  いいえ  |  はい  |  はい  | 
|  アプリケーションと相関するランタイムメトリクス。例えば、JVM メトリクス  |  いいえ  |  あり  |  なし  | 
|  AWS サポート  |  AWS が受信したデータ  |  AWS が受信したデータ  |  AWS が受信したデータ  | 
|  サポートされているテレメトリ  |  ログ、メトリクス、トレース  |  ログ、トレース、メトリクス  |  メトリクス、トレース  | 

**Topics**
+ [OpenTelemetry Collector](CloudWatch-OTLPSimplesetup.md)
+ [独自のカスタム OpenTelemetry Collector を構築する](CloudWatch-OTLPAdvancedsetup.md)
+ [AWS Distro for OpenTelemetry (ADOT) SDK を使用したコレクターレステレメトリのエクスポート](CloudWatch-OTLP-UsingADOT.md)
+ [PromQL で提供されたメトリクスを有効にする](CloudWatch-OTelEnrichment.md)

# OpenTelemetry Collector
<a name="CloudWatch-OTLPSimplesetup"></a>

OpenTelemetry Collector は、テレメトリデータを受信、処理、エクスポートするオープンソースのベンダーに依存しないエージェントです。アプリケーションと Amazon CloudWatch 間の中央パイプラインとして機能し、複数のソースからメトリクス、ログ、トレースを収集し、OpenTelemetry Protocol (OTLP) を使用して CloudWatch に送信します。

CloudWatch で OpenTelemetry Collector を使用すると、次の利点があります:
+ 単一のエージェントを介して複数のアプリケーションとホストからテレメトリを収集し、CloudWatch への接続数を減らします。
+ 属性の追加または削除、データのバッチ処理、トレースのサンプリングなど、CloudWatch に送信する前にテレメトリを処理およびフィルタリングします。
+ AWS、オンプレミス、およびその他のクラウド環境全体で同じコレクター設定を使用し、アプリケーションの実行場所に関係なく一貫したテレメトリパイプラインを提供します。
+ CloudWatch Query Studio の Prometheus クエリ言語 (PromQL) を使用してクエリを実行できるリッチラベルを使用して、メトリクスを CloudWatch に送信します。

## サポートされているレシーバー
<a name="CloudWatch-OTLPSupportedReceivers"></a>

OpenTelemetry Collector は、テレメトリデータの取り込み用に幅広いレシーバーをサポートします。OpenTelemetry SDK で計測されたアプリケーションの OTLP レシーバーなどの OpenTelemetry レシーバー、または Prometheus レシーバーを使用して、既存の Prometheus エクスポーターからメトリクスをスクレイプできます。CloudWatch で使用される一般的な Prometheus レシーバーは次のとおりです:
+ Prometheus 互換エンドポイントをスクレイピングするための Prometheus レシーバー
+ ホストからシステムレベルのメトリクスを収集するためのホストメトリクスレシーバー
+ Kubernetes API サーバーからクラスターレベルのメトリクスを収集するための Kubernetes クラスターレシーバー

1 つのコレクターで複数のレシーバーを設定できるため、OpenTelemetry メトリクスと Prometheus メトリクスの両方を収集し、同じパイプラインを介して CloudWatch に送信できます。使用可能なレシーバーの完全なリストについては、OpenTelemetry Collector [リポジトリ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver)を参照してください。

## 開始方法
<a name="CloudWatch-OTLPSimplesetupGettingStarted"></a>

前提条件 – トレースに OTLP エンドポイントを使用する場合は、トランザクション検索が有効になっていることを確認します。

手順:

1. OpenTelemetry Collector ディストリビューションの最新リリースをダウンロードします。詳細については、OpenTelemetry Collector の[リリース](https://github.com/open-telemetry/opentelemetry-collector-releases/releases)を参照してください。

1. ホストに OpenTelemetry Collector をインストールします。コレクターは、任意のオペレーティングシステムとプラットフォームで実行されます。詳細については、「[Install the Collector](https://opentelemetry.io/docs/collector/installation/)」を参照してください。

1. Amazon EC2 またはオンプレミスホストで AWS 認証情報を設定します。コレクターは、テレメトリデータの送信時にこれらの認証情報を使用して CloudWatch で認証します。詳細については以下を参照してください。

------
#### [ Setup IAM permissions for Amazon EC2 ]

**Amazon EC2 インスタンスの IAM ロールに `CloudWatchAgentServerPolicy` IAM ポリシーをアタッチするには、次の手順に従います。**

   1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

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

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

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

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

------
#### [ Setup IAM permissions for on-premise hosts ]

**オンプレミスホストにアクセス許可を付与するために使用する IAM ユーザーを作成します。**

   1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   1. **[Done]** (完了) をクリックします。

   1. 次のコマンドを入力して、オンプレミスホストで AWS 認証情報を設定します。*ACCESS\$1KEY\$1ID* と *SECRET\$1ACCESS\$1ID* を、前のステップでダウンロードした .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
      ```

------

1. Amazon EKS または Kubernetes クラスターの AWS 認証情報を設定します。Amazon EKS の使用を開始する最も簡単な方法は、EKS OTel Container Insights アドオンを使用することです。OpenTelemetry Collector を直接使用したい場合は、以下の手順に従って、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
      ```

   1. 次のコマンドを使用して、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\$1KEY\$1ID* と *SECRET\$1ACCESS\$1ID* を、前のステップでダウンロードした .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
      ```

   1. OpenTelemetry Collector リソースを編集して、`kubectl edit OpenTelemetryCollector otel_collector` コマンドを使用して新しく作成した AWS 認証情報シークレットを追加します。

   1. ファイルエディタを使用して、デプロイの上部に次の設定を追加して、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
      ```

------

1. CloudWatch エンドポイントにテレメトリを送信するようにコレクター設定で OTLP エクスポーターを設定します。以下の例を参照してください。

## コレクター設定の例
<a name="CloudWatch-OTLPSimplesetupConfigureCollector"></a>

以下のコンテンツをコピーして貼り付け、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\$1on* サンプリング設定に設定して、100% のスパンを確実に記録し、CloudWatch Application Signals を使用して重要なアプリケーションを完全に可視化します。詳細については、「[OpenTelemetry Java SDK sampler configuration](https://opentelemetry.io/docs/languages/java/sdk/#sampler)」の例を参照してください。X-Ray OTLP エンドポイントで OpenTelemetry Collector を設定する例については、「[application signals demo](https://github.com/aws-observability/application-signals-demo/blob/main/scripts/opentelemetry/otel_simple_setup/opentelemetry.yaml)」リポジトリを参照してください。

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

```
receivers:
  otlp:
    protocols:
      http:
        endpoint: "0.0.0.0:4318"

processors:
  batch:
    send_batch_size: 200
    timeout: 10s

exporters:
  otlphttp:
    tls:
      insecure: false
    endpoint: metrics_otlp_endpoint
    auth:
      authenticator: sigv4auth

extensions:
  sigv4auth:
    service: "monitoring"
    region: "region"

service:
  extensions: [sigv4auth]
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp]
```

sigv4 を使用してメトリクスを us-east-1 に送信する例を次に示します。

```
receivers:
  otlp:
    protocols:
      http:
        endpoint: "0.0.0.0:4318"

processors:
  batch:
    send_batch_size: 200
    timeout: 10s

exporters:
  otlphttp:
    tls:
      insecure: false
    endpoint: "https://monitoring.us-east-1.amazonaws.com/v1/metrics:443"
    auth:
      authenticator: sigv4auth

extensions:
  sigv4auth:
    service: "monitoring"
    region: "us-east-1"

service:
  extensions: [sigv4auth]
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp]
```

# 独自のカスタム OpenTelemetry Collector を構築する
<a name="CloudWatch-OTLPAdvancedsetup"></a>

独自のカスタム OpenTelemetry Collector を構築して、OpenTelemetry を使用した CloudWatch で最高のアプリケーションオブザーバビリティエクスペリエンスを実現できます。この設定では、オープンソースの CloudWatch コンポーネントを使用して独自の OpenTelemetry Collector を構築する必要があります。

## 前提条件
<a name="CloudWatch-OTLPAdvancedsetupPrequisite"></a>

CloudWatch で*トランザクション検索*が有効になっていることを確認します。詳細については、「[Transaction Search](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/CloudWatch-Transaction-Search.html)」を参照してください。

## 独自のコレクターを構築する
<a name="CloudWatch-OTLPAdvancedsetupBuildCollector"></a>

OpenTelemetry を使用して CloudWatch でアプリケーションをモニタリングするには、次の設定で独自のコレクターを構築できます。詳細については、「[Building a custom collector](https://opentelemetry.io/docs/collector/custom-collector/)」を参照してください。

CloudWatch の一般的な設定。

```
dist:
  name: otelcol-dev
  description: OTel Collector for sending telemetry to CloudWatch.
  output_path: ./otelcol-dev
extensions:
  - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension v0.111.0
  - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/awsproxy v0.113.0
exporters:
  - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.111.0
  - gomod: go.opentelemetry.io/collector/exporter/otlphttpexporter v0.111.0
receivers:
  - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.111.0
```

トレースの追加設定。

```
# Enable Tracing 
dist:
  name: otelcol-dev
  description: OTel Collector for sending telemetry to CloudWatch.
  output_path: ./otelcol-dev
extensions:
    #Include common configurations and your custom extensions

exporters:
    #Include common configurations and your custom extensions
 
receivers:
  - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.111.0
processors:
  - gomod: github.com/amazon-contributing/opentelemetry-collector-contrib/processor/awsapplicationsignalsprocessor v0.113.0
  - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.113.0
  - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.113.0
replaces:
  - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil v0.113.0 => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/awsutil v0.113.0
  - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/cwlogs v0.113.0 => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/cwlogs v0.113.0
  - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsemfexporter v0.113.0 => github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsemfexporter v0.113.0
  - github.com/openshift/api v3.9.0+incompatible => github.com/openshift/api v0.0.0-20180801171038-322a19404e37
```

**注記**  
次の点に注意してください。  
コレクターを構築したら、[OpenTelemetry Collector](CloudWatch-OTLPSimplesetup.md) の手順に従って、ホストまたは kubernetes 環境にカスタムコレクターをデプロイして設定します。
Application Signals Processor を使用したカスタム OpenTelemetry コレクターの設定については、「[Application Signals custom configuration](https://github.com/aws-observability/application-signals-demo/blob/main/scripts/opentelemetry/appsignals_custom_otel_setup/custom-opentelemetry.yaml)」の例を参照してください。Application Signals Processor は、カスタムビルド用の OpenTelemetry Collectors の最新バージョンのみをサポートします。サポートされているバージョンの詳細については、「[opentelemetry-collector-contrib](https://github.com/amazon-contributing/opentelemetry-collector-contrib/tags)」リポジトリを参照してください。

# AWS Distro for OpenTelemetry (ADOT) SDK を使用したコレクターレステレメトリのエクスポート
<a name="CloudWatch-OTLP-UsingADOT"></a>

ADOT SDK を使用してコレクターレスに移行し、メトリクス、トレース、およびログを OTLP エンドポイントに直接送信できます。

**注記**  
Application Signals には、トランザクション検索機能が含まれています。コストの重複を回避するには、ADOT SDK で Application Signals を無効にし、`OTEL_AWS_APPLICATION_SIGNALS_ENABLED` を false (デフォルト設定) に設定したままにします。

**Topics**
+ [前提条件](#CloudWatch-OTLP-UsingADOT-Prerequisite)
+ [ロールの IAM アクセス許可を設定する](#setup-iam-permissions-role)
+ [認証情報プロバイダーを設定する](#configure-credentials-providers)
+ [ADOT SDK の有効化](#Enabling-ADOT)

## 前提条件
<a name="CloudWatch-OTLP-UsingADOT-Prerequisite"></a>

トレースを使用している場合は、トランザクション検索が有効になっていて、X-Ray OTLP エンドポイントにスパンを送信できることを確認します。詳細については、「[トランザクション検索の開始方法](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Transaction-Search-getting-started.html)」を参照してください。

## ロールの IAM アクセス許可を設定する
<a name="setup-iam-permissions-role"></a>

以下のステップを実行して、必要な IAM ポリシーをロールにアタッチします。

**トレース:**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. **[ロール]** を選択し、設定したロールを検索して選択します。

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

1. 検索ボックスを使って、`AWSXrayWriteOnlyPolicy` を検索します。

1. `AWSXrayWriteOnlyPolicy` ポリシーを選択し、**[許可を追加]** を選択します。

**ログ:**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. **[ロール]** を選択し、設定したロールを検索して選択します。

1. **[アクセス許可]** タブで、**[許可を追加]** をクリックしてから、**[インラインポリシーを作成]** をクリックします。

1. サービスの **[CloudWatch Logs]** を選択し、**[許可されたアクション]** で以下をフィルタリングして選択します。

   ```
   logs:PutLogEvents
   logs:DescribeLogGroups
   logs:DescribeLogStreams
   ```

1. 必要なアクセス許可を付与する IAM ポリシーの例を以下に示します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CloudWatchLogsAccess",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents",
                   "logs:DescribeLogGroups",
                   "logs:DescribeLogStreams"
                  
               ],
               "Resource": [
                   "arn:aws:logs:*:*:log-group:*"
               ]
           }
       ]
   }
   ```

------

## 認証情報プロバイダーを設定する
<a name="configure-credentials-providers"></a>

ADOT は AWS SDK を使用して、テレメトリデータを AWS にエクスポートするために必要となる有効な認証情報を自動的に検出します。特定の環境の認証情報の設定に関するガイダンスについては、[AWS SDKS が認証情報を取得する方法に関するドキュメント](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)を参照してください。

**オンプレミスホストの IAM 認証情報の設定:**

次のコマンドを入力して、オンプレミスホストで AWS 認証情報を設定します。**ACCESS\$1KEY\$1ID** と **SECRET\$1ACCESS\$1KEY** を、設定した IAM ロールまたはユーザーの認証情報に置き換えます。

```
$ 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
```

## ADOT SDK の有効化
<a name="Enabling-ADOT"></a>

アプリケーションのログおよびトレースを Java、Node.js、Python、.Net の AWS Distro for OpenTelemetry (ADOT) SDK から OTLP エンドポイントに直接送信することを許可できます。

------
#### [ Java ]

**注記**  
これらの機能を使用するには、**ADOT Java エージェントバージョン 2.11.2 以降**を使用する必要があります。

1. AWS Distro for OpenTelemetry Java 自動計測エージェントの最新バージョンをダウンロードします。このコマンドを使用すると、最新バージョンをダウンロードできます。

   ```
   curl -L -O https://github.com/aws-observability/aws-otel-java-instrumentation/releases/latest/download/aws-opentelemetry-agent.jar
   ```

   リリース済みバージョンをすべて確認するには、[aws-otel-java-instrumentation](https://github.com/aws-observability/aws-otel-java-instrumentation/releases) のリリースを参照してください。

1. OTLP エンドポイントにテレメトリを直接送信する別のエクスポーターを有効にし、メリットを最適化するには、アプリケーションを起動する前に以下の環境変数を使用します。

   **トレース:**
   + X-Ray OTLP トレースエンドポイントを指定するように `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` を設定します: `https://xray.[AWSRegion].amazonaws.com/v1/traces`

     例えば、次のようになります。

     ```
     export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://xray.us-west-2.amazonaws.com/v1/traces"
     ```
   + `OTEL_TRACES_EXPORTER` を `otlp` に設定します (これはオプションで、この環境変数が設定されていない場合はデフォルト値になります)。
   + `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` 変数を `http/protobuf` に設定します (これはオプションで、この環境変数が設定されていない場合はデフォルト値になります)。
   + `OTEL_RESOURCE_ATTRIBUTES` 変数を設定して、以下の情報をキーと値のペアとして指定します。これらの環境変数は Application Signals によって使用され、X-Ray トレースのアノテーションと CloudWatch メトリクスのディメンションに変換されます。
     + (オプション) サービス名を設定するには、`service.name` を使用します。これは、Application Signals ダッシュボードにアプリケーションのサービス名として表示されます。このキーの値を指定しない場合、`UnknownService` (デフォルト値) が使用されます。
     + (オプション) アプリケーションの稼働環境を設定するには、`deployment.environment` を使用します。これは、アプリケーションの **[ホスト元]** 環境として表示されます。
     + (オプション) ログ相関を有効にするには、`OTEL_RESOURCE_ATTRIBUTES` で、アプリケーションのロググループに追加で環境変数 `aws.log.group.names` を設定します。これにより、アプリケーションが生成したトレースとメトリクスをこれらのロググループ内の該当するログエントリと関連付けることができます。この変数では、`$YOUR_APPLICATION_LOG_GROUP` をアプリケーションのロググループ名に置き換えます。複数のロググループがある場合は、アンパサンド (`&`) を使用して、次の例のようにそれらを分離できます: `aws.log.group.names=log-group-1&log-group-2`。ログ相関のメトリクスを有効にするには、この現在の環境変数を設定するだけで十分です。詳細については、「[ログ相関のメトリクスを有効にする](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-MetricLogCorrelation.html)」を参照してください。ログ相関のトレースを有効にするには、アプリケーションのログ記録設定も変更する必要があります。詳細については、「[ログ相関のトレースを有効にする](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-TraceLogCorrelation.html)」を参照してください。

   **ログ:**
   + CloudWatch OTLP ログエンドポイントを指定するように `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` を設定します: `https://logs.[AWSRegion].amazonaws.com/v1/logs`

     例えば、次のようになります。

     ```
     export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT="https://logs.us-west-2.amazonaws.com/v1/logs"
     ```
   + ログをエクスポートするロググループとログストリームを指定するように `OTEL_EXPORTER_OTLP_LOGS_HEADERS` を設定します (注: ADOT を実行する**前**に作成する必要があります): `x-aws-log-group=[CW-LOG-GROUP-NAME],x-aws-log-stream=[CW-LOG-STREAM-NAME]`

     例えば、次のようになります。

     ```
     export OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default
     ```
   + `OTEL_LOGS_EXPORTER` を `otlp` に設定します (これはオプションで、この環境変数が設定されていない場合はデフォルト値になります)。
   + `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` 変数を `http/protobuf` に設定します (これはオプションで、この環境変数が設定されていない場合はデフォルト値になります)。

1. `JAVA_TOOL_OPTIONS` を指定して、AWS Distro for OpenTelemetry Java 自動計測エージェントが保存されているパスを指定します。例えば、次のようになります。

   ```
   export JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH"
   export AWS_ADOT_JAVA_INSTRUMENTATION_PATH="./aws-opentelemetry-agent.jar"
   ```

1. これで、アプリケーションは ADOT Java 計測を使用して実行され、スパンおよびログが生成されるようになりました。スパンは `aws/spans` CloudWatch ロググループに保存され、ログは `OTEL_EXPORTER_OTLP_LOGS_HEADERS` ヘッダーで指定されたロググループに保存されます。CloudWatch トレースおよびメトリクスコンソールで、スパンと相関するログとメトリクスを表示することもできます。

1. 前のステップでリストアップした環境変数を使用して、アプリケーションを起動します。起動スクリプトの例を次に示します。

   ```
   JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" \
   OTEL_METRICS_EXPORTER=none \
   OTEL_TRACES_EXPORTER=otlp \
   OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf \
   OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \
   OTEL_LOGS_EXPORTER=otlp \
   OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=http/protobuf \
   OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://logs.us-east-1.amazonaws.com/v1/logs \
   OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default 
   OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME" \
   java -jar $MY_JAVA_APP.jar
   ```

------
#### [ Node.js ]

**注記**  
これらの機能を使用するには、**ADOT JavaScript バージョン 0.7.0 以降**を使用する必要があります。

1. AWS Distro for OpenTelemetry JavaScript 自動計測の最新バージョンをダウンロードします。次の コマンドを使用してインストールします。

   ```
   npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation
   ```

   すべてのリリース済みバージョンを確認するには、「[aws-otel-js-instrumentation Releases](https://github.com/aws-observability/aws-otel-js-instrumentation/releases)」を参照してください。

1. OTLP エンドポイントにテレメトリを直接送信する別のエクスポーターを有効にし、メリットを最適化するには、アプリケーションを起動する前に以下の環境変数を使用します。

   **トレース:**
   + X-Ray OTLP トレースエンドポイントを指定するように `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` を設定します: `https://xray.[AWSRegion].amazonaws.com/v1/traces`

     例えば、次のようになります。

     ```
     export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://xray.us-west-2.amazonaws.com/v1/traces"
     ```
   + `OTEL_TRACES_EXPORTER` を `otlp` に設定します (これはオプションで、この環境変数が設定されていない場合はデフォルト値になります)。
   + `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` 変数を `http/protobuf` に設定します (これはオプションで、この環境変数が設定されていない場合はデフォルト値になります)。
   + `OTEL_RESOURCE_ATTRIBUTES` 変数を設定して、以下の情報をキーと値のペアとして指定します。これらの環境変数は Application Signals によって使用され、X-Ray トレースのアノテーションと CloudWatch メトリクスのディメンションに変換されます。
     + (オプション) サービス名を設定するには、`service.name` を使用します。これは、Application Signals ダッシュボードにアプリケーションのサービス名として表示されます。このキーの値を指定しない場合、`UnknownService` (デフォルト値) が使用されます。
     + (オプション) アプリケーションの稼働環境を設定するには、`deployment.environment` を使用します。これは、アプリケーションの **[ホスト元]** 環境として表示されます。
     + (オプション) ログ相関を有効にするには、`OTEL_RESOURCE_ATTRIBUTES` で、アプリケーションのロググループに追加で環境変数 `aws.log.group.names` を設定します。これにより、アプリケーションが生成したトレースとメトリクスをこれらのロググループ内の該当するログエントリと関連付けることができます。この変数では、`$YOUR_APPLICATION_LOG_GROUP` をアプリケーションのロググループ名に置き換えます。複数のロググループがある場合は、アンパサンド (`&`) を使用して、次の例のようにそれらを分離できます: `aws.log.group.names=log-group-1&log-group-2`。ログ相関のメトリクスを有効にするには、この現在の環境変数を設定するだけで十分です。詳細については、「[ログ相関のメトリクスを有効にする](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-MetricLogCorrelation.html)」を参照してください。ログ相関のトレースを有効にするには、アプリケーションのログ記録設定も変更する必要があります。詳細については、「[ログ相関のトレースを有効にする](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-TraceLogCorrelation.html)」を参照してください。

   **ログ:**
   + CloudWatch OTLP ログエンドポイントを指定するように `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` を設定します: `https://logs.[AWSRegion].amazonaws.com/v1/logs`

     例えば、次のようになります。

     ```
     export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT="https://logs.us-west-2.amazonaws.com/v1/logs"
     ```
   + ログをエクスポートするロググループとログストリームを指定するように `OTEL_EXPORTER_OTLP_LOGS_HEADERS` を設定します (注: ADOT を実行する**前**に作成する必要があります): `x-aws-log-group=[CW-LOG-GROUP-NAME],x-aws-log-stream=[CW-LOG-STREAM-NAME]`

     例えば、次のようになります。

     ```
     export OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default
     ```
   + `OTEL_LOGS_EXPORTER` を `otlp` に設定します (これはオプションで、この環境変数が設定されていない場合はデフォルト値になります)。
   + `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` 変数を `http/protobuf` に設定します (これはオプションで、この環境変数が設定されていない場合はデフォルト値になります)。

1. これで、アプリケーションは ADOT JavaScript 計測を使用して実行され、スパンおよびログが生成されるようになりました。スパンは `aws/spans` CloudWatch ロググループに保存され、ログは `OTEL_EXPORTER_OTLP_LOGS_HEADERS` ヘッダーで指定されたロググループに保存されます。CloudWatch トレースおよびメトリクスコンソールで、スパンと相関するログとメトリクスを表示することもできます。

1. 前のステップでリストアップした環境変数を使用して、アプリケーションを起動します。起動スクリプトの例を次に示します。

   `$SVC_NAME` をアプリケーションの名前に置き換えます。これは、アプリケーションの名前として表示されます。

   ```
   OTEL_METRICS_EXPORTER=none \
   OTEL_TRACES_EXPORTER=otlp \
   OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf \
   OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \
   OTEL_LOGS_EXPORTER=otlp \
   OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=http/protobuf \
   OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://logs.us-east-1.amazonaws.com/v1/logs \
   OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default 
   OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME" \
   node --require '@aws/aws-distro-opentelemetry-node-autoinstrumentation/register' your-application.js
   ```

------
#### [ Python ]

**注記**  
これらの機能を使用するには、**ADOT Python バージョン 0.10.0 以降**を使用し、**`botocore`** がインストールされている必要があります。

1. AWS Distro for OpenTelemetry Python 自動計測の最新バージョンをダウンロードします。次の コマンドを使用してインストールします。

   ```
   pip install aws-opentelemetry-distro
   ```

   リリース済みバージョンをすべて確認するには、「[aws-otel-python-instrumentation Releases](https://github.com/aws-observability/aws-otel-python-instrumentation/releases)」を参照してください。

1. OTLP エンドポイントにテレメトリを直接送信する別のエクスポーターを有効にし、メリットを最適化するには、アプリケーションを起動する前に以下の環境変数を使用します。

   **トレース設定とログ設定の両方で、以下の環境変数を設定する必要があります。**
   + `OTEL_PYTHON_DISTRO`～`aws_distro`
   + `OTEL_PYTHON_CONFIGURATOR`～`aws_configurator`

   **トレース:**
   + X-Ray OTLP トレースエンドポイントを指定するように `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` を設定します: `https://xray.[AWSRegion].amazonaws.com/v1/traces`

     例えば、次のようになります。

     ```
     export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://xray.us-west-2.amazonaws.com/v1/traces"
     ```
   + `OTEL_TRACES_EXPORTER` を `otlp` に設定します (これはオプションで、この環境変数が設定されていない場合はデフォルト値になります)。
   + `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` 変数を `http/protobuf` に設定します (これはオプションで、この環境変数が設定されていない場合はデフォルト値になります)。
   + `OTEL_RESOURCE_ATTRIBUTES` 変数を設定して、以下の情報をキーと値のペアとして指定します。これらの環境変数は Application Signals によって使用され、X-Ray トレースのアノテーションと CloudWatch メトリクスのディメンションに変換されます。
     + (オプション) サービス名を設定するには、`service.name` を使用します。これは、Application Signals ダッシュボードにアプリケーションのサービス名として表示されます。このキーの値を指定しない場合、`UnknownService` (デフォルト値) が使用されます。
     + (オプション) アプリケーションの稼働環境を設定するには、`deployment.environment` を使用します。これは、アプリケーションの **[ホスト元]** 環境として表示されます。
     + (オプション) ログ相関を有効にするには、`OTEL_RESOURCE_ATTRIBUTES` で、アプリケーションのロググループに追加で環境変数 `aws.log.group.names` を設定します。これにより、アプリケーションが生成したトレースとメトリクスをこれらのロググループ内の該当するログエントリと関連付けることができます。この変数では、`$YOUR_APPLICATION_LOG_GROUP` をアプリケーションのロググループ名に置き換えます。複数のロググループがある場合は、アンパサンド (`&`) を使用して、次の例のようにそれらを分離できます: `aws.log.group.names=log-group-1&log-group-2`。ログ相関のメトリクスを有効にするには、この現在の環境変数を設定するだけで十分です。詳細については、「[ログ相関のメトリクスを有効にする](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-MetricLogCorrelation.html)」を参照してください。ログ相関のトレースを有効にするには、アプリケーションのログ記録設定も変更する必要があります。詳細については、「[ログ相関のトレースを有効にする](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-TraceLogCorrelation.html)」を参照してください。

   **ログ:**
   + `OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED` を `true` に設定します。
   + CloudWatch OTLP ログエンドポイントを指定するように `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` を設定します: `https://logs.[AWSRegion].amazonaws.com/v1/logs`

     例えば、次のようになります。

     ```
     export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT="https://logs.us-west-2.amazonaws.com/v1/logs"
     ```
   + ログをエクスポートするロググループとログストリームを指定するように `OTEL_EXPORTER_OTLP_LOGS_HEADERS` を設定します (注: ADOT を実行する**前**に作成する必要があります): `x-aws-log-group=[CW-LOG-GROUP-NAME],x-aws-log-stream=[CW-LOG-STREAM-NAME]`

     例えば、次のようになります。

     ```
     export OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default
     ```
   + `OTEL_LOGS_EXPORTER` を `otlp` に設定します (これはオプションで、この環境変数が設定されていない場合はデフォルト値になります)。
   + `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` 変数を `http/protobuf` に設定します (これはオプションで、この環境変数が設定されていない場合はデフォルト値になります)。

1. これで、アプリケーションは ADOT Python 計測を使用して実行され、スパンおよびログが生成されるようになりました。スパンは `aws/spans` CloudWatch ロググループに保存され、ログは `OTEL_EXPORTER_OTLP_LOGS_HEADERS` ヘッダーで指定されたロググループに保存されます。CloudWatch トレースおよびメトリクスコンソールで、スパンと相関するログとメトリクスを表示することもできます。

1. 前のステップでリストアップした環境変数を使用して、アプリケーションを起動します。起動スクリプトの例を次に示します。

   `$SVC_NAME` をアプリケーションの名前に置き換えます。これは、アプリケーションの名前として表示されます。

   `$PYTHON_APP` をアプリケーションの場所と名前に置き換えます。

   ```
   OTEL_METRICS_EXPORTER=none \
   OTEL_TRACES_EXPORTER=otlp \
   OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf \
   OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \
   OTEL_LOGS_EXPORTER=otlp \
   OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=http/protobuf \
   OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://logs.us-east-1.amazonaws.com/v1/logs \
   OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default
   OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true
   OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME" \
   opentelemetry-instrument python $MY_PYTHON_APP.py
   ```

------
#### [ .Net ]

**注記**  
これらの機能を使用するには、**ADOT .NET バージョン 1.8.0 以降**が必要です。
圧縮は現在サポートされていません。
ログは現在サポートされていません。

AWS Distro for OpenTelemetry .NET 自動計装パッケージの最新バージョンをダウンロードします。リリース済みバージョンをすべて確認するには、「[aws-otel-dotnet-instrumentation Releases](https://github.com/aws-observability/aws-otel-dotnet-instrumentation/releases)」を参照してください。

テレメトリを OTLP エンドポイントに直接送信するさまざまなエクスポーターを有効にし、利点を最適化するには、アプリケーションを起動する前に以下の環境変数を使用します (`OTEL_RESOURCE_ATTRIBUTES` 環境変数内の `dotnet-service-name` を任意のサービス名に置き換えてください)。

**トレース:**
+ `OTEL_TRACES_EXPORTER` を `none` に設定する**必要**があります
+ `OTEL_AWS_SIG_V4_ENABLED` を `true` に設定する**必要**があります

  この機能は **.NET では自動的に有効になっていません**。環境変数は、特に .NET 計測内でこのユースケースを識別するために必要です。この要件は .NET に固有であり、**サポートされている他の言語には適用されません**。

以下は Linux の場合のセットアップ例です。

```
export INSTALL_DIR=OpenTelemetryDistribution
export CORECLR_ENABLE_PROFILING=1
export CORECLR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318}
export CORECLR_PROFILER_PATH=${INSTALL_DIR}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so
export DOTNET_ADDITIONAL_DEPS=${INSTALL_DIR}/AdditionalDeps
export DOTNET_SHARED_STORE=${INSTALL_DIR}/store
export DOTNET_STARTUP_HOOKS=${INSTALL_DIR}/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll
export OTEL_DOTNET_AUTO_HOME=${INSTALL_DIR}

export OTEL_DOTNET_AUTO_PLUGINS="AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation"
export OTEL_TRACES_EXPORTER=none
export OTEL_AWS_SIG_V4_ENABLED=true

export OTEL_RESOURCE_ATTRIBUTES=service.name=dotnet-service-name
export OTEL_METRICS_EXPORTER=none
export OTEL_LOGS_EXPORTER=none
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces
```

以下は Windows Server の場合のセットアップ例です。

```
$env:INSTALL_DIR = "OpenTelemetryDistribution" 
$env:CORECLR_ENABLE_PROFILING = 1 
$env:CORECLR_PROFILER = "{918728DD-259F-4A6A-AC2B-B85E1B658318}" 
$env:CORECLR_PROFILER_PATH = Join-Path $env:INSTALL_DIR "win-x64/OpenTelemetry.AutoInstrumentation.Native.dll" 
$env:DOTNET_ADDITIONAL_DEPS = Join-Path $env:INSTALL_DIR "AdditionalDeps" 
$env:DOTNET_SHARED_STORE = Join-Path $env:INSTALL_DIR "store" 
$env:DOTNET_STARTUP_HOOKS = Join-Path $env:INSTALL_DIR "net/OpenTelemetry.AutoInstrumentation.StartupHook.dll" 
$env:OTEL_DOTNET_AUTO_HOME = $env:INSTALL_DIR 
$env:OTEL_DOTNET_AUTO_PLUGINS = "AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation"

$env:OTEL_TRACES_EXPORTER=none
$env:OTEL_AWS_SIG_V4_ENABLED=true

$env:OTEL_RESOURCE_ATTRIBUTES=service.name=dotnet-service-name
$env:OTEL_METRICS_EXPORTER=none
$env:OTEL_LOGS_EXPORTER=none
$env:OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf
$env:OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces
```

1. 前のステップでリストアップした環境変数を使用して、アプリケーションを起動します。

1. （省略可) または、提供されているインストール スクリプトを使用して、AWS Distro for OpenTelemetry .NET 自動計測パッケージのインストールとセットアップに役立てることができます。

   Linux の場合は、GitHub リリース ページから Bash インストール スクリプトをダウンロードしてインストールします:

   ```
   # Download and Install
   curl -L -O https://github.com/aws-observability/aws-otel-dotnet-instrumentation/releases/latest/download/aws-otel-dotnet-install.sh
   chmod +x ./aws-otel-dotnet-install.sh
   ./aws-otel-dotnet-install.sh
   # Instrument
   . $HOME/.otel-dotnet-auto/instrument.shexport OTEL_RESOURCE_ATTRIBUTES=service.name=dotnet-service-name
   ```

   Windows Server の場合は、次のように、GitHub リリースページから PowerShell のインストールスクリプトをダウンロードしてインストールします。

   ```
   # Download and Install
   $module_url = "https://github.com/aws-observability/aws-otel-dotnet-instrumentation/releases/latest/download/AWS.Otel.DotNet.Auto.psm1"
   $download_path = Join-Path $env:temp "AWS.Otel.DotNet.Auto.psm1"
   Invoke-WebRequest -Uri $module_url -OutFile $download_path
   Import-Module $download_path
   Install-OpenTelemetryCore
   # Instrument
   Import-Module $download_path
   Register-OpenTelemetryForCurrentSession -OTelServiceName "dotnet-service-name"
   Register-OpenTelemetryForIIS
   ```

   AWS Distro for OpenTelemetry .NET 自動計測パッケージの NuGet パッケージは、[公式 NuGet リポジトリ](https://www.nuget.org/packages/AWS.Distro.OpenTelemetry.AutoInstrumentation) にあります。手順については、「[README ファイル](https://github.com/aws-observability/aws-otel-dotnet-instrumentation/blob/main/src/AWS.Distro.OpenTelemetry.AutoInstrumentation/nuget-readme.md)」を確認してください。

------

# PromQL で提供されたメトリクスを有効にする
<a name="CloudWatch-OTelEnrichment"></a>

OTel エンリッチメントを有効にして、[サポートされている AWS リソース](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/UsingResourceTagsForTelemetry.html)の提供されたメトリクスを PromQL 経由でクエリ可能にすることができます。有効にすると、リソース識別子ディメンションを含むメトリクス (InstanceId ディメンションを使用した EC2 CPUUtilization など) は、リソース ARN とリソースタグラベルで強化され、PromQL を使用してクエリ可能になります。

強化されたメトリクスは、元のメトリクス名と CloudWatch ディメンションを保持し、以下を追加します:
+ **[リソース属性]** – リソース ARN (`cloud.resource_id`)、クラウドプロバイダー、リージョン、アカウント ID。
+ **[計装スコープ]** – ソースサービスを識別し、メトリクスを OTel エンリッチドとしてマークします。
+ **[リソースタグ]** – リソースに関連付けられたすべての AWS リソースタグ。PromQL ラベルとしてクエリできます。

元の従来の CloudWatch メトリクスは変更されず、既存の CloudWatch API を介して引き続き使用できます。

## 提供されたメトリクスの OpenTelemetry エンリッチメントを有効にする
<a name="CloudWatch-OTelEnrichment-Enable"></a>

OTel エンリッチメントを開始する前に、アカウントの[テレメトリでリソースタグを有効にする](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/EnableResourceTagsOnTelemetry.html)必要があります。

CloudWatch コンソール、AWS CLI、または AWS SDK を使用して、特定のリージョンでアカウントの OTel エンリッチメントを有効にできます。

次のオペレーションにはアクセス許可が必要です: `cloudwatch:StartOTelEnrichment`

**AWS メトリクスの OTel エンリッチメントを有効にするには (CloudWatch コンソール)**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. ナビゲーションペインで、**[CloudWatch]** を選択し、次に **[設定]** を選択します。

1. **[AWS メトリクスの OTel エンリッチメントを有効にする]** ペインで、機能をオンに切り替えます。

**AWS CLI**

```
aws cloudwatch start-o-tel-enrichment
```

複数のリージョン全体で有効にするには、対象の各リージョンで API を呼び出します。

エンリッチメントを有効にすると、PromQL を介して提供されたメトリクスのクエリを開始できます。以下を参照してください: [PromQL を使用した提供された AWS メトリクスのクエリ](CloudWatch-PromQL-Querying.md#CloudWatch-PromQL-Querying-Vended)。