구조화된 로깅 및 분산 추적
구조화된 로그, 상관관계 ID, 분산 추적을 사용해 배포 상태를 관찰 가능하게 만들고 CI/CD 파이프라인의 여러 서비스에 걸친 오류를 디버깅해 보세요.
구조화된 로깅 및 분산 추적은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
관측 가능성의 세 가지 축
관측 가능성은 세 가지 축, 즉 메트릭, 로그, 트레이스를 기반으로 합니다.
- 메트릭은 문제가 있다는 것을 알려 줍니다
- 로그는 무슨 일이 일어났는지 알려 줍니다
- 트레이스는 요청 흐름의 어디에서 문제가 발생했는지 알려 줍니다
파이프라인 모니터링은 대개 메트릭에서 시작하며, 이 학습에서는 로그와 트레이스를 더 자세히 살펴봅니다.
구조화된 로그 기록이 필요한 이유
일반 텍스트 로그 한 줄은 조회하기 어렵습니다. 구조화된 로그는 일반적으로 JSON 형식으로 작성되며 이름이 지정된 필드를 포함하는, 기계가 읽을 수 있는 기록입니다.
로키, 엘라스틱서치 또는 데이터독과 같은 도구를 사용하면 구조화된 로그를 필터링하고 집계하며 이를 기반으로 알림을 생성할 수 있습니다.
일반 형식과 구조화 형식
구조화되지 않은 한 줄과 구조화된 한 줄을 비교해 보십시오. 구조화된 버전에서는 status=500을 직접 조회할 수 있습니다.
// Unstructured
Deploy failed for service api at 12:01
// Structured (JSON)
{"level":"error","event":"deploy_failed","service":"api","status":500}JSON 로그 생성
대부분의 프로그래밍 언어에는 구조화된 로그 기록기가 있습니다. 핵심은 이어 붙인 문자열이 아니라 객체를 기록하는 것입니다.
const log = (level, event, fields) =>
console.log(JSON.stringify({ level, event, ...fields }));
log('info', 'deploy_started', { service: 'api', version: '1.4.2' });상관관계 ID
하나의 배포는 여러 단계와 서비스를 거칩니다. 상관관계 ID(또는 트레이스 ID)는 하나의 논리적 작업에 속한 모든 로그 한 줄에 연결되는 고유한 값입니다.
해당 ID로 검색하면 여러 구성 요소에 걸친 전체 흐름을 재구성할 수 있습니다.
- name: Set correlation id
run: echo "TRACE_ID=$(uuidgen)" >> $GITHUB_ENV로그 수준
자세한 정도와 알림을 조정할 수 있도록 일관된 로그 수준을 사용하십시오:
debug— 상세한 진단 정보info— 정상 이벤트warn— 복구 가능한 문제error— 주의가 필요한 실패
error에는 알림을 설정하고, info는 샘플링하며, 프로덕션에서는 debug를 끄십시오.
분산 트레이싱이란 무엇인가
분산 트레이싱은 여러 서비스를 통과하는 요청을 추적합니다. 각 단계는 span이며, span들이 서로 연결되어 하나의 트레이스를 구성합니다.
트레이스는 시간 순서와 함께 느리거나 오류가 발생한 span을 보여 주므로 마이크로서비스 배포에서 매우 유용합니다.
OpenTelemetry
OpenTelemetry (오텔)은 트레이스, 메트릭, 로그를 생성하기 위한 공급업체 중립적 표준입니다.
오텔 SDK로 앱을 계측하고 자이거, 템포 또는 클라우드 APM과 같은 백엔드로 내보내십시오.
import { trace } from '@opentelemetry/api';
const tracer = trace.getTracer('deploy-service');
const span = tracer.startSpan('deploy');
// ... do work
span.end();파이프라인 자체 추적
앱뿐 아니라 파이프라인도 추적할 수 있습니다. 도구는 작업과 단계마다 하나의 span을 생성하므로 CI/CD에서 어느 단계가 병목인지 확인할 수 있습니다.
이를 통해 긴 워크플로를 시간이 어디에 사용되는지 보여 주는 시각적 폭포 형태로 바꿀 수 있습니다.
중앙 집중식 집계
모든 작업과 서비스에서 로그와 트레이스를 중앙 플랫폼으로 전송하십시오. CI 실행기는 일시적이므로 실행기가 남긴 로그는 실행이 끝나면 사라집니다.
실행 중에 로그 수집 대상으로 전달해야 실행기가 사라진 후에도 사후 분석을 수행할 수 있습니다.
신호에서 조치까지
관측 가능성은 조치를 이끌어 낼 때만 유용합니다. 오류율과 느린 트레이스를 보여 주는 대시보드를 만들고, 중요한 패턴을 이미 구성한 알림에 연결하십시오.
목표는 하나의 알림에서 해당 문제를 설명하는 트레이스와 구조화된 로그 한 줄로 바로 이동하는 것입니다.
간단 확인
로그와 트레이스에 대한 이해도를 확인해 보십시오.
복습
로그와 트레이스를 사용하여 관측 가능성을 향상하는 방법을 배웠습니다.
- 일관된 수준으로 구조화된 (JSON) 로그를 생성하십시오
- 하나의 작업을 추적할 수 있도록 상관관계 ID를 연결하십시오
- 분산 트레이싱과 OpenTelemetry를 사용하여 느리거나 실패한 span을 찾으십시오
- 일시적인 실행기가 사라지기 전에 모든 데이터를 중앙에서 집계하십시오
이렇게 하면 메트릭 및 알림을 보완하여 파이프라인 전체를 관측할 수 있습니다.
자주 묻는 질문
“구조화된 로깅 및 분산 추적” 강의는 무료인가요?
네 — “구조화된 로깅 및 분산 추적” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“구조화된 로깅 및 분산 추적”에서 뭘 배우나요?
구조화된 로그, 상관관계 ID, 분산 추적을 사용해 배포 상태를 관찰 가능하게 만들고 CI/CD 파이프라인의 여러 서비스에 걸친 오류를 디버깅해 보세요. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“구조화된 로깅 및 분산 추적” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 파이프라인 모니터링 전략
- 외부 서비스 통합
- 알림 및 경고 설정
- 구조화된 로깅 및 분산 추적