메트릭 생성기(metrics-generator)는 Tempo의 선택적인 구성 요소입니다.
기본 helm 차트에 추가해야 합니다.
Metrics-generator는 Tempo의 ingest 경로에서 사용 가능한 데이터를 활용하여 trace에서 메트릭을 생성하여 추가 가치를 제공합니다.
메트릭 생성기는 내부적으로 일련의 process들을 실행합니다. 각 프로세서는 Span을 수집하고 메트릭을 생성합니다. 각 프로세서는 각각 다른 메트릭 정보들을 생성합니다.
현재 다음과 같은 프로세서를 사용할 수 있습니다:
서비스 그래프는 분산 시스템 내의 서비스 간 관계를 나타내는 것입니다.
이 서비스 그래프 프로세서는 trace를 분석하여 서비스 간의 관계를 나타내는 map을 작성하며 엣지(edge)를 찾는 것을 목표로 합니다.
edge란 부모-자식 관계인 Span으로, 두 서비스 간의 점프(예: 요청)를 나타냅니다. 요청의 양과 지속 시간은 메트릭으로 기록되며, 이를 사용하여 그래프를 나타냅니다.
Span 메트릭 프로세서는 Span에서 RED(Request, Error, Duration) 메트릭을 유도합니다.
Span 메트릭 프로세서는 각 차원 조합별로 Span의 총 개수와 지속 시간을 계산합니다. 차원은 서비스 이름, 작업, Span 종류, 상태 코드 및 Span에 있는 태그 또는 속성일 수 있습니다. 사용 가능한 차원이 많을수록 생성된 메트릭의 카디널리티가 높아집니다.
메트릭 생성기는 주기적으로 메트릭을 remote_write
엔드포인트로 보내는 Prometheus 에이전트를 실행합니다. remote_write
엔드포인트는 구성 가능하며, Prometheus 호환 엔드포인트일 수 있습니다. 쓰기 간격은 metrics_generator.registry.collection_interval을 통해 제어할 수 있습니다.
멀티 테넌시가 활성화된 경우 메트릭 생성기는 remote-write 엔드포인트로 원본 요청의 X-Scope-OrgID 헤더를 전달합니다.
tempo의 values.yaml 에서 아래와 같이 설정을 진행합니다.
metricsGenerator:
enabled: true
config:
storage:
remote_write:
- url: http://prom-kube-prometheus-stack-prometheus.monitoring:9090/api/v1/write
send_exemplars: false
global_overrides:
metrics_generator_processors:
- service-graphs
prometheus:
enableFeatures:
- remote-write-receiver
enableRemoteWriteReceiver: true
grafana:
additional_datasource:
- name: Tempo
type: tempo
uid:
url: http://tempo-query-frontend-discovery.tempo:3100
access: proxy
basicAuth: false
jsonData:
serviceMap:
datasourceUid: 'prometheus'
// 여기 아래의 nodeGraph 설정이 true로 되어 있어야 함.
nodeGraph:
enabled: true
질문 남깁니다!
따로 참고하신 자료가 있으신가요 ??