티스토리 뷰

검색 시스템

Elastic APM 설정 가이드

silbaram 2025. 10. 30. 21:55
728x90

Elastic APM 설정 가이드

Elastic APM은 엘라스틱 스택에 내장된 애플리케이션 성능 모니터링(Application Performance Monitoring) 시스템으로, 서비스 응답 시간, 데이터베이스 쿼리 시간, 캐시 호출 시간 등 다양한 항목을 실시간으로 모니터링하여 성능 문제를 감지하고 진단할 수 있게 해줍니다. APM을 통해 처리량(Throughput), 지연 시간(Latency), 에러 정보를 파악하고 분산 트레이싱을 통해 마이크로 서비스간 요청을 추적할 수 있습니다.

Elastic APM 구성 요소

Elastic APM은 다음과 같은 구성 요소로 이루어집니다.

  • APM 에이전트(APM agent): 애플리케이션 내에서 실행되며 성능과 오류 데이터를 수집하여 APM 서버로 전송합니다.
  • APM 서버(APM integration): 에이전트로부터 데이터를 수신하여 검증‧가공 후 Elasticsearch 문서 형식으로 변환합니다.
  • Elasticsearch: 수집된 APM 데이터를 저장하고 검색하는 데이터베이스 역할을 합니다.
  • Kibana: APM 데이터를 시각화하여 서비스별 트랜잭션, 스팬, 에러 등의 정보를 분석할 수 있게 해주는 UI를 제공합니다.

APM 서버 설치 및 설정

Elastic APM 서버는 독립 실행형 바이너리로 배포되며, 다음과 같은 단계로 설치할 수 있습니다.

  1. APM 서버 다운로드 및 압축 해제 – Elastic 공식 다운로드 사이트에서 운영체제에 맞는 APM 서버 패키지를 다운로드합니다. 예를 들어 macOS에서 버전 7.5.1을 다운로드하려면 다음 명령을 실행합니다.
curl -L -O https://artifacts.elastic.co/downloads/apm-server/apm-server-7.5.1-darwin-x86_64.tar.gz
tar xzvf apm-server-7.5.1-darwin-x86_64.tar.gz
cd apm-server-7.5.1-darwin-x86_64/
  1. apm-server.yml 설정 – APM 서버가 수집한 데이터를 어떤 Elasticsearch 인스턴스로 전송할지 지정하려면 apm-server.yml 파일을 수정합니다. 예를 들어 다음과 같이 output.elasticsearch.hosts 항목을 localhost:9200으로 설정하여 로컬 Elasticsearch로 데이터를 전송할 수 있습니다.
output.elasticsearch:
  hosts: ["localhost:9200"]
  1. APM 서버 실행 – 설정을 완료한 후 apm-server 실행 파일을 실행하면 APM 서버가 시작됩니다. 기본적으로 에이전트로부터의 데이터 수신을 위해 8200 포트를 사용하고, Elasticsearch에 9200 포트로 접속합니다. 필요하다면 명령줄 옵션이나 설정 파일을 통해 포트를 변경할 수 있습니다.

설정을 마쳤다면 Kibana의 APM 메뉴에서 “Check agent status” 버튼을 눌러 APM 서버가 정상적으로 동작하는지 확인할 수 있습니다.

APM 에이전트 설치 및 설정

서비스를 모니터링하려면 각 애플리케이션에 APM 에이전트를 설치해야 합니다. Elastic은 Java, Node.js, Python 등 다양한 언어에 대한 에이전트를 제공합니다. 여기서는 Spring 기반 Java 애플리케이션에서 APM 에이전트를 설정하는 예를 소개합니다.

  1. 에이전트 다운로드 – Maven Central 저장소에서 elastic-apm-agent 라이브러리를 다운로드합니다. Java 애플리케이션에서는 보통 elastic-apm-agent-<version>.jar 파일을 사용합니다 .
  2. 애플리케이션 실행 시 에이전트 로드 – 애플리케이션을 실행할 때 -javaagent 옵션을 추가하여 에이전트를 로드하고 환경 설정을 전달합니다. 예시는 다음과 같습니다:
java -javaagent:/path/to/elastic-apm-agent-<version>.jar \
     -Delastic.apm.service_name=my-application \
     -Delastic.apm.server_url=http://localhost:8200 \
     -Delastic.apm.secret_token= \
     -Delastic.apm.application_packages=com.example \
     -jar my-application.jar
  • service_name은 Kibana UI에서 서비스 이름으로 표시될 값입니다.
  • server_url에는 앞서 설치한 APM 서버의 주소(예: http://localhost:8200)를 입력합니다.
  • secret_token은 APM 서버에서 설정한 인증 토큰이 있을 경우 지정합니다.
  • application_packages는 모니터링할 패키지 경로를 지정하여 필요 없는 라이브러리 코드를 제외하고 애플리케이션 코드만 추적하도록 도와줍니다.
  1. 에이전트 상태 확인 – 애플리케이션을 실행한 뒤 Kibana APM UI에서 해당 서비스가 등록되어 있는지, 트랜잭션 데이터가 수집되는지 확인합니다. 문제가 있는 경우 로그에서 에이전트 초기화 오류나 네트워크 연결 오류 등을 점검합니다.

APM 활용 팁

Elastic APM을 활용하면 다음과 같은 이점을 얻을 수 있습니다:

  • 실시간 성능 모니터링 – HTTP 요청, 데이터베이스 쿼리, 캐시 호출 등 다양한 작업에 대한 응답 시간과 처리량을 실시간으로 확인할 수 있습니다.
  • 에러 추적과 분류 – 발생한 에러와 예외를 자동으로 수집하고 스택 트레이스를 기반으로 그룹화하여 에러 발생 패턴을 파악할 수 있습니다.
  • 분산 트레이싱 지원 – 마이크로서비스 환경에서 서비스 간 호출을 하나의 트레이스로 묶어 병목 지점을 찾을 수 있습니다.
  • 대시보드와 알림 – Kibana APM UI를 통해 대시보드를 구성하고, Elastic Alerting 기능을 활용해 특정 오류나 지연이 발생했을 때 알림을 받을 수 있습니다.

Elastic APM은 오픈 소스로 제공되며 기본 기능은 무료로 사용할 수 있습니다. 추가적인 보안이나 머신러닝 기반 기능은 유료 라이선스가 필요할 수 있으므로 프로젝트 요구사항에 맞춰 적절한 라이선스를 선택하세요.


이 글에서는 Elastic Stack 환경에서 APM 서버와 에이전트를 설치하고 기본적인 설정을 수행하는 방법을 살펴보았습니다. 실제 운영 환경에서는 서비스별로 적절한 리소스를 배정하고, 네트워크 구성과 보안을 검토한 뒤 모니터링 대시보드를 구성하는 것이 중요합니다. Elastic APM을 통해 애플리케이션의 성능을 체계적으로 모니터링하고 사용자 경험을 개선해 보세요.

728x90

'검색 시스템' 카테고리의 다른 글

ELK 알림 설정 가이드  (0) 2025.11.03
엘라스틱서치 아키텍처 및 기본 구성 가이드  (3) 2025.05.16
Elasticsearch Bool Query 란?  (1) 2025.04.23
elasticsearch 입문  (2) 2025.03.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함