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

컨텍스트 링크

원문 보기 위키 갱신

컨텍스트 링크는 대시보드 위젯과 Datadog의 다른 페이지, 그리고 워크플로에 통합한 서드파티 애플리케이션을 잇는 다리 역할을 해요. 위젯 메뉴의 링크를 통해 호스트, 트레이스, 로그는 물론 사용자 지정 대상으로 바로 이동할 수 있도록 구성할 수 있습니다.

출처: 문서

본문

개요 (Overview)

대시보드는 여러 소스에서 데이터를 수집해 이를 시각화로 표시해요.

대시보드를 모니터 알림(monitor notifications)에 연결하거나, 핵심 기술·비즈니스 지표를 관찰하는 스크린보드로 사용하거나, 런북(runbooks)에서 추가 컨텍스트를 제공하는 데 참조할 수 있어요. 대시보드를 사용하면 플랫폼의 현재 상태와 상호작용의 스냅샷을 볼 수 있어, 문제를 선제적으로 보고 전문 페이지에서 더 깊이 분석할 수 있습니다.

아래 영상은 사용자가 웹 애플리케이션의 개요 대시보드를 보고 있는 모습을 보여 줘요. 사용자는 기술 메트릭에서 스파이크를 식별하고, 세부 정보를 확대한 뒤, 가능한 근본 원인을 확인하기 위해 근간이 되는 호스트 대시보드에 접근합니다.

이 가이드는 대시보드의 **컨텍스트 링크(context links)**를 소개하며 다음을 다룹니다:

  1. 컨텍스트 링크가 어떻게 동작하고, 정확한 요구에 맞게 어떻게 조정하는지.
  2. 컨텍스트 링크 구성의 예시 사용 사례.

컨텍스트 링크는 대시보드 위젯과 Datadog의 다른 페이지, 그리고 워크플로에 통합한 서드파티 애플리케이션을 연결해 줘요.

대시보드에 대한 편집 권한(edit permissions)이 있는 사용자는 링크 목록에서 어떤 링크가 접근 가능한지 구성할 수 있습니다.

기본적으로 위젯 메뉴는 호스트, 트레이스(traces), 로그(logs)에 대한 링크와, 위젯의 데이터 소스에 해당하는 링크를 표시합니다. 예를 들어 위젯이 RUM 데이터를 사용하면 메뉴는 RUM Explorer 링크를 표시해요. 드롭다운 메뉴에서 추가 링크를 보려면 More Related Data Actions를 클릭하세요.

위젯은 다음 페이지로의 링크를 포함합니다:

링크 설명
Hosts 시리즈가 둘 이상의 호스트로 구성되면 호스트 맵(Host Map)으로 연결합니다. 시리즈가 단일 호스트로 구성되면 호스트 대시보드(Host Dashboard)로 연결합니다.
Containers 라이브 컨테이너(Live Container) 페이지로 연결합니다.
Processeses 라이브 프로세스(Live Process) 페이지로 연결합니다.
APM Traces 트레이스 탐색기(Trace Explorer)로 연결되는 근간 트레이스를 표시하는 사이드 패널을 엽니다.
RUM Events RUM Explorer로 연결합니다.
Profiles APM 프로필 탐색기(Profile Explorer)로 연결합니다.
Logs 로그 탐색기(Log Explorer)로 연결되는 근간 로그를 표시하는 사이드 패널을 엽니다.

해당되는 경우 컨텍스트 링크는 다음을 포함합니다:

  • 위젯 필터를 템플릿 변수(있는 경우)와, 그룹화된 쿼리의 경우 사용자가 클릭한 하나의 시리즈와 결합하는 필터(filer).
  • 시간 범위(time range). Timeseries 및 heatmap 위젯의 경우 시간 범위는 데이터 포인트의 시간 버킷에 해당합니다. 다른 위젯의 경우 시간 범위는 위젯의 전체 시간 범위입니다.

일반 위젯(generic widget)의 경우 편집 모드로 들어가 Context Links 섹션에 접근할 수 있어요. 컨텍스트 링크를 직접 만들거나, 기본 링크를 오버라이드하거나, 링크를 승격 또는 숨길 수 있습니다.

커스텀 링크를 정의하거나 기본 링크를 오버라이드하려면 Label 필드에 링크 이름을, URL 필드에 링크 경로를 지정하세요. 키-값 헬퍼를 사용하려면 + Add URL Parameter를 클릭합니다.

컨텍스트 링크에 사용할 수 있는 변수 유형은 다음과 같습니다:

  • 시간 범위 변수 (Time range variables) {{timestamp_start}}와 {{timestamp_end}}. 이 변수들은 위젯의 시간 범위에 해당합니다.
  • 쿼리 변수 (Query variables) (위 예시의 {{@MerchantTier}}와 {{@MerchantTier.value}}). 이 변수들은 그룹화된 쿼리가 있는 위젯을 위한 것이며, 사용자가 클릭한 특정 그룹을 식별합니다.
  • 대시보드 템플릿 변수 (Dashboard template variables) (위 예시의 {{$env}}와 {{$env.value}}). 이 변수들은 사용자가 클릭할 때 템플릿 변수에 현재 사용 중인 값을 식별합니다.
  • {{tags}}, 위 모든 변수의 기본 조합입니다.

{{something}}와 {{something.value}} 사이에서 선택해야 한다면:

  • {{something}}는 키가 접두사로 붙은 값을 반환합니다. 예: env:prod.
  • {{something.value}}는 원시 값을 반환합니다. 예: prod.
  • 여러 변수를 구성하는 예시 사용 사례를 참고하세요.

이 예시에서 View in Acme를 클릭하면 링크가 https://prod.acme.io/search?what=basic&when=1643021787564로 이동해요.

컨텍스트 링크는:

  • {{env.value}}를 prod로 대체합니다.
  • {{@MerchantTier.value}}를 basic으로 대체합니다.
  • {{timestamp_end}}를 1643021787564로 대체합니다.

다양한 파라미터를 인코딩하는 복잡한 컨텍스트 링크의 경우, URL 필드에 전체 URL을 복사-붙여넣기해 구성을 부트스트랩한 다음 그 지점에서 변수를 다듬는 것이 더 편리할 수 있어요.

URL 인코딩 (URL encoding)

Datadog는 컨텍스트 링크의 URL 인코딩을 처리해요.

위 예시는 쿼리 파라미터 status:error source:nginx {{@shopist.webstore.merchant.tier}}가 있는 링크를 보여 줍니다. 여기서 {{@shopist.webstore.merchant.tier}}는 @shopist.webstore.merchant.tier:basic으로 해석됩니다. 전체 쿼리 파라미터는 그다음 &query=status%3Aerror%20source%3Anginx%20%40shopist.webstore.merchant.tier%3Abasic으로 변환됩니다.

예시 사용 사례 (Example use cases)

이 섹션에는 컨텍스트 링크를 활용해 대시보드를 워크플로에 통합하는 방법을 보여 주는 예시가 포함됩니다.

다음 예시는 대시보드의 사용자에서 해당 Zendesk 사용자 페이지로의 링크를 만드는 방법을 설명합니다.

컨텍스트 (Context)

Datadog으로 상점(merchant) 웹사이트를 모니터링하고 있어요. 고객 지원 팀은 Frontend와 Security 팀이 가장 적극적인 고객—또는 문제가 있는 경험을 겪는 고객—을 선제적으로 식별하고 잠재적으로 연락하기 위해 설정한 대시보드를 사용합니다.

이 문제 해결 워크플로를 가속화하기 위해 고객 지원 팀은 대시보드와 지원 솔루션(예: Zendesk) 사이의 직접 연결을 원해요.

접근법 (Approach)

Datadog에서 플랫폼 전반에 걸쳐 로그인한 사용자를 추적하는 기본 ID는 사용자 이메일이며, 이는 일부 대시보드 위젯에 나타나는 패싯(facet)이에요.

사용자를 검색하는 일반적인 Zendesk 링크는 https://acme.zendesk.com/agent/search/1?type=user&q=email%3Ashane%40doe.com이며, 여기서 사용자 이메일이 검색 파라미터입니다.

URL에 변수를 추가하면 템플릿 링크는 https://acme.zendesk.com/agent/search/1?type=user&q=email:{{@usr.email.value}}가 됩니다.

결과 (Result)

고객 지원 팀의 대시보드 위젯에는 적절한 컨텍스트로 고객 지원 플랫폼에 들어가게 하는 컨텍스트 링크가 포함됩니다.

Zendesk User Page 링크를 클릭하면 Zendesk에서 이 사용자의 페이지로 이동합니다.

다음 예시는 대시보드 위젯의 호스트에서 AWS Console의 해당 Amazon EC2 인스턴스 페이지로의 링크를 만드는 방법을 설명합니다.

컨텍스트 (Context)

플랫폼이 Amazon EC2 인스턴스에 호스팅되어 있고, 플랫폼을 확장·축소하는 절차는 대부분 수동입니다.

Datadog에서 인프라의 핵심 건강 메트릭을 통합한 대시보드가 있어요.

이 운영 워크플로를 가속화하기 위해 이 대시보드와 AWS 콘솔(AWS Console) 사이의 직접 연결을 원합니다. 예를 들어 t2.micro에서 t2.large로 업그레이드하는 경우에요.

접근법 (Approach)

일반적인 Amazon EC2 인스턴스 요약 링크는 https://eu-west-3.console.aws.amazon.com/ec2/v2/home?region=eu-west-3#InstanceDetails:instanceId=i-04b737b9f8bf94a94이며, 여기에서 다음을 읽을 수 있어요:

  • eu-west-3: 하위 도메인과 URL 파라미터로 표시되는 데이터 센터 리전입니다.
  • i-04b737b9f8bf94a94: 해시 파라미터로 표시되는 호스트 ID입니다.

플랫폼이 단일 리전에서만 실행된다면 호스트 ID를 컨텍스트 링크 템플릿에 주입해서 https://eu-west-3.console.aws.amazon.com/ec2/v2/home?region=eu-west-3#InstanceDetails:instanceId={{host.value}}로 만드세요.

플랫폼이 여러 리전에서 실행된다면 위젯 구성은 다음에 따라 달라집니다:

  • 리전이 쿼리 집계의 일부라면(아래 스크린샷처럼), 템플릿 링크는 https://{{region.value}}.console.aws.amazon.com/ec2/v2/home?region={{region.value}}#InstanceDetails:instanceId={{host.value}}이며, 여기서 {{region.value}}는 쿼리 변수입니다.

  • 리전이 쿼리 집계의 일부라면(아래 스크린샷처럼), 템플릿 링크는 https://{{$region.value}}.console.aws.amazon.com/ec2/v2/home?region={{$region.value}}#InstanceDetails:instanceId={{host.value}}이며, 여기서 {{region.value}}는 템플릿 변수입니다.

결과 (Result)

대시보드 위젯에는 AWS Console의 적절한 호스트로 이동하게 하는 링크가 포함됩니다.

Amazon EC2 Instance Summary 링크를 클릭하면 AWS Console의 Amazon EC2 인스턴스 페이지로 이동합니다.

다음 예시는 대시보드 위젯의 RUM 이벤트에서 해당 로그로의 링크를 만드는 방법을 설명합니다.

컨텍스트 (Context)

Datadog으로 기업 웹사이트를 모니터링하고 있어요. RUM을 사용해 사용자를 이해하고, Logs를 사용해 API 게이트웨이를 감독할 수 있습니다.

프론트엔드 엔지니어들은 일반적으로 높은 수준의 RUM 인사이트를 담은 대시보드를 사용해요. API 게이트웨이 팀은 Log Explorer에 저장된 보기(Saved View)를 유지하며, 이는 프론트엔드 모니터링 팀이 관련 정보를 모니터링하는 데 의존하는 세밀하게 조정된 관점입니다.

이 문제 해결 워크플로를 가속화하기 위해 프론트엔드 모니터링 팀은 대시보드의 현재 컨텍스트로 저장된 보기에 접근하고 싶어 해요.

저장된 보기에 대한 접근법 (Approach to Saved Views)

저장된 보기(Saved Views)는 Log Explorer의 기본 쿼리, 시각화, 구성 옵션을 정의합니다. 일반적인 저장된 보기 링크는 https://app.datadoghq.com/logs?saved_view=305130이며, 이는 내부적으로 Log Explorer URL을 인코딩합니다.

저장된 보기의 짧은 링크를 추가해 결과 Log Explorer URL의 어떤 파라미터든 오버라이드할 수 있어요.

예를 들어 https://app.datadoghq.com/logs?saved_view=305130&query=@source:nginx @network.client.ip:123.123.12.1은 저장된 보기를 먼저 연 것처럼 Log Explorer로 이동하지만, 기본 쿼리 필터는 @source:nginx @network.client.ip:123.123.12.1로 대체됩니다.

속성 재매핑에 대한 접근법 (Approach to remapping attributes)

웹사이트의 네비게이션이 익명이라면 IP 주소를 사용자 식별의 프록시로 사용할 수 있어요.

RUM 이벤트의 @session.ip 속성을 로그의 @network.client.ip 속성으로 식별하고 싶어요. 두 속성은 일반적으로 의미가 달라 이름이 다르지만, 이 인증 로그의 맥락에서는 둘을 식별할 수 있습니다.

이를 위해 @network.client.ip 기반 필터에 @session.ip를 주입하고, 적절한 필터 @network.client.ip:{{@session.ip.value}}를 구성하세요.

세션 IP별, 특정 국가별 인사이트를 표시하는 RUM 대시보드 위젯의 경우 다음 링크 구성을 따르세요.

결과 (Result)

API 게이트웨이 팀이 들어오는 로그의 최신 업데이트를 반영하도록 저장된 보기를 업데이트해도 컨텍스트 링크는 최신 상태를 유지합니다.

IP 주소를 재매핑하면 RUM 이벤트와 해당 로그를 연결하는 컨텍스트 링크가 만들어집니다.

여러 변수 구성하기 (Configure multiple variables)

다음 예시는 컨텍스트 링크 쿼리에서 여러 변수와 조건을 구성하는 방법을 설명합니다.

컨텍스트 (Context)

특정 로그나 조건을 조사하기 위해 컨텍스트 링크를 추가합니다.

  • 같은 컨텍스트를 가진 여러 태그 값이 있습니다 (예: env:production OR env:prod).
  • 로그를 여러 조건으로 필터링하고 싶습니다 (예: env:prod AND service:backend).
접근법 (Approach)

문제 해결하려는 템플릿 변수를 선택하면, 컨텍스트 링크 구성은 해당 템플릿 변수를 가져와 쿼리에 삽입합니다. 참고: 문법과 괄호 묶음이 쿼리에 영향을 줍니다.

예를 들어 service:backend AND (env:production OR env:prod)인 컨텍스트 링크를 구성하려면 다음 구성을 사용하세요:

service:backend (env:{{$env.value}})
결과 (Result)

괄호가 (env:{{$env.value}})를 (env:*)로 변환해 여러 변수를 컨텍스트 링크 쿼리에 입력할 수 있게 해 줘요.

더 알아보기 (Learn more)