분산 트레이싱이 끊기는 자리 · 전파 · 실습
끊긴 트레이스를 잇는다
목표
트레이스는 한 군데만 안 이어져도 통째로 쓸모없어집니다. 그런데 끊겨도
오류가 안 나기 때문에, 대시보드를 열어 보기 전까지는 아무도 모릅니다.
이 실습은 이미 끊겨 있는 서비스 셋을 주고 잇게 합니다.
시작
cp /opt/lab/trace/* . && chmod +x run.sh./run.sh # a → b → c 로 요청 하나를 흘린다python3 tree.py # 이어졌는지 본다파일
| 파일 | 하는 일 |
|---|---|
| svc.py | 서비스 하나. 버그가 하나 있다 |
| run.sh | 셋을 띄우고 요청 하나를 흘린다 |
| tree.py | 로그를 읽어 이어졌는지 판정한다 |
알아 둘 것
run.sh 는 서비스를 죽일 때 pkill -f svc.py 를 쓰지 않습니다. 그 패턴은
스크립트를 실행한 셸의 명령줄에도 걸려서 자기 자신을 죽입니다. PID 를
적어 두고 그것만 죽입니다.
traceparent
00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01│ │ │ ││ trace id (16바이트) 부모 span 플래그버전단계
1. 끊긴 것 확인 → 01-broken.txt
2. 어디서 왜 → 02-where.md
3. 잇기 → 채점기가 직접 돌려 확인
4. 형식 읽기 → 04-format.md
5. 샘플링 일관성 → 05-sampling.txt
6. 동시 요청 → 06-concurrent.txt
7. 정리 → 07-notes.md
단계 7개
- 끊긴 것을 눈으로 본다
- 어디서 왜 끊기는지 짚는다
- 하나로 잇는다
- traceparent 를 조각내 읽는다
- 샘플링은 한 번만 정한다
- 동시에 여러 개를 흘려도 안 섞이는가
- 세 가지를 정리한다