Observability in Practice

2026-03-20

Observability in Practice

Observability in Practice

이 문서는 로그와 메트릭 수집, 간단한 파이프라인 예시, 그리고 관찰 가능한 시스템을 설계할 때 주의할 점을 테스트하기 위한 글입니다.

Ingest (bash)

code snippet
# send a log line to a collector (example) echo '{"ts":"2026-03-20T00:00:00Z","level":"info","msg":"startup"}' | nc -w 1 metrics.example.local 10514

Parsing example (python)

code snippet
import json def parse_line(line: str): try: j = json.loads(line) return j except json.JSONDecodeError: return None sample = '{"ts":"2026-03-20T00:00:00Z","level":"info","msg":"startup"}' print(parse_line(sample))

Example JSON schema

code snippet
{ "timestamp": "2026-03-20T00:00:00Z", "level": "info", "message": "startup", "meta": { "service": "agent", "env": "dev" } }

Images & diagrams

Observability snapshot
Observability snapshot

System snapshot
System snapshot

Long discussion

시스템을 관찰 가능하게 만드는 것은 단순히 로그를 모으는 것을 넘습니다. 로그의 스키마, 표준화, 타임스탬프 정합성, 샘플링 전략, 그리고 지표의 cardinality 관리는 모두 설계 단계에서 고려되어야 합니다. 또한, 알림 기준과 레벨 설계는 false positive를 줄이는 데 중요합니다. 본 문서는 이러한 주제를 실험적으로 다루며, 작은 스니펫과 체크리스트로 구성되어 있습니다.

Checklist

  1. 로그에 일관된 타임스탬프가 있는가?
  2. 중요한 이벤트에 충분한 메타데이터가 포함되어 있는가?
  3. 샘플링 전략이 과도한 비용을 유발하지 않는가?

강조: 로그는 데이터이며, 올바르게 수집되어야만 가치를 발휘합니다.