추적
추적 (Tracing)
출처: Tracing
본문
추적
Traefik Proxy의 추적(tracing)은 시스템 내부에서 작업의 흐름을 추적하게 해 줘요. 트레이스(trace)와 스팬(span)을 이용하면 성능 병목을 찾아내고 속도 저하를 일으키는 애플리케이션을 정확히 짚어 응답 시간을 효과적으로 최적화할 수 있어요.
Traefik Proxy는 트레이스를 내보낼 때 OpenTelemetry를 사용해요. OpenTelemetry는 오픈소스 관찰성 프레임워크인데요, 트레이스를 OpenTelemetry 컬렉터(collector)로 보내면 컬렉터가 이를 Jaeger, Zipkin, Datadog 같은 다양한 백엔드로 다시 내보낼 수 있어요.
설정 (Configuration)
Traefik Proxy에서 추적을 활성화하려면 정적 설정 파일이나(Helm 차트를 쓴다면) Helm 값에 추적을 설정해야 해요. 다음 예시는 HTTP를 통해 트레이스를 컬렉터로 보내도록 OpenTelemetry 프로바이더를 구성하는 방법을 보여줘요.
구조화 (YAML)
tracing:
otlp:
http:
endpoint: http://myotlpcollector:4318/v1/traces
구조화 (TOML)
[tracing.otlp.http]
endpoint = "http://myotlpcollector:4318/v1/traces"
Helm 차트 값 (Helm Chart Values)
# values.yaml
tracing:
otlp:
enabled: true
http:
enabled: true
endpoint: http://myotlpcollector:4318/v1/traces
정보 (Info)
자세한 설정 옵션은 추적 참조 문서를 참고하세요.
라우터별 추적 (Per-Router Tracing)
특정 라우터에 대해 추적을 활성화하거나 비활성화할 수 있어요. 특정 라우트에서는 추적을 끄면서 전역으로는 켜두고 싶을 때 유용하죠.
특정 라우터에서 추적을 비활성화하는 예시를 볼게요:
구조화 (YAML)
http:
routers:
my-router:
rule: "Host(`example.com`)"
service: my-service
observability:
tracing: false
구조화 (TOML)
[http.routers.my-router.observability]
tracing = false
Kubernetes
# ingressoute.yaml
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: my-router
spec:
routes:
- kind: Rule
match: Host(`example.com`)
services:
- name: my-service
port: 80
observability:
tracing: false
Labels (레이블)
labels:
- "traefik.http.routers.my-router.observability.tracing=false"
Tags (태그)
{
// ...
"Tags": [
"traefik.http.routers.my-router.observability.tracing=false"
]
}
라우터에 observability 옵션이 정의되어 있지 않으면, 엔트리포인트의 관찰성 설정이나 전역 설정의 동작을 상속받아요.