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

Using dashboard variables

원문 보기 위키 갱신

출처: 문서

본문

대시보드 변수 사용하기

시각화 편집기의 쿼리에서 대시보드 변수를 참조하면 동적이고 인터랙티브한 대시보드를 만들 수 있어요.

변수 문법

대시보드 변수는 다음과 같은 문법 옵션으로 쿼리에서 참조할 수 있어요.

기본 문법

대부분의 경우 $variableName을 사용해요:

source=logs | where service='$service' | stats count() by region

{% include copy.html %}

중괄호 문법

변수 이름 뒤에 공백 없이 다른 문자가 이어질 때는 ${variableName}을 사용해요:

source = logs | where ${env}_level = "error"

{% include copy.html %}

중괄호 문법은 변수 이름이 올바르게 구분되도록 해줘요. 중괄호가 없으면 $env_level은 env가 아니라 env_level이라는 변수로 해석돼요.

쿼리에서 변수 사용하기

대시보드 변수는 Piped Processing Language(PPL)와 Prometheus Query Language(PromQL)를 지원해요. 다음 예제는 PPL을 사용해요.

필터링용 단일 값 변수

다음 쿼리는 단일 값 변수로 로그를 필터링해요:

source=logs | where service='$service' | stats count() by status_code

{% include copy.html %}

service가 api로 설정되면 쿼리는 다음과 같이 해석돼요:

source=logs | where service='api' | stats count() by status_code

필터링용 다중 값 변수

다음 쿼리는 다중 값 변수로 로그를 필터링해요:

source=logs | where region IN $region | stats count() by service

{% include copy.html %}

region에 여러 값(us-east, us-west)이 선택되면 쿼리는 다음과 같이 해석돼요:

source=logs | where region IN ('us-east', 'us-west') | stats count() by service

숫자를 사용하는 다중 값

쿼리 변수의 옵션이 숫자 또는 불리언 값으로 감지되면 다중 값은 따옴표 없이 포맷돼요:

source=logs | where status_code IN $status | stats count()

{% include copy.html %}

status에 여러 숫자 값이 선택되면 쿼리는 다음과 같이 해석돼요:

source=logs | where status_code IN (200, 404, 500) | stats count()

그룹화 차원용 변수

다음 쿼리는 변수를 사용해 그룹화 차원을 제어해요:

source=logs | stats count() by `$group_by`

{% include copy.html %}

group_by가 region으로 설정되면 쿼리는 다음과 같이 해석돼요:

source=logs | stats count() by region

시간 간격용 변수

다음 쿼리는 변수를 사용해 시간 간격을 제어해요:

source=logs | stats count() by span(timestamp, $interval)

{% include copy.html %}

interval이 5m으로 설정되면 쿼리는 다음과 같이 해석돼요:

source=logs | stats count() by span(timestamp, 5m)

메트릭 계산용 변수

다음 쿼리는 변수를 사용해 어떤 메트릭을 계산할지 제어해요:

source=metrics | stats avg($metric) by service

{% include copy.html %}

metric이 response_time으로 설정되면 쿼리는 다음과 같이 해석돼요:

source=metrics | stats avg(response_time) by service

다중 값 변수 포맷팅

변수가 다중 선택을 허용하는 경우, 값은 쿼리 언어에 따라 자동으로 포맷돼요.

쿼리 언어 문자열 값 숫자 또는 불리언 값
PPL ('value1', 'value2') (123, 456)
PromQL (value1|value2) (value1|value2)
기타 value1, value2 value1, value2

자동 완성 제안

OpenSearch Dashboards의 쿼리 편집기는 대시보드 변수에 대한 자동 완성 제안을 제공해요.

  1. 쿼리 편집기에서 $를 입력해요. 사용 가능한 모든 대시보드 변수를 보여주는 드롭다운이 나타나요.

  2. 다음 이미지처럼 목록에서 변수를 선택하거나, 계속 입력해서 필터링해요.

    사용 가능한 대시보드 변수를 보여주는 자동 완성 드롭다운이 표시된 쿼리 편집기

  3. Enter 또는 Tab을 눌러 변수를 삽입해요.

시각화에서 변수 사용하기

대시보드 변수는 OpenSearch Dashboards 시각화 편집기와 통합되어, 대시보드에서 시각화를 편집할 때 대시보드 변수를 완전히 지원해요.

변수 값으로 필터링하기

변수는 시각화 내에서 필터링 조건으로 사용될 수 있어요. 대시보드 전체에 필터를 적용하는 대신, 변수를 PPL 쿼리에 직접 삽입해서 특정 패널에 대한 맞춤형 필터링을 만들 수 있어요.

변수 값으로 시각화를 필터링하려면 다음 단계를 따르세요:

  1. machine_os 변수를 만들어요:

    1. Observability 작업 공간에서 왼쪽 탐색 메뉴의 Dashboards를 선택해요.

    2. 기존 대시보드를 열거나 Create > Dashboard를 선택해서 새 대시보드를 만들어요. 새 대시보드를 만드는 경우, 제목을 입력하고 Save를 선택해서 먼저 저장해요.

    3. 대시보드 상단에서 Add variable을 선택해요.

    4. Name에 machine_os를 입력해요. Type에서는 Query를 선택해요. Options Query에서는 opensearch_dashboards_sample_data_logs를 선택해요. 쿼리 상자에는 다음 쿼리를 입력해요:

      | FIELDS `machine.os`
      

      {% include copy.html %}

    5. Preview를 선택하고 Preview of values에 win 8, ios, win xp 같은 값이 보이는지 확인해요. 그런 다음 Add variable을 선택해서 저장해요.

  2. 변수 값으로 필터링해요:

    1. 대시보드에서 Create new를 선택한 다음 Add visualization을 선택해서 새 시각화 편집기를 열어요.
    2. 시간 필터에서 Last 30 days를 선택해요.
    3. 쿼리 상자에 다음 쿼리를 입력해요:
    | WHERE `machine.os` = '${machine_os}' | STATS avg(memory) BY span(`@timestamp`, 1d) 
    

    {% include copy.html %}

    machine_os 값으로 시각화를 필터링하려면 machine_os 드롭다운 목록에서 값을 선택해요(예를 들어 win 8 선택). 다음 이미지를 참고하세요.

    machine_os가 win 8으로 설정된 상태에서 시간에 따른 평균 메모리를 보여주는 시각화 편집기

동적으로 메트릭 선택하기

변수를 사용해서 집계에 어떤 필드를 사용할지 제어할 수 있어요. 이렇게 하면 쿼리를 수정하지 않고도 메트릭(예: memory와 bytes) 사이를 전환할 수 있어요.

동적으로 메트릭을 선택하려면 다음 단계를 따르세요:

  1. log_metric 변수를 만들어요:

    1. Observability 작업 공간에서 왼쪽 탐색 메뉴의 Dashboards를 선택해요.
    2. 기존 대시보드를 열거나 Create > Dashboard를 선택해서 새 대시보드를 만들어요. 새 대시보드를 만드는 경우, 제목을 입력하고 Save를 선택해서 먼저 저장해요.
    3. 대시보드 상단에서 Add variable을 선택해요.
    4. Name에 log_metric을 입력해요. Type에서는 Custom을 선택해요. Custom options에 memory를 입력하고 Enter를 눌러 추가해요. 그다음 bytes를 입력하고 Enter를 눌러 추가해요.
    5. Add variable을 선택해서 저장해요.
  2. 시각화에서 변수를 사용해요:

    1. 대시보드에서 Create new를 선택한 다음 Add visualization을 선택해서 새 시각화 편집기를 열어요.

    2. 시간 필터에서 Last 30 days를 선택해요.

    3. 쿼리 상자에 다음 쿼리를 입력해요:

      source=opensearch_dashboards_sample_data_logs
      | stats avg($log_metric) as avg_${log_metric} by span(`timestamp`, 1h) as timestamp, response
      

      {% include copy.html %}

    메트릭 사이를 전환하려면 log_metric 드롭다운 목록에서 값을 선택해요(예를 들어 memory 또는 bytes 선택).

    log_metric 변수가 memory로 설정된 상태에서 시간에 따른 평균 메모리를 보여주는 시각화 편집기

동적으로 시간 간격 변경하기

변수를 사용하면 대시보드 조회자가 쿼리를 수정하지 않고도 시간 집계 간격(예: 1h, 6h, 1d) 사이를 전환할 수 있어요.

동적으로 시간 간격을 변경하려면 다음 단계를 따르세요:

  1. interval 변수를 만들어요:

    1. Observability 작업 공간에서 왼쪽 탐색 메뉴의 Dashboards를 선택해요.
    2. 기존 대시보드를 열거나 Create > Dashboard를 선택해서 새 대시보드를 만들어요. 새 대시보드를 만드는 경우, 제목을 입력하고 Save를 선택해서 먼저 저장해요.
    3. 대시보드 상단에서 Add variable을 선택해요.
    4. Name에 interval을 입력해요. Type에서는 Custom을 선택해요. Custom options에 1d를 입력하고 Enter를 눌러 추가해요. 12h, 6h, 1h도 같은 방식으로 반복해요.
    5. Add variable을 선택해서 저장해요.
  2. 시각화에서 변수를 사용해요:

    1. 대시보드에서 Create new를 선택한 다음 Add visualization을 선택해서 새 시각화 편집기를 열어요.

    2. 시간 필터에서 Last 30 days를 선택해요.

    3. 쿼리 상자에 다음 쿼리를 입력해요:

      source=opensearch_dashboards_sample_data_logs | stats AVG(`bytes`) as avg_bytes, MAX(`bytes`) as max_bytes by span(`timestamp`, $interval)
      

      {% include copy.html %}

    간격 사이를 전환하려면 interval 드롭다운 목록에서 값을 선택하고(예를 들어 6h 선택) Update를 선택해요. 시각화는 선택된 시간 버킷팅을 반영해요. 다음 이미지를 참고하세요.

    interval 변수가 1d로 설정된 상태에서 시간에 따른 avg_bytes와 max_bytes를 보여주는 시각화 편집기

동적으로 집계 함수 변경하기

변수를 사용하면 대시보드 조회자가 쿼리를 수정하지 않고도 집계 함수(예: avg, max, min) 사이를 전환할 수 있어요.

동적으로 집계 함수를 변경하려면 다음 단계를 따르세요:

  1. function 변수를 만들어요:

    1. Observability 작업 공간에서 왼쪽 탐색 메뉴의 Dashboards를 선택해요.
    2. 기존 대시보드를 열거나 Create > Dashboard를 선택해서 새 대시보드를 만들어요. 새 대시보드를 만드는 경우, 제목을 입력하고 Save를 선택해서 먼저 저장해요.
    3. 대시보드 상단에서 Add variable을 선택해요.
    4. Name에 function을 입력해요. Type에서는 Custom을 선택해요. Custom options에 avg를 입력하고 Enter를 눌러 추가해요. max와 min도 같은 방식으로 반복해요.
    5. Add variable을 선택해서 저장해요.
  2. 시각화에서 변수를 사용해요:

    1. 대시보드에서 Create new를 선택한 다음 Add visualization을 선택해서 새 시각화 편집기를 열어요.

    2. 시간 필터에서 Last 30 days를 선택해요.

    3. 쿼리 상자에 다음 쿼리를 입력해요:

      | STATS ${function}(memory) BY span(`@timestamp`, 1d)
      

      {% include copy.html %}

    함수 사이를 전환하려면 function 드롭다운 목록에서 값을 선택하고(예를 들어 max 선택) Update를 선택해요. 시각화는 선택된 집계 함수를 반영해요. 다음 이미지를 참고하세요.

    function 변수가 avg로 설정된 상태에서 시간에 따른 평균 메모리를 보여주는 시각화 편집기

계단식 및 크로스 패널 변수

다음 섹션에서는 고급 변수 사용 사례를 설명해요.

계단식 변수

한 변수가 다른 변수의 옵션을 필터링하는 종속 변수를 만들 수 있어요. 예를 들어, 먼저 리전을 선택한 다음 해당 리전에서 사용 가능한 서비스를 선택하는 식이에요.

region 변수를 만들어요:

source=logs | dedup region | fields region

{% include copy.html %}

region을 참조하는 service 변수를 만들어요:

source=logs | where region='$region' | dedup service | fields service

{% include copy.html %}

region 값이 변경되면 service 변수는 선택된 리전의 서비스만 보여주도록 옵션을 자동으로 새로 고쳐요.

크로스 패널 필터링

단일 변수를 사용해서 여러 시각화를 동시에 필터링할 수 있어요. 예를 들어, service 변수를 만들고 여러 시각화 편집기에서 참조할 수 있어요.

시각화 편집기 1(서비스별 요청 수):

source=logs | where service='$service' | stats count() by status_code

{% include copy.html %}

시각화 편집기 2(서비스별 응답 시간):

source=metrics | where service='$service' | stats avg(response_time)

{% include copy.html %}

service 변수 값을 변경하면 두 시각화 편집기가 동시에 업데이트돼요.

다음 단계

더 알아보기 (Learn more)