Tempo 활용 분산 추적 정보를 시각화

날아올라돼지야·2024년 8월 30일
0

이번 강의에서는 Loki 로그에서 Tempo로 바로 이동하여 분산 추적 정보를 시각화하는 방법을 설명하겠습니다. 이 기능을 통해 개발자는 로그에서 Trace ID를 찾아 Tempo를 통해 전체 추적 정보를 바로 확인할 수 있습니다.

1. Loki 데이터 소스 설정

먼저, GrafanaLoki 데이터 소스에서 Derived Fields 기능을 설정합니다. 이를 통해 로그에서 Trace ID를 추출하고, Tempo로 연결할 수 있습니다.

  • Grafana에서 Loki 데이터 소스를 선택합니다.
  • Loki 설정 페이지에서 Derived Fields 섹션으로 이동한 후 Add 버튼을 클릭하여 새로운 Field를 추가합니다.
  • Field Name에는 trace ID를 입력합니다.
  • Regex Pattern에는 로그에서 Trace ID를 추출할 수 있는 정규 표현식을 입력합니다.
([a-f0-9]{32})
  • 이 패턴을 통해 로그 메시지에서 Trace ID를 추출할 수 있습니다.

2. 정규 표현식 테스트

정규 표현식이 제대로 동작하는지 확인하기 위해 Test Regex 기능을 사용합니다.

  • Grafana의 다른 탭에서 로그를 열고 예시 로그 메시지를 복사합니다.
  • Test Regex 입력란에 로그 메시지를 붙여넣고, 패턴이 Trace ID를 제대로 추출하는지 확인합니다.

3. Tempo로의 내부 링크 설정

Trace ID를 추출한 후, 이를 Tempo로 연결하기 위해 내부 링크를 설정합니다.

  • Internal link 옵션을 활성화한 후, Link targetTempo로 설정합니다.
  • Query value에는 $.value.raw를 입력합니다.
$_.value.raw
  • 이 설정을 통해 Trace IDTempo로 전달하여 해당 Trace ID에 대한 추적 정보를 조회할 수 있습니다.

4. Derived Fields 자동화

Grafana UI에서 설정한 Derived Fields 설정을 datasource.yml 파일에 추가하여 자동화할 수 있습니다. 이렇게 하면 Grafana가 시작될 때 자동으로 이 설정이 적용됩니다.

  • datasource.yml 파일에서 Loki 데이터 소스 설정에 Derived Fields 구성을 추가합니다.
derivedFields:
  - datasourceUid: tempo
    matcherRegex: "([a-f0-9]{32})"
    name: trace ID
    internalLink: 
      url: "/explore?left=%7B\"datasource\":\"tempo\",\"queries\":[{\"query\":\"trace_id%3D$.__value.raw\"}]%7D"
  • 위 설정은 Trace ID를 추출하고, 이를 통해 Tempo에서 추적 정보를 조회할 수 있도록 합니다.

5. Grafana에서 트레이스 정보 조회

이제 Grafana에서 로그를 조회할 때, 각 로그 메시지 옆에 Trace ID 링크가 나타납니다.

  • 로그 메시지 옆의 Tempo 링크를 클릭하면 해당 Trace ID에 대한 전체 추적 정보가 Tempo에서 시각화되어 나타납니다.

결론

이제 개발자는 로그에서 직접 Trace ID를 선택하여 Tempo에서 추적 정보를 쉽게 확인할 수 있습니다. 이를 통해 분산 추적 분석이 훨씬 간편해지며, 마이크로서비스 간의 요청 흐름을 빠르게 파악할 수 있습니다. GrafanaDerived FieldsTempo 통합을 통해 전체적인 모니터링 환경이 더욱 효율적이고 직관적으로 개선되었습니다.

감사합니다, 다음 강의에서 뵙겠습니다.

profile
무슨 생각하며 사니

0개의 댓글