OpenTelemetry 배치 추적 검수, 한 번에 받은 메시지를 어떻게 연결할까
OpenTelemetry에서 한 번에 처리한 메시지의 생성 컨텍스트를 스팬 링크로 대조합니다. 부모 스팬, 누락·중복 링크, 단건 예외를 가상 입력 8건으로 검수합니다.
이 글을 쓴 알파카랩스카카오·네이버·쿠팡 출신, 재하청 0%, 대기업·공공기관 등 18개사+ 레퍼런스
2026년 11월 기준, OpenTelemetry 배치 추적은 메시지별 생성 컨텍스트를 스팬 링크로 대조합니다. 단건 처리에서는 메시지 쪽을 부모로 둘 수도 있습니다.
가상 주문 처리기에서 A와 B를 한 번에 받았습니다. 처리 기록은 남았는데, 추적 도구에서 A의 생성 기록만 찾을 수 있습니다. B가 실제로 누락됐는지 보려면 배치 입력 목록과 수집된 스팬 링크를 대조하는 것부터 시작합니다.
왜 첫 메시지의 부모만 보면 부족할까요?#
스팬은 수신이나 처리 같은 작업 하나의 추적 기록입니다. OpenTelemetry Tracing API에서 스팬은 부모를 최대 하나 가집니다. 다른 스팬의 컨텍스트는 여러 링크로 남길 수 있고, 링크된 스팬은 서로 다른 트레이스에 속할 수도 있습니다.
OpenTelemetry 메시징 스팬 규약은 수신 또는 처리 스팬이 담당하는 각 메시지의 생성 컨텍스트를 링크하라고 권고합니다. 생성 컨텍스트는 송신 측에서 메시지에 전달한 추적 정보입니다. 소비자 쪽 작업을 부모로 두는 예에서는 부모를 그대로 둔 채 A와 B를 각각 링크합니다.
배치 하나에서 어떤 입력을 검수할까요?#
다음 JSON은 가상 배치의 간단한 검수 기록입니다. A와 B가 서로 다른 생성 컨텍스트를 갖는 표본입니다. 각 트레이스 ID·스팬 ID 쌍을 아래에서는 A·B라는 이름으로 표시합니다. ‘누락’은 처리 결과가 아니라 이 예의 링크 인수 기준에서 빠진 대상을 가리킵니다.
{
"배치": ["A", "B"],
"부모 스팬": "소비자 작업",
"기대 생성 컨텍스트": ["A", "B"],
"관측 링크": ["A"],
"누락": ["B"]
}
| 가상 입력 | 관측 부모·링크 | 확인할 점 |
|---|---|---|
| A와 B가 함께 도착 | 소비자 작업, A·B 링크 | 두 입력의 출처를 추적할 수 있음 |
| B 링크가 누락된 배치 | 소비자 작업, A 링크 | B의 링크가 빠짐 |
| A를 부모로 지정하고 링크를 비움 | A가 부모, 링크 없음 | 배치 링크 기준에서 A·B가 빠짐 |
| A 링크를 두 번 기록 | 소비자 작업, A·A 링크 | 링크가 두 개여도 B는 빠짐 |
| A·B 외에 C 링크가 들어옴 | 소비자 작업, A·B·C 링크 | 기대 목록에 없는 C의 이유 확인 |
| B의 생성 컨텍스트를 전달받지 못함 | 소비자 작업, A 링크 | B의 추적 정보가 빠진 지점을 확인 |
| 연결할 입력이 없는 수신 | 소비자 작업, 링크 없음 | 연결할 메시지가 없음을 확인 |
| 단건 A의 생성 컨텍스트를 부모로 연결 | A가 부모, 링크 없음 | 단건 처리의 부모 연결 선택 확인 |
단건과 누락 예외는 어떻게 처리하나요?#
메시징 스팬 규약의 단건 예외는 단일 메시지의 처리 스팬에서 생성 컨텍스트를 부모로 쓰는 선택을 허용합니다. 현재 유효한 작업 스팬이 이미 부모 후보라면 메시지 쪽을 기본 부모로 쓰는 방법은 권장되지 않습니다. 그 선택을 사용했다면 현재 작업의 컨텍스트를 링크해 두 관계를 모두 남기라고 권고합니다.
B가 배치에 있는데 링크를 찾을 수 없다면 송신 측 전파, 소비자 추출, SDK가 수집한 원본 스팬, 저장소 표시를 순서대로 대조합니다. 예를 들어 B의 생성 컨텍스트를 전달받지 못한 경우에는 새 값을 만들어 채우지 않습니다. 배치의 추적 상태를 미확인으로 남기고 업무 자체의 결과는 처리 기록에서 따로 확인합니다. 여러 메시지가 동일한 생성 컨텍스트를 쓰면 링크 값과 개수만으로 각 메시지의 연결을 확정하기 어렵습니다. 계측에서 수집하기로 한 비식별 메시지 ID를 링크 속성이나 원본 처리 기록에서 대조합니다. 계측 라이브러리, 링크 제한 또는 샘플링 설정이 바뀌면 같은 표본을 다시 비교합니다. 실행 하나의 부모 전파는 OpenTelemetry 자식 프로세스 추적에서 확인할 수 있습니다.
규약과 실제 인수 범위는 어디서 확인하나요?#
- OpenTelemetry Tracing API v1.62.0, 2026년 10월 22일 UTC 공개, 11월 14일 확인. 부모·링크의 정의는 Tracing API 본문을 대조했습니다.
- OpenTelemetry 메시징 규약 v1.45.0, 2026년 11월 2일 UTC 공개, 11월 14일 확인. 본문 상태 표시는 Development입니다. 사용 중인 계측 도구가 생성하는 스팬 이름·링크는 실제 표본으로 확인합니다.
알파카랩스는 공개 서비스 안내에서 수집 실패, 재처리 범위와 운영 인수 조건을 협의한다고 설명합니다. 위 표는 가상 배치의 추적 기록 검수 예시입니다. 업무 자동화·API 연동 안내
OpenTelemetry 배치 스팬 링크 검수 FAQ#
스팬 하나에 부모를 두 개 둘 수 있나요?
스팬에 부모는 최대 하나입니다. 서로 다른 메시지의 생성 컨텍스트에 각각 연결해야 한다면 스팬 링크로 기록할 수 있습니다.
링크가 두 개면 배치 입력 두 개가 모두 연결됐나요?
링크 값이 같은 컨텍스트를 가리킬 수 있습니다. 각 트레이스 ID·스팬 ID를 기대 목록과 비교합니다. 여러 메시지가 생성 컨텍스트를 공유한다면 메시지 ID와 원본 처리 기록을 추가로 대조합니다.
배치에 있었던 B의 생성 컨텍스트가 없으면 어떻게 하나요?
생성·전달·추출 과정의 기록을 확인합니다. B의 출처를 확인할 수 없으면 추적을 미확인 상태로 표시합니다. B의 처리 성공 여부는 업무 기록에서 확인합니다.
단건에서 메시지 쪽 스팬을 부모로 쓸 수 있나요?
메시징 규약은 단건 처리에 이 선택을 허용합니다. 다른 유효한 작업 컨텍스트가 있는데도 그 선택을 사용하면, 그 작업 컨텍스트에 대한 링크도 남기라고 권고합니다.
화면에 링크가 없으면 계측 실패인가요?
SDK가 내보낸 스팬과 수집기·저장소에 남은 결과를 비교합니다. 링크가 처음부터 없었는지, 수집된 링크가 탐색 화면에 표시되지 않는지 확인합니다.
비식별 스팬으로 인수 범위를 맞춥니다#
가상 배치에 포함한 메시지 목록, 기대하는 생성 컨텍스트, 실제 수집한 스팬을 준비해 링크가 빠진 위치를 대조할 수 있습니다.
배치 추적의 인수 기준을 정리합니다
첫 범위 협의에서 비식별 배치와 수집 결과로 추적 인수표를 정리합니다. 소요 시간은 계측 도구와 연동 범위를 확인한 뒤 협의합니다.
배치 추적 인수표 초안 협의