본문 바로가기
WIKI 기술 지식 베이스

Trace Analytics in OpenSearch Dashboards

원문 보기 위키 갱신

출처: 문서

본문

OpenSearch Dashboards의 Trace Analytics

Trace Analytics 플러그인은 클라우드 네이티브 소프트웨어에서 텔레메트리 데이터를 수집하기 위한 계측을 표준화하는 OpenTelemetry (OTel) 프로토콜 데이터를 기반으로 애플리케이션 성능을 한눈에 파악할 수 있게 해 줘요.

플러그인 설치

Trace Analytics 플러그인 설치 방법은 Standalone OpenSearch Dashboards plugin install 문서를 참고하세요.

OpenTelemetry 데모 설정

OpenTelemetry Demo with OpenSearch는 실시간 텔레메트리 데이터를 생성하는 분산 애플리케이션을 시뮬레이션해요. 실제 환경에 도입하기 전에 Trace Analytics 플러그인에서 사용할 수 있는 기능을 직접 탐색해 볼 수 있는 실습 환경을 제공하죠.

1단계: OpenTelemetry Demo 설정

  • OpenTelemetry Demo with OpenSearch 저장소를 클론하세요: git clone https://github.com/opensearch-project/opentelemetry-demo.
  • Getting Started 지침에 따라 Docker로 데모 애플리케이션을 배포하세요. 이 애플리케이션은 텔레메트리 데이터를 생성하는 여러 마이크로서비스를 실행해요.

2단계: 텔레메트리 데이터 수집

  • 미리 준비된 셋업을 사용해 OTel 컬렉터가 텔레메트리 데이터(트레이스, 메트릭, 로그)를 OpenSearch 클러스터로 전송하도록 구성하세요.
  • Data Prepper가 들어오는 데이터를 처리하고, trace analytics 및 service map 파이프라인을 담당하며, 필요한 인덱스에 데이터를 제출하고, 사전 집계 계산을 수행하도록 설정되어 있는지 확인하세요.

3단계: OpenSearch Dashboards에서 trace analytics 살펴보기

Trace Analytics 애플리케이션에는 Services와 Traces 두 가지 옵션이 있어요:

  • Services는 애플리케이션의 모든 서비스를 나열하고, 여러 서비스가 서로 어떻게 연결되는지 보여 주는 인터랙티브 맵을 제공해요. 오퍼레이션별로 문제를 파악하는 데 도움이 되는 대시보드와 달리, Service map은 에러율과 지연 시간을 기준으로 서비스별 문제를 파악하는 데 도움이 돼요. 이 옵션에 접근하려면 Trace Analytics > Services로 이동하세요.
  • Traces는 트레이스를 HTTP 메서드와 경로별로 그룹화해서 특정 오퍼레이션과 관련된 평균 지연 시간, 에러율, 추세를 볼 수 있게 해 줘요. 더 집중된 뷰를 보려면 트레이스 그룹 이름으로 필터링해 보세요. 이 옵션에 접근하려면 Trace Analytics > Traces로 이동하세요. Trace Groups 패널에서는 트레이스 그룹에 속한 트레이스들을 검토할 수 있고, Traces 패널에서는 개별 트레이스를 분석해 상세 요약을 확인할 수 있어요.

4단계: 상관 분석 수행

Services correlation을 선택하면 텔레메트리 신호 간의 관계가 표시돼요. 이 기능을 사용하면 논리적인 서비스 수준에서 특정 서비스와 연관된 메트릭과 로그로 이동할 수 있어요.

Trace Analytics 플러그인은 스팬, 트레이스, 서비스를 각각 대응하는 로그와 연관 짓는 기능을 지원해요. 덕분에 Trace Analytics 인터페이스 안에서 트레이스나 스팬에서 관련 로그 항목으로, 또는 서비스에서 연관된 로그로 바로 이동할 수 있죠. 상관 분석은 텔레메트리 데이터를 통합된 뷰로 제공해서 문제 해결 과정을 간소화하고, 근본 원인을 파악하고 애플리케이션 맥락을 이해하기 쉽게 해 줘요.

상관 분석을 수행하려면 다음 옵션을 사용하세요:

  • Trace-to-log correlation: 트레이스 상세 페이지에서 View associated logs를 선택하세요.
  • Span-to-log correlation: 스팬 상세 플라이아웃(간트 차트나 스팬 테이블에서 span ID를 선택하면 열려요)에서 View associated logs를 선택하세요.
  • Service-to-log correlation: Services 페이지에서 원하는 서비스 옆에 있는 Discover 아이콘을 선택하세요.
  • Service-to-service correlation: Services 페이지에서 서비스 맵의 Focus on 옵션을 사용해 서비스와 그 의존성을 확인하세요.

스키마 의존성과 가정

이 플러그인은 OTel 데이터를 처리하고 시각화하기 위해 Data Prepper를 사용해야 하며, OTel 상관 분석과 service map 계산을 위해서는 다음 Data Prepper 파이프라인에 의존해요:

표준화된 텔레메트리 데이터

이 플러그인은 텔레메트리 데이터가 OTel에서 규정한 스팬, 트레이스, 메트릭의 구조와 명명 방식을 포함한 OTel 스키마 컨벤션을 따르고, Simple Schema for Observability를 사용해 구현되기를 요구해요.

서비스 이름과 의존성 맵

정확한 서비스 매핑과 상관 분석을 위해서는 다음 가이드라인을 따라야 해요:

  • 서비스 이름은 고유해야 하며, 애플리케이션 컴포넌트 전반에서 일관되게 사용되어야 해요.
  • serviceName 필드는 Data Prepper 파이프라인을 사용해 채워야 해요.
  • 정확한 서비스 맵을 구성하고 서비스 간 관계를 이해하려면, 사전에 정의된 업스트림/다운스트림 의존성과 함께 서비스가 수집되어야 해요.

트레이스 및 스팬 ID

트레이스와 스팬은 엔드 투 엔드 트레이싱과 정확한 성능 인사이트를 가능하게 하기 위해, 분산 시스템 전반에서 일관되게 생성되고 유지되는 고유 식별자를 가져야 해요.

RED metrics 준수

이 플러그인은 메트릭 데이터에 각 서비스별 rate, error, duration(RED) 지표가 포함되기를 기대해요. 이 지표는 Data Prepper 파이프라인으로 사전 집계하거나 스팬을 기반으로 동적으로 계산할 수 있어요. 이를 통해 핵심 성능 지표를 효과적으로 계산하고 표시할 수 있죠.

상관 분석 필드

serviceName 같은 특정 필드는 상관 분석을 수행하는 데 반드시 필요해요. 이런 필드 덕분에 플러그인이 관련 텔레메트리 데이터를 연결하고, 서비스 간 상호작용과 의존성을 전체적으로 보여 줄 수 있어요.

상관 분석 인덱스

서비스 대화상자에서 해당 트레이스나 로그로 이동하려면 상관 필드가 존재해야 하고, 대상 인덱스(예: logs)가 Simple Schema for Observability에 설명된 명명 규칙을 따라야 해요.


OTel 프로토콜 분석을 활용한 trace analytics

Introduced 2.15 {: .label .label-purple }

OTel 프로토콜 분석을 활용한 trace analytics는 분산 시스템에 대한 포괄적인 인사이트를 제공해요. 다음 자산을 시각화하고 분석할 수 있죠:

  • Service: 분산 애플리케이션의 구성 요소예요. 이 구성 요소는 시스템 상태를 검증하기 위해 애플리케이션의 빌딩 블록을 측정하고 모니터링할 때 사용되는 중요한 논리적 개념이에요.
  • Traces: 요청이 여러 서비스를 거쳐 이동하는 경로를 시각적으로 표현한 것으로, 지연 시간과 성능 문제에 대한 인사이트를 제공해요.
  • RED metrics: 서비스 상태와 성능에 대한 메트릭으로, 초당 요청 수(rate), 실패한 요청 수(errors), 요청 처리 시간(duration)으로 측정돼요.

Trace analytics 시각화

테이블이나 맵 같은 Services 시각화는 서비스 동작과 정확성을 논리적으로 분석하는 데 도움이 돼요. 다음 시각화를 활용하면 이상 현상과 에러를 파악할 수 있어요:

  • Services table

    • 각 테이블 컬럼에는 RED 지표와 함께 연결된 업스트림/다운스트림 서비스 및 기타 액션이 표시돼요. 다음 이미지는 Services 테이블 예시예요.

    Services table

    • 범용 필터 선택 기능은 필드나 필터를 구성하는 데 사용돼요. 다음 이미지가 이 필터를 보여 줘요.

    Services filter selection

    • Services throughput 툴팁은 서비스의 지난 24시간 동안 유입 요청 추세를 한눈에 보여 줘요. 다음 이미지는 툴팁 예시예요.

    Services throughput tooltip

    • Services correlation 대화상자는 24시간 throughput 추세를 포함한 서비스 상세 정보를 한눈에 보여 줘요. 이 정보를 활용하면 serviceName 필드를 기준으로 필터링해 연관된 로그나 트레이스를 분석할 수 있어요. 다음 이미지가 이 대화상자를 보여 줘요.

    Services correlation dialog window

    • Services RED metrics 대화상자는 24시간 error, duration, throughput rate를 포함한 서비스의 RED metrics 지표를 한눈에 보여 줘요. 다음 이미지가 이 대화상자를 보여 줘요.

    Services RED metrics for duration

    • Span details 대화상자는 트레이스의 상세 정보를 제공해요. 이 정보를 활용하면 attribute나 연관 로그 같은 트레이스의 요소를 더 깊이 분석할 수 있어요. 다음 이미지가 이 대화상자를 보여 줘요.

    Services Span details dialog window

  • Service map

    • Service map은 노드를 표시하며, 각 노드는 하나의 서비스를 나타내요. 노드 색상은 해당 서비스와 그 의존성의 RED 지표 심각도를 나타내요. 다음 이미지가 맵을 보여 줘요.

    Services map tooltip

    • 노드를 선택하면 해당 서비스의 상세 대화상자가 열려요. 이 인터랙티브 맵은 서비스 간 연결 관계를 시각화해서, 오퍼레이션별로 문제를 찾아내는 대시보드와 달리 서비스별로 문제를 파악하는 데 도움이 돼요. 에러율이나 지연 시간을 기준으로 정렬해 잠재적인 문제 영역을 좁혀 나갈 수 있죠.

    • Service map 대화상자에서 노드는 선택한 서비스에 의존하는 연결된 다운스트림 서비스를 나타내요. 노드 색상은 해당 서비스와 그 다운스트림 의존성의 RED 지표 심각도를 나타내요. 다음 이미지가 이 대화상자를 보여 줘요.

    Service map dialog window

  • Trace groups

    • 트레이스는 HTTP API 이름별로 그룹화되므로 비즈니스 기능 단위를 기준으로 클러스터링할 수 있어요. 트레이스는 HTTP 메서드와 경로별로 그룹화되며, 특정 오퍼레이션과 관련된 평균 지연 시간, 에러율, 추세를 표시해요. 트레이스 그룹 이름으로 필터링할 수도 있죠. 다음 이미지는 Trace Groups 창이에요.

    Trace Groups window

    • Trace Groups 창에서는 그룹 이름과 다른 필터로 필터링할 수 있고, 연관된 트레이스를 분석할 수도 있어요. 그룹을 구성하는 트레이스를 자세히 살펴보려면 오른쪽 컬럼에서 트레이스 수를 선택한 다음, 개별 트레이스를 골라 상세 요약을 확인하세요.

    Trace group dialog window

    • Trace details 창은 개별 트레이스의 세부 내역을 보여 줘요. 여기에는 대응하는 스팬, 연관된 서비스 이름, 스팬의 시간 및 duration 상호작용을 나타내는 워터폴 차트가 포함돼요. 다음 이미지가 이 뷰를 보여 줘요.

    Trace details window

사용자 지정 인덱스 이름 및 크로스 클러스터 인덱스 지원

3.1에 도입됨
{: .label .label-purple }

OpenSearch 3.1의 Trace Analytics는 사용자 지정 인덱스 이름과 크로스 클러스터 인덱스에 대한 지원이 확장되어, 분산 환경에 더 높은 유연성과 확장성을 제공해요. 이제 다음과 같은 개선 사항을 사용할 수 있어요:

  • Observability의 span, service, log 인덱스에 사용자 지정 인덱스 이름을 설정할 수 있어요. 이를 통해 인덱스 이름을 조직의 컨벤션에 맞추고, 여러 환경에 걸친 데이터를 더 효과적으로 관리할 수 있어요. 또한 연관 로그 인덱스를 구성하고 그에 대응하는 timestamp, serviceName, spanId, traceId 필드를 매핑할 수도 있어요. 로그가 OpenTelemetry(OTel) 형식을 따르지 않고 사용자 지정 필드 매핑이 필요한 경우에 특히 유용한 기능이에요. 사용자 지정 span 인덱스는 Data Prepper의 span 인덱스 매핑을 따라야 해요.

    다음 이미지는 Observability 설정 패널에서 사용자 지정 인덱스 이름을 구성하는 화면이에요.

    사용자 지정 인덱스 이름 구성 UI

  • Trace details 페이지에 연관 로그 패널이 추가되어, 특정 트레이스와 연관된 로그를 분석해 문제 해결과 근본 원인 분석을 개선할 수 있어요. 다음 이미지는 로그 패널을 보여 줘요.

    연관 로그 패널이 있는 Trace details 페이지

  • 새로운 드롭다운 메뉴에서 모든 span, 루트 span, 서비스 진입 span, 트레이스를 조회할 수 있어요. 다음 이미지에서 볼 수 있듯이, 사용자 지정 데이터 그리드는 데이터를 더 쉽게 탐색할 수 있는 전체 화면 모드를 포함해 고급 정렬 및 표시 옵션을 제공해요.

    Trace Analytics의 드롭다운 메뉴와 사용자 지정 데이터 그리드

  • 서비스 맵이 이제 Trace Analytics 페이지의 트레이스 테이블 아래에 표시되어, 트레이스 데이터를 분석할 때 서비스 간 관계와 의존성을 바로 시각적으로 파악할 수 있어요.

    트레이스 테이블 아래에 표시된 서비스 맵

  • Trace details 페이지에는 span의 계층 구조를 보여 주는 새로운 트리 뷰가 추가됐어요. 트레이스 메트릭을 더 직관적으로 요약할 수 있도록 파이 차트가 개요 패널 옆에 배치되게끔 레이아웃도 업데이트됐어요. 다음 이미지를 참고하세요.

    트리 뷰와 파이 차트 레이아웃이 적용된 간트 차트

  • 간트 차트에 선택 가능한 미니맵이 추가되어, 트레이스 타임라인의 특정 구간으로 빠르게 이동해 집중할 수 있어요. 다음 이미지를 참고하세요.

    선택 가능한 미니맵이 있는 간트 차트

  • 서비스 맵은 대규모 노드 그룹을 더 잘 지원하도록 재설계되어, 복잡한 서비스 토폴로지를 더 쉽게 시각화할 수 있어요. 이제 특정 서비스에 포커스를 맞춰 의존성을 확인하고, 필요에 따라 맵을 초기화할 수도 있어요. 다음 이미지를 참고하세요.

    대규모 노드 그룹을 지원하도록 재설계된 서비스 맵

  • 서비스 뷰 테이블에는 이제 더 많은 빠른 선택 아이콘이 있어서, 올바른 컨텍스트가 전달된 상태로 해당 뷰에서 연관된 트레이스와 로그를 확인하거나 페이지를 벗어나지 않고도 컨텍스트에 맞는 서비스 세부 정보를 볼 수 있어요. 다음 이미지를 참고하세요.

    서비스 테이블의 빠른 선택 아이콘

구성 가능한 서비스 맵 제한

3.2에 도입됨
{: .label .label-purple }

OpenSearch는 서비스 맵 렌더링에 기본 제한값을 제공해요. 이 제한값을 높이면 큰 토폴로지를 더 완전하게 렌더링할 수 있고, 낮추면 작은 뷰에 집중할 때 클라이언트 측 성능을 개선할 수 있어요. 서비스가 많거나 상호 연결이 촘촘한 환경에서는 기본 제한값 때문에 맵이 불완전해질 수 있으므로 특히 중요해요.

서비스 맵 구성 설정

두 가지 Advanced Settings가 서비스 맵 쿼리로 생성되는 서비스 맵의 크기와 복잡도를 제어해요:

  • observability:traceAnalyticsServiceMapMaxNodes: 표시되는 서비스 노드의 최대 개수예요. 기본값은 500이에요.
  • observability:traceAnalyticsServiceMapMaxEdges: 표시되는 엣지(서비스 간 연결)의 최대 개수예요. 기본값은 1,000이에요.

OpenSearch Dashboards에서 이 설정을 구성하려면 다음 단계를 따르세요:

  1. 메인 메뉴에서 Management > Dashboard Management > Advanced Settings를 선택하세요.
  2. 검색 상자에 Observability를 입력해 검색하세요. Observability 섹션에서 Trace analytics service map maximum edges 및 Trace analytics service map maximum nodes* 설정을 찾으세요. 환경과 성능 요구 사항에 맞게 값을 조정한 뒤 변경 사항을 저장하세요. 값을 높이면 브라우저 메모리와 CPU 사용량이 늘어날 수 있어요.

더 알아보기 (Learn more)