| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 스택머신
- apm
- APM 만들기
- 피벗 추적
- vm번역기
- 메모리 세그먼트
- OTEL
- ec2
- s3
- 시간 윈도우
- 스트리밍 아키텍쳐
- 도커
- Terraform
- SpanId
- 마운트
- jack 문법
- 분산추적
- MySQL
- 리눅스
- 텀블링 윈도우
- vm머신
- InnoDB
- 실시간 스트리밍 데이터
- 스트리밍 데이터 아키텍쳐
- 핵심 데이터 모델링
- 밑바닥부터 만드는 컴퓨팅 시스템
- 구문 분석
- nandtotetris
- 추적 데이터 마이닝 파이프라인
- 컴퓨터 아키텍쳐
- Today
- Total
이것이 점프 투 공작소
피쳐 추출 시스템에 대해 알아보자 본문
추적 시스템에서 데이터 마이닝은 필수적인 작업입니다.
마이닝 작업 중 가장 보편적이고 구현하기 쉬운 작업 중 하나인 '피쳐 추출' 시스템과 각 요소들에 대해 간단히 알아보려고 합니다.
피쳐란?
'피쳐((feature))'는 단일 스팬에서 계산할 수 없는 하나 이상의 값을 계산하는 프로세스를 의미합니다.
피쳐 데이터들은 어떤게 있을까?
피쳐는 거의 실시간으로 계산됩니다.
따라서 APM은 이를 시계열로 보거나 추세를 모니터링하거나 경보를 제공하게 됩니다.
피쳐로 추출되어 보여지는 대표적인 데이터들은 아래와 같습니다.
- 추적의 총 대기 시간
- 추적 시간 시간
- 스팬 수
- 네트워크 호출 횟수
- 루트 서비스 및 해당 엔드포인트 이름
- 클라이언트 타입
- 대기 시간 분석: CDN, 백엔드, 네트워크, 스토리지 등
- 다양한 메타데이터: 클라이언트 호출 발신 국가, 요청을 처리하는 데이터 센터
데이터 마이닝 파이프라인 구성 요소
아래 그림은 데이터 마이닝 파이프라인 아키텍쳐와 실제 프레임워크를 사용한 예시 그림입니다.
agent와 추적 백엔드를 통해 들어온 데이터는 트리거에 의해 피쳐 추출기로 전달되고 집계 후 최종 storage에 도착합니다.


추적 완료 트리거
추적 완료 트리거는 Collector에 존재하며,
요청이 데이터 마이닝 파이프라인에서 처리할 준비가 되었다는 판단을 하는 구간입니다.
OTel에서는 주로 SpanProcessor((Batch))에서 OTLP Exporter로 전달되고 최종적으로 Collector로 전달하는데
이 과정은 Span을 전달하는 과정일 뿐입니다.
하지만 피쳐추출에서는 span이 아닌 trace에 대한 정보가 필요합니다.
따라서 Collector에서 trace가 종료되었는지 판단 후 파이프라인으로 보내야 합니다.
Trace 완료를 판단하는 방법
APM과 collector는 서로 다른 프로그램이기에 정확하게 trace의 종료 시점을 알 수 없기에 몇가지 기준으로 판단해야합니다.
collector에서는 전달받은 span을 버퍼로 모아두고 몇가지 기준을 가지고 해당 span이 trace가 완료되었는지 판단합니다.
가장 간단한 방법은 첫 스팬을 수집 후 해당 span에 대한 trace가 끝날 때 까지 일정 시간동안 무작정 기다리는 방법입니다.
추가적으로 대기시간, 최대 대기시간, 강제 flush 이벤트와 같은 기능들을 사용합니다.
먼저 이 방법의 단점은 네트워크 측면에서 p99 보다 더 높은 대기 시간을 일상적으로 경험하는 사용자가 있을 수 있는데,
이 경우에 대해서 너무 짧은 타임 윈도우를 사용하게 되면 이런 요청에 대한 실제 추적이 끝나기 전 트리거에서 trace가 끝났다고 판단하게 됩니다.
하지만 몇가지 개선점이 존재하는데,
하나는 부모 스팬에서 자식 스팬의 수를 collector에 같이 전달해주면 해당 값을 이용해 trace의 완료를 판단 할 수 있고,
또 하나는 과거 데이터를 머신러닝하여 해당 span의 trace 종료 시점을 판단하는 방법입니다.
피쳐 추출기
피쳐 추출기에서는 추적 결과를 수신하고, trace와 span에서 적절한 데이터를 추출 후 피처를 계산하는 비즈니스 로직이 실행됩니다.
collector로는 RPS, 에러율, 지연 히스토그램, 서비스 맵과 같은 기본적인 분석을 만들고
피쳐 추출기를 사용해서 원인 분석, 최적화, 병목/변화 감시, ML을 사용한 예측, 이상탐지와 같은 기능들을 알 수 있습니다.
집계 연산기 ((Agggregator))
추출기에서 추출한 피쳐들을 비즈니스 로직에 맞게 집계하여 수치로 변환시켜줍니다.
Ad-hoc 분석 ((임시 분석))
피쳐 추출을 위한 데이터 마이닝은 기본적으로 실시간 데이터들에 대한 값들입니다.
AWS의 athena 처럼 저장해둔 피쳐 데이터들을 기반으로 쿼리를 통해 원하는 가치를 탐색하는 분석 방법입니다.
-- 지난 30일 /checkout p95 추세
SELECT window_start, p95
FROM endpoint_agg_1m
WHERE service='checkout' AND route='/orders/{id}' AND method='GET'
AND window_start >= now() - INTERVAL 30 DAY
ORDER BY window_start;'APM만들기' 카테고리의 다른 글
| 피벗 추적에 대해 알아보자 (0) | 2025.08.03 |
|---|---|
| 분산추적의 샘플링에 대해서 알아보자 (0) | 2025.07.18 |
| 분산추적에서 다른 프로세스, 외부 서비스간 전파는 어떻게 이루어질까 (0) | 2025.06.29 |
| OpenTelemetry 프로젝트를 보며 공부하는 분산추적의 핵심요소들 (0) | 2025.06.20 |