콘텐츠로 이동
Study Note관측

6. 용어 사전

각 장 첫머리 상자에서 흩어져 나온 말들을 신호별로 다시 모은다

이 장의 사용법3개
신호
이 덱의 뼈대인 세 신호 — 메트릭 · 로그 · 트레이스([1장](/observability/01-signals/)). 아래 표도 그 순서다.
장 링크
각 항목의 오른쪽 열은 그 말이 실제로 쓰이는 장이다. 뜻만 필요하면 여기서, 맥락이 필요하면 그 장으로 간다.
질의 언어 셋PromQL · LogQL · TraceQL
각 신호 절의 아래쪽에 문법 요약을 따로 뒀다. 셋의 모양이 닮은 것을 나란히 보면 외우기 쉽다.
용어풀 이름뜻장
관측 가능성Observability밖에서 나오는 신호로 안을 알아내는 성질0
메트릭 · 로그 · 트레이스—얼마나 / 무슨 일이 / 어디서 느렸나1
시계열Time Series이름 + 라벨 조합 하나에 붙은 (시각, 값) 수열1
카디널리티Cardinality라벨 조합의 가짓수. 스택을 죽이는 1번 원인1 · 2 · 3
리텐션 · 보존Retention데이터를 며칠 들고 있을지. 저장소 크기와 직결된다1
스크랩Scrape대상의 /metrics를 주기적으로 긁어 오는 것1 · 2
REDRate · Errors · Duration서비스를 재는 세 지표. 알림은 여기에 건다2
USEUtilization · Saturation · Errors자원을 재는 세 지표. 조사용이지 알림용이 아니다2
구조화 로그Structured LoggingJSON 등 기계가 파싱할 수 있는 로그. 라벨을 절제할 수 있게 하는 전제3
LGTM 스택Loki · Grafana · Tempo · MimirGrafana Labs 관측 묶음. 이 덱은 Mimir 대신 Prometheus0
용어풀 이름뜻장
수집기Collector · Agent신호를 모아 저장소로 보내는 중간 프로세스1
Grafana Alloy—로그·메트릭·트레이스 통합 수집기. Promtail은 EOL1 · 3
OTelOpenTelemetry계측·수집의 벤더 중립 표준 (SDK · 프로토콜 · 컬렉터)0 · 4
OTLPOpenTelemetry ProtocolOTel의 전송 프로토콜. 트레이스·메트릭·로그 모두 이걸로4
relabel리라벨링수집 단계에서 라벨을 만들거나 잘라 내는 규칙2 · 3
discovery · source · write—Alloy 파이프라인의 단계 — 찾고 · 읽고 · 보낸다3
용어풀 이름뜻장
pull 모델—대상을 직접 긁는 방식. up == 0이 곧 “죽었다”2
counter카운터늘기만 한다. 재시작하면 0으로. _total로 끝난다 — 반드시 rate()로 본다2
gauge게이지오르내리는 현재값. 그대로 그린다2
histogram히스토그램관측값을 구간(le)별로 센 것. _bucket·_sum·_count 세 쌍2
summary서머리앱이 미리 계산한 분위수. 인스턴스끼리 합칠 수 없다2
leless or equal히스토그램 버킷의 경계 라벨. 집계할 때 반드시 남긴다2
exporter익스포터메트릭을 Prometheus 형식으로 내주는 프로그램2
node-exporter · kube-state-metrics—노드 상태 / 쿠버네티스 오브젝트 상태를 내주는 두 exporter2
ServiceMonitor · PodMonitor—“이걸 긁어라”를 선언하는 CRD2
PrometheusRule—알림·기록 규칙을 선언하는 CRD2
기록 규칙Recording Rule무거운 쿼리를 미리 계산해 새 메트릭으로 저장2
kube-prometheus-stack—Operator + Prometheus + Alertmanager + Grafana 묶음 Helm 차트2
TSDBTime Series Database시계열 저장소. Prometheus는 로컬 디스크에 쓴다2
Alertmanager—알림의 라우팅 · 묶음 · 억제 · 침묵2
inhibit · silence억제 · 침묵상위 알림이 있을 때 하위를 묻기 / 일시적으로 끄기2
Watchdog—항상 발화하는 알림. 알림 경로가 죽은 것을 알아채는 장치2
Thanos · Mimir—메트릭 장기 저장소. 필요해지기 전에 넣지 않는다2
쓰는 것무엇
이름{라벨="값"}순간 벡터 — 지금 시점의 값들
이름[5m]범위 벡터 — 지난 5분치. 함수 안에서만 쓴다
rate(x[5m]) · increase(x[1h])counter의 초당 속도 · 구간 증가량
sum by (l) (...) · sum without (l) (...)라벨을 남기고 / 지우고 합친다
histogram_quantile(0.99, sum by (le, …) (rate(…_bucket[5m])))p99. le를 남기는 것이 핵심
predict_linear(x[6h], 24*3600) < 0추세를 외삽 — “찰 것 같다”
absent(up{job="x"})시계열이 아예 없을 때 참
topk(5, …)상위 5개

순서는 언제나 rate → sum by → histogram_quantile.

용어풀 이름뜻장
스트림Stream라벨 조합 하나 = 스트림 하나. 로그는 스트림 단위로 뭉친다3
chunk청크스트림의 로그를 뭉쳐 압축한 덩어리. 오브젝트 스토리지로 간다3
LogQLLog Query LanguageLoki 질의 언어. 네 단계로 읽는다 — 아래 요약3
라인 필터 · 파서Line Filter · Parser본문 문자열로 거르기 / 필드를 꺼내기. 필터가 먼저여야 빠르다3
compactor—chunk 정리와 보존 기간 적용을 맡는 컴포넌트3
monolithic · SSD · microservices—Loki 배포 모드 셋. monolithic → SSD 순으로 간다3
테넌트TenantX-Scope-OrgID로 가르는 격리 단위. 팀·규정별 분리에3
ingester · querier—인입을 받아 chunk로 만드는 쪽 / 질의를 처리하는 쪽3
ruler—로그로 알림 규칙을 평가하고 Alertmanager로 보내는 컴포넌트3 · 5
단계쓰는 것무엇
① 스트림 선택{namespace="prod", app="api"}필수. 읽을 chunk의 범위
② 라인 필터|= != |~ !~본문 문자열로 거른다. 파서보다 앞에
③ 파서| json | logfmt | pattern | regexp필드를 꺼낸다
④ 라벨 필터| status >= 500꺼낸 필드로 다시 거른다
④ 출력| line_format "{{.msg}}"보이는 줄을 다시 조립
④ 집계sum by (app) (rate({…}[5m]))로그를 세어 그래프로
④ 숫자 집계quantile_over_time(0.99, {…} | json | unwrap duration_ms [5m])꺼낸 필드를 숫자로

③ 트레이스 — Tempo와 OpenTelemetry

섹션 제목: “③ 트레이스 — Tempo와 OpenTelemetry”
용어풀 이름뜻장
트레이스 · 스팬Trace · Span요청 하나의 여정 / 그 안의 구간. 트리로 쌓인다4
trace_id · parent_span_id—같은 요청을 묶는 값 / 트리 계층을 만드는 값4
리소스 속성Resource Attributes프로세스 전체에 붙는 꼬리표 (service.name · k8s.pod.name)4
스팬 속성Span Attributes그 구간에만 붙는 꼬리표 (http.route · db.statement)4
span kind—server · client · producer · consumer · internal4
컨텍스트 전파Context Propagation서비스 사이로 트레이스 ID를 넘기는 것 (traceparent)4
자동 계측Auto-instrumentation에이전트가 HTTP·DB 호출을 알아서 잡는 방식4
head · tail 샘플링—시작할 때 결정 / 끝나고 결과를 보고 결정4
TraceQL—Tempo 질의 언어 — 아래 요약4
서비스 그래프Service Graph트레이스에서 자동 생성한 “누가 누구를 부르나” 지도4
스팬 메트릭Span Metrics트레이스에서 뽑아낸 요청 수·지연·에러율4
쓰는 것무엇
{ duration > 2s }스팬 자체의 값 — duration · status · name은 접두사가 없다
{ resource.service.name = "orders" }프로세스 꼬리표로 고르기
{ span.http.route = "/orders" }구간 꼬리표로 고르기
A >> B · A > BB가 A의 자손 / 직계 자식인 트레이스
{ … } | count() > 3조건에 맞는 스팬이 3개 이상 — N+1 질의 찾기
| select(span.db.statement)결과 표에 이 필드를 같이 보여 준다
용어풀 이름뜻장
데이터소스Data SourceGrafana가 붙는 저장소 하나. uid로 서로를 참조한다5
프로비저닝Provisioning대시보드·데이터소스를 파일·CRD로 미리 넣는 것5
Explore탐색질의를 그때그때 던지는 화면. 분할 화면이 조사의 핵심 도구5
derived field파생 필드로그에서 값을 뽑아 다른 데이터소스로 링크. trace_id → Tempo5
exemplar표본 링크메트릭 한 점에 매달린 대표 트레이스 ID. 그래프 → 트레이스1 · 5
trace to logs—트레이스 화면에서 그 서비스·시각의 로그로 가는 설정5
템플릿 변수Template Variable$service 드롭다운. 대시보드 개수를 억누르는 장치5
Unified Alerting통합 알림Grafana 자체 알림. Alertmanager와 역할이 겹친다5
주제어디에
Pod · Deployment · Service · PV/PVC · 리소스 요청·제한CKA 덱
오브젝트 스토리지 · 버킷 · path-style · 라이프사이클온프렘 덱 6장
CloudNativePG · WAL · PITR (Grafana의 DB)온프렘 덱 7장
oauth2-proxy · 깨진 유리 계정 · OIDC claim온프렘 덱 5장 · Keycloak 덱
인프라 노드 배치 · 용량 계획온프렘 덱 8장 · 12장
egress 프록시 · 사내 CA온프렘 덱 1장 · 4장
토픽 · 파티션 · 컨슈머 그룹 (Tempo 3.0의 인입 경로)Kafka 덱
systemd 저널 · 리눅스 로그 로테이션서버 관리 덱