1. APM 시스템 구성
APM에서 데이터를 수집하기 위해서는 Agent와 서버가 모두 필요하며 아래와 같은 시스템으로 구성
Elastic APM은 데이터를 수집 하기 위한 APM Agent와 수집된 데이터의 가공을 위한 APM Server로 구성
APM Server를 통해 수집된 데이터는 최종적으로 Elasticsearch에 적제되어 Kibana의 APM UI를 이용하여 조회 가능
- APM Agent
- 실시간으로 Performance 및 error 데이터를 수집 하여 APM Server로 전달
- APM 서버 연동 실패시 데이터 저장을 위한 memory buffer가 존재 함
- APM Server
- APM Agent에서 수집된 데이터에 대한 유효성 체크
- 수집된 데이터를 Elasticsearch의 Document 포멧으로 변환
- Elasticsearch
- APM 데이터에 대한 저장, 검색, 분석을 지원
- 성능 데이터에 대한 집계 기능 제공
- Kibana
- APM UI에서 데이터 필터링 및 Service, Trace, Trasaction, Error, Metric에 대한 Overview 및 상세 기능 제공
- Dashboard/Visualization을 이용하여 사용자가 원하는 형태로 데이터 가시화 가능
- APM Agent Configuration, Machine Learning 통합(일부 License 필요) 기능 지원
2. APM 데이터 모델
1. Transaction
- Application내에서 측정되는 최상위 작업 (ex. Server의 Request, Batch Job, Background Job 등)
- 데이터 구성
- Event Timestamp
- ID, type, name
- Event가 생성된 환경에 대한 데이터
환경환경별 수집 데이터
Server | environment, framework, language, etc. |
Host | architecture, hostname, IP, etc. |
Process | args, PID, PPID, etc. |
URL | full, domain, port, query, etc. |
User | (if supplied) email, ID, username, etc. |
2. Span
- 실행을 추적하기 위한 논리 작업 단위
- 실행되는 Code의 시작 및 소요시간 정보가 있음
- span 사이의 부모/자식 관계를 가질 수 있음
- 데이터 구성
- transaction.id, parent.id
- start time, duration
- name, type, stacktrace
3. Error
- Application에서 발생한 Error Exception정보 및 로그
- 데이터 구성
- Error 발생위치
- Stacktrace 정보
- Error Exception
- Error log
- transaction.id
- Error Event가 생성된 환경에 대한 데이터
- 환경환경별 수집 데이터
Server environment, framework, language, etc. Host architecture, hostname, IP, etc. Process args, PID, PPID, etc. URL full, domain, port, query, etc. User (if supplied) email, ID, username, etc.
4. Metric
- Agent Host에 대한 CPU, Memory 등의 기본 Metric 정보를 자동으로 수집
- JAVA의 JVM Metric이나 Go의 런타임 Metric도 수집 가능
5. Metadata
- Event에 대한 부가적인 정보
- 종류
- Label
Indexed Yes Elasticsearch type object Elasticsearch field labels Apply Transactions | Spans | Errors - Custom context
Indexed No Elasticsearch type object Elasticsearch field transaction.custom | error.custom Apply Transactions | Errors - User context
Indexed Yes Elasticsearch type keywords Elasticsearch field user.email | user.name | user.id Apply Transactions | Errors
'DevOps BootCamp > 모니터링' 카테고리의 다른 글
서비스 수준 목표 (0) | 2023.06.06 |
---|---|
모니터링 시스템 구축 - kub prometheus (0) | 2023.06.05 |
모니터링 시스템 구축 (0) | 2023.06.05 |
서비스 수준 목표(Service-level objective) (0) | 2023.06.05 |
모니터링 시스템의 메트릭 수집 방식 (0) | 2023.06.05 |