

# Amazon CloudWatch 에이전트
<a name="CloudWatch-OTLPCloudWatchAgent"></a>

CloudWatch 에이전트는 OpenTelemetry Collector를 기반으로 구축되므로 이를 사용하여 OpenTelemetry 데이터를 수신하고 CloudWatch OTLP 엔드포인트로 전송할 수 있습니다. 단일 에이전트가 CloudWatch Application Signals 및 CloudWatch Enhanced Container Insights와 같은 엄선된 환경을 지원할 수도 있으므로 대부분의 고객에게 이는 OpenTelemetry 원격 측정을 CloudWatch로 전송하는 데 권장되는 방법입니다.

지금 에이전트를 통해 OpenTelemetry 데이터를 전송하려면 OpenTelemetry 수집기 구성을 YAML으로 제공하고 에이전트의 자체 구성에 추가합니다. CloudWatch 에이전트 구성 파일로 에이전트를 시작한 후 OpenTelemetry YAML 파일을 추가합니다.

```
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -c file:/tmp/agent.json -s
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config -c file:{{/tmp/otel.yaml}} -s
```

에이전트는 시작 시 2가지 구성 파일을 병합하고 해결된 구성을 로깅합니다. 에이전트가 자동으로 생성하는 파이프라인과의 병합 충돌을 방지하려면 OpenTelemetry YAML의 각 구성 요소 및 파이프라인 이름에 사용자 지정 접미사를 추가합니다(예: `otlphttp/cwagent`).

## 지원되는 OpenTelemetry 구성 요소
<a name="CloudWatch-OTLPCloudWatchAgent-Components"></a>

추가된 YAML 구성에서 다음 OpenTelemetry 구성 요소를 구성할 수 있습니다. 여기에 표시된 구성 요소 유형 이름을 YAML의 키로 사용합니다.


| 구성 요소 유형 | 사용 가능한 구성 요소 | 
| --- | --- | 
| 수신기 | `otlp`, `prometheus`, `statsd`, `collectd`, `jmx`, `hostmetrics`, `filelog`, `tcplog`, `udplog`, `jaeger`, `zipkin`, `kafka`, `kubeletstats` | 
| Processors | `batch`, `memory_limiter`, `filter`, `attributes`, `resource`, `resourcedetection`, `metricstransform`, `transform`, `cumulativetodelta`, `deltatocumulative`, `deltatorate`, `groupbyattrs`, `groupbytrace`, `k8sattributes`, `metricsgeneration`, `metricstarttime`, `probabilistic_sampler`, `span`, `tail_sampling` | 
| 내보내기 | `otlphttp`, `awsemf`, `awscloudwatchlogs`, `awsxray`, `prometheusremotewrite`, `debug` | 
| 확장 프로그램 | `sigv4auth`, `headers_setter`, `file_storage`, `health_check`, `pprof`, `zpages` | 

CloudWatch 에이전트는 AWS 대상에 원격 측정 쓰기만 지원합니다.

## 구성 예제
<a name="CloudWatch-OTLPCloudWatchAgent-Examples"></a>

다음 예제에서는 `otlphttp` 내보내기 및 `sigv4auth` 확장을 사용하여 각 신호를 해당 CloudWatch OTLP 엔드포인트로 전송합니다. 각 구성 요소와 파이프라인 이름은 `/cwagent` 접미사를 사용하여 에이전트가 자동으로 생성하는 파이프라인과의 충돌을 방지합니다. {{리전}}을 해당 AWS 리전으로 바꿉니다.

**Metrics**

```
receivers:
  otlp/cwagent:
    protocols:
      http:
        endpoint: 0.0.0.0:4318
processors:
  batch/cwagent: {}
exporters:
  otlphttp/cwagent:
    metrics_endpoint: https://monitoring.{{region}}.amazonaws.com/v1/metrics
    auth:
      authenticator: sigv4auth/cwagent
extensions:
  sigv4auth/cwagent:
    region: "{{region}}"
    service: "monitoring"
service:
  extensions: [sigv4auth/cwagent]
  pipelines:
    metrics/cwagent:
      receivers: [otlp/cwagent]
      processors: [batch/cwagent]
      exporters: [otlphttp/cwagent]
```

**로그**

```
receivers:
  otlp/cwagent:
    protocols:
      http:
        endpoint: 0.0.0.0:4318
exporters:
  otlphttp/cwagent:
    logs_endpoint: https://logs.{{region}}.amazonaws.com/v1/logs
    headers:
      x-aws-log-group: {{my-log-group}}
      x-aws-log-stream: default
    auth:
      authenticator: sigv4auth/cwagent
extensions:
  sigv4auth/cwagent:
    region: "{{region}}"
    service: "logs"
service:
  extensions: [sigv4auth/cwagent]
  pipelines:
    logs/cwagent:
      receivers: [otlp/cwagent]
      exporters: [otlphttp/cwagent]
```

**트레이스**

```
receivers:
  otlp/cwagent:
    protocols:
      http:
        endpoint: 0.0.0.0:4318
exporters:
  otlphttp/cwagent:
    traces_endpoint: https://xray.{{region}}.amazonaws.com/v1/traces
    auth:
      authenticator: sigv4auth/cwagent
extensions:
  sigv4auth/cwagent:
    region: "{{region}}"
    service: "xray"
service:
  extensions: [sigv4auth/cwagent]
  pipelines:
    traces/cwagent:
      receivers: [otlp/cwagent]
      exporters: [otlphttp/cwagent]
```

**참고**  
OTLP 추적 엔드포인트에 추적을 전송하기 전에 트랜잭션 검색이 활성화되어 있어야 합니다.