

# 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 SDK가 자격 증명을 검색하는 방법에 대한 설명서](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 Agent 버전 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"
     ```
   + 로그를 내보낼 로그 그룹 및 로그 스트림(참고: ADOT를 실행하기 **전에** 생성해야 함)을 지정하도록 `OTEL_EXPORTER_OTLP_LOGS_HEADERS`를 설정하세요(`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. AWS Distro for OpenTelemetry Java 자동 계측 에이전트가 저장되는 경로를 지정하도록 `JAVA_TOOL_OPTIONS`를 설정하세요. 예제:

   ```
   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 Java 자동 계측 에이전트를 다운로드하세요. 다음 명령을 실행하여 인증서를 설치합니다.

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

   [aws-otel-js-instrumentation 릴리스](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"
     ```
   + 로그를 내보낼 로그 그룹 및 로그 스트림(참고: ADOT를 실행하기 **전에** 생성해야 함)을 지정하도록 `OTEL_EXPORTER_OTLP_LOGS_HEADERS`를 설정하세요(`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 릴리스](https://github.com/aws-observability/aws-otel-python-instrumentation/releases)에서 모든 릴리스 버전에 대한 정보를 볼 수 있습니다.

1. 추적을 OTLP 엔드포인트로 바로 전송하는 여러 내보내기 도구를 활성화하고 이 이점을 최적화하려면 애플리케이션을 시작하기 전에 다음 환경 변수를 사용하세요.

   **추적 및 로그 구성 모두에 대해 다음 환경 변수를 설정해야 합니다.**
   + `OTEL_PYTHON_DISTRO`\$1`aws_distro`
   + `OTEL_PYTHON_CONFIGURATOR`\$1`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"
     ```
   + 로그를 내보낼 로그 그룹 및 로그 스트림(참고: ADOT를 실행하기 **전에** 생성해야 함)을 지정하도록 `OTEL_EXPORTER_OTLP_LOGS_HEADERS`를 설정하세요(`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 릴리스](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
   ```

   [공식 NuGet 리포지토리](https://www.nuget.org/packages/AWS.Distro.OpenTelemetry.AutoInstrumentation)에서 AWS Distro for OpenTelemetry .NET 자동 계측 패키지의 NuGet 패키지를 찾을 수 있습니다. [README 파일](https://github.com/aws-observability/aws-otel-dotnet-instrumentation/blob/main/src/AWS.Distro.OpenTelemetry.AutoInstrumentation/nuget-readme.md)에서 지침을 확인해야 합니다.

------