| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
Tags
- elasticsearch
- Kafka
- tech
- 쿠버네티스
- 코테
- 엘라스틱서치
- OS
- etcd
- 데이터엔지니어
- 스프링빈
- 커널
- 운영체제
- k8s
- 대규모시스템
- 분산시스템
- 시스템호출
- fork()
- 인프라
- Data Engineering
- Pub/Sub
- it
- 개발자
- devsecops
- Kubernetes
- 개발
- Observability
- SRE
- Monitoring
- Network
- AWS
Archives
- Today
- Total
모래성 말고 철옹성
[Elasticsearch] Elastic APM 본문
Elastic APM 이란
- Elastic 플랫폼 위에 구축된 APM(Application Performance Monitoring) 시스템
- 소프트웨어 서비스를 실시간으로 모니터링할 수 있게 함
- 응답 시간에 대한 자세한 성능 정보를 수집
- 예: 데이터베이스 쿼리, 캐시 호출, HTTP 요청 등
- 처리되지 않은 오류 및 예외를 자동으로 수집
- 오류는 주로 stacktrace를 기반으로 그룹화
- 새로운 오류가 발생했을 때 쉽게 식별하고, 발생 횟수도 파악할 수 있음
- 호스트 수준의 기본 메트릭과 에이전트 별 메트릭 모니터링도 지원
Elastic APM 의 구성요소
- Elastic APM 은 네 가지 요소로 구성
- APM agents
- Elastic APM integration
- Elasticsearch
- Kibana
- 일반적으로 이 네 가지 구성 요소로 구성된 아키텍처에는 두 가지 방법 존재
Elastic APM 아키텍처

- 서비스단에서 APM 에이전트 실행
- 데이터를 중앙 APM 통합 시스템으로 전송
- 서비스는 기술에 맞는 APM 에이전트로 계측
- Go, Java, Python 등 언어 및 프레임워크에 맞춰 사용
- Elastic Stack 은 Elastic Cloud 또는 self-managed 방식 둘 다 가능

- 서비스가 있는 서버에서 APM 에이전트 + APM 통합 실행
- APM 확장(Scale-out)이 필요할 때 사용
- 중앙 Elastic Agent를 통해 등록 및 관리
Data model
- Elastic APM 에이전트는 다양한 유형의 이벤트를 수집
- 이벤트는 아래와 같은 유형
- Span: 실행된 특정 코드 경로에 대한 정보를 포함
- Transactions: 서비스나 애플리케이션을 계측하는 Elastic APM 에이전트가 수집한 이벤트를 설명
- Errors: 예외(exception)나 로그 메시지가 일치하는 오류들을 그룹화
- Metrics: 기본적인 호스트 수준 및 에이전트 관련 메트릭을 제공
분산 추적 (Distributed Tracing)
- trace는 공통 루트를 가진 트랜잭션과 스팬의 집합
- 분산추적 (distributed tracing)은 MSA 전반의 성능을 하나의 뷰에서 분석할 수 있도록 도와줌
분산 추적을 어떻게 가능하게 하는 지?
- Elastic APM은 모든 요청을 추적할 수 있음
- 초기 fronted 요청부터 시작하여
- backend와 쿼리까지 추적
- 헤더에 트레이스 컨텍스트 추가
traceparent: xxx---- // header
9kdfkqg9qjqkjfb09q4jklrkjqer= // trace id
ythjk3k4kbnkf // parent span id
- trace id가 요청 간에 전파
- 동일한 트레이스 ID를 가진 요청은 개별 서비스에서 하나의 트레이스 개요로 연결
실사용자 모니터링(Real User Monitoring, RUM)
- 웹 브라우저와 같은 클라이언트에서 사용자의 상호작용을 캡처
- 대표적으로 JavaScript 에이전트
- APM 통합에서 RUM 엔드포인트를 활성화
- 애플리케이션에 대한 유용한 인사이트를 제공
- 클라이언트 측 애플리케이션 내의 성능 문제
- 서버 측 애플리케이션의 지연 시간
- 가장 많이 사용되는 브라우저, 디바이스 및 플랫폼 식별 등등
Head-based sampling vs Tail-based sampling

- Head-based sampling
- 기본적은 Elastic APM 샘플링 방식
- 트레이스가 시작될 때 무작위 샘플링 결정을 내리고, 이후의 각 서비스는 초기 결정을 그대로 유지
- 고정 비율 방식은 트래픽이 적은 애플리케이션에서 효율적
- ex. 전체 트랜잭션의 50%를 기록

- Tail-based sampling
- APM 통합 설정에서 테일 기반 샘플링(tail-based sampling)을 활성화하여 사용
- 샘플링 결정은 트레이스가 완료된 후 규칙이나 정책에 따라 이루어짐
- 대규모 트래픽 애플리케이션에서 더 세밀한 샘플링 제어를 제공
- ex.성공한 요청의 50%를 기록하고, 실패한 요청은 100% 기록
샘플링 비율
- 가장 좋은 샘플링 비율은? 정답은 X
- 샘플링은 데이터 특성, 애플리케이션 처리량, 데이터 보관 정책 등 여러 요인에 따라 상이함
- 다만, 에이전트를 전체 트랜잭션의 0.1(10%) 정도 기록하도록 설정하는 것이 보통 시작점
Reference
https://www.elastic.co/docs/solutions/observability/apm/transaction-sampling
반응형
'DevOps > Monitoring & Observability' 카테고리의 다른 글
| [Elasticsearch] Agent 종류와 작동 방식 (0) | 2025.08.11 |
|---|---|
| [Elasticsearch] Logs (2) | 2025.08.05 |
| [Elasticsearch] Fleet & Elastic Agent (1) | 2025.08.03 |
| [Elasticsearch] Uptime (2) | 2025.08.03 |
| [Elasticsearch] Observability 란 (1) | 2025.08.03 |
Comments