IT/WEBWAS

OpenTelemetry로 EC2에 배포된 Java 애플리케이션 모니터링하기

동구멍폴로 2024. 7. 24. 00:51
반응형

OpenTelemetry는 분산 트레이싱, 메트릭 및 로그를 위한 오픈 소스 관측 도구입니다. 이번 포스트에서는 EC2 인스턴스에 배포된 Java 애플리케이션에 OpenTelemetry를 설정하고, 트레이스를 수집하는 방법을 알아봅니다.

1. Java 애플리케이션 설정

먼저, Java 애플리케이션을 설정하고 OpenTelemetry Java Agent를 사용하여 애플리케이션의 트레이스를 수집하는 방법을 알아보겠습니다.

OpenTelemetry Java Agent 다운로드

OpenTelemetry Java Agent를 다운로드합니다. 아래 명령어를 사용하여 최신 버전을 다운로드하세요.

wget https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v<version>/opentelemetry-javaagent.jar

여기서 은 사용할 OpenTelemetry Java Agent의 버전을 지정합니다.

2. Java 애플리케이션에 OpenTelemetry Java Agent 적용

Java 애플리케이션을 실행할 때 OpenTelemetry Java Agent를 적용합니다. 애플리케이션을 실행할 때 다음과 같이 명령어를 사용합니다.

java -javaagent:/path/to/opentelemetry-javaagent.jar \
     -Dotel.exporter.otlp.endpoint=http://collector:4317 \
     -jar myapp.jar

위 명령어에서 -javaagent 옵션을 통해 OpenTelemetry Java Agent를 적용하고, -Dotel.exporter.otlp.endpoint 옵션을 통해 Collector의 엔드포인트를 설정합니다.

3. OpenTelemetry Collector 설정

EC2 인스턴스에 OpenTelemetry Collector를 설치하고 구성합니다.

OpenTelemetry Collector 설치

Collector를 다운로드하고 실행 파일을 구성합니다. 아래 명령어를 사용하세요.

wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v<version>/otelcol_<os>_<arch>
chmod +x otelcol_<os>_<arch>
mv otelcol_<os>_<arch> /usr/local/bin/otelcol

여기서 <version>, <os>, <arch>는 사용 중인 OpenTelemetry Collector의 버전, 운영체제 및 아키텍처에 맞게 지정합니다.

OpenTelemetry Collector 구성 파일 작성
collector-config.yaml 파일을 작성합니다. 아래 예제는 Collector 구성 파일의 예입니다.

receivers:
  otlp:
    protocols:
      grpc:
      http:

exporters:
  logging:
  otlp:
    endpoint: "your-endpoint"

service:
  pipelines:
    traces:
      receivers: [otlp]
      exporters: [logging, otlp]

이 구성 파일은 OTLP 포맷의 데이터를 수신하고, 로깅 및 다른 OTLP 엔드포인트로 데이터를 전송하도록 설정합니다.

4. OpenTelemetry Collector 실행

Collector를 실행합니다. 아래 명령어를 사용하세요.

otelcol --config=collector-config.yaml

Collector가 설정된 구성 파일을 사용하여 실행됩니다.

5. 시스템 서비스로 OpenTelemetry Collector 설정 (선택 사항)

Collector를 시스템 서비스로 설정하여 자동으로 시작되도록 할 수 있습니다. 이를 위해 시스템 서비스 파일을 작성합니다.

시스템 서비스 파일 작성
/etc/systemd/system/otelcol.service 파일을 작성합니다.

[Unit]
Description=OpenTelemetry Collector
After=network.target

[Service]
ExecStart=/usr/local/bin/otelcol --config=/path/to/collector-config.yaml
Restart=always

[Install]
WantedBy=multi-user.target

서비스 시작 및 활성화

아래 명령어를 사용하여 서비스를 시작하고 활성화합니다.

sudo systemctl daemon-reload
sudo systemctl start otelcol
sudo systemctl enable otelcol

이제 OpenTelemetry Collector가 시스템 서비스로 설정되어 자동으로 시작됩니다.

6. 트레이스 확인

애플리케이션을 실행하고 Collector 로그를 통해 트레이스 데이터를 확인합니다. 아래 명령어를 사용하여 Collector 로그를 확인할 수 있습니다.

journalctl -u otelcol -f

Collector 로그를 통해 애플리케이션에서 수집된 트레이스 데이터를 확인할 수 있습니다.

결론

 이 포스트에서는 EC2에 배포된 Java 애플리케이션에서 OpenTelemetry를 사용하여 트레이스를 수집하고, OpenTelemetry Collector를 통해 데이터를 처리하는 방법을 설명했습니다. 이 과정을 통해 애플리케이션의 성능을 모니터링하고, 문제를 진단하는 데 도움이 될 것입니다.

 OpenTelemetry는 강력한 관측 도구이며, 다양한 언어와 환경에서 사용할 수 있습니다. 이를 통해 애플리케이션의 성능을 최적화하고, 더욱 신뢰성 있는 시스템을 구축할 수 있습니다.

반응형