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의 쿼리 편집기는 대시보드 변수에 대한 자동 완성 제안을 제공해요.
-
쿼리 편집기에서
$를 입력해요. 사용 가능한 모든 대시보드 변수를 보여주는 드롭다운이 나타나요. -
다음 이미지처럼 목록에서 변수를 선택하거나, 계속 입력해서 필터링해요.

-
Enter 또는 Tab을 눌러 변수를 삽입해요.
시각화에서 변수 사용하기
대시보드 변수는 OpenSearch Dashboards 시각화 편집기와 통합되어, 대시보드에서 시각화를 편집할 때 대시보드 변수를 완전히 지원해요.
변수 값으로 필터링하기
변수는 시각화 내에서 필터링 조건으로 사용될 수 있어요. 대시보드 전체에 필터를 적용하는 대신, 변수를 PPL 쿼리에 직접 삽입해서 특정 패널에 대한 맞춤형 필터링을 만들 수 있어요.
변수 값으로 시각화를 필터링하려면 다음 단계를 따르세요:
-
machine_os변수를 만들어요:-
Observability 작업 공간에서 왼쪽 탐색 메뉴의 Dashboards를 선택해요.
-
기존 대시보드를 열거나 Create > Dashboard를 선택해서 새 대시보드를 만들어요. 새 대시보드를 만드는 경우, 제목을 입력하고 Save를 선택해서 먼저 저장해요.
-
대시보드 상단에서 Add variable을 선택해요.
-
Name에
machine_os를 입력해요. Type에서는 Query를 선택해요. Options Query에서는opensearch_dashboards_sample_data_logs를 선택해요. 쿼리 상자에는 다음 쿼리를 입력해요:| FIELDS `machine.os`{% include copy.html %}
-
Preview를 선택하고 Preview of values에
win 8,ios,win xp같은 값이 보이는지 확인해요. 그런 다음 Add variable을 선택해서 저장해요.
-
-
변수 값으로 필터링해요:
- 대시보드에서 Create new를 선택한 다음 Add visualization을 선택해서 새 시각화 편집기를 열어요.
- 시간 필터에서 Last 30 days를 선택해요.
- 쿼리 상자에 다음 쿼리를 입력해요:
| WHERE `machine.os` = '${machine_os}' | STATS avg(memory) BY span(`@timestamp`, 1d){% include copy.html %}
machine_os값으로 시각화를 필터링하려면machine_os드롭다운 목록에서 값을 선택해요(예를 들어win 8선택). 다음 이미지를 참고하세요.
동적으로 메트릭 선택하기
변수를 사용해서 집계에 어떤 필드를 사용할지 제어할 수 있어요. 이렇게 하면 쿼리를 수정하지 않고도 메트릭(예: memory와 bytes) 사이를 전환할 수 있어요.
동적으로 메트릭을 선택하려면 다음 단계를 따르세요:
-
log_metric변수를 만들어요:- Observability 작업 공간에서 왼쪽 탐색 메뉴의 Dashboards를 선택해요.
- 기존 대시보드를 열거나 Create > Dashboard를 선택해서 새 대시보드를 만들어요. 새 대시보드를 만드는 경우, 제목을 입력하고 Save를 선택해서 먼저 저장해요.
- 대시보드 상단에서 Add variable을 선택해요.
- Name에
log_metric을 입력해요. Type에서는 Custom을 선택해요. Custom options에memory를 입력하고 Enter를 눌러 추가해요. 그다음bytes를 입력하고 Enter를 눌러 추가해요. - Add variable을 선택해서 저장해요.
-
시각화에서 변수를 사용해요:
-
대시보드에서 Create new를 선택한 다음 Add visualization을 선택해서 새 시각화 편집기를 열어요.
-
시간 필터에서 Last 30 days를 선택해요.
-
쿼리 상자에 다음 쿼리를 입력해요:
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선택).
-
동적으로 시간 간격 변경하기
변수를 사용하면 대시보드 조회자가 쿼리를 수정하지 않고도 시간 집계 간격(예: 1h, 6h, 1d) 사이를 전환할 수 있어요.
동적으로 시간 간격을 변경하려면 다음 단계를 따르세요:
-
interval변수를 만들어요:- Observability 작업 공간에서 왼쪽 탐색 메뉴의 Dashboards를 선택해요.
- 기존 대시보드를 열거나 Create > Dashboard를 선택해서 새 대시보드를 만들어요. 새 대시보드를 만드는 경우, 제목을 입력하고 Save를 선택해서 먼저 저장해요.
- 대시보드 상단에서 Add variable을 선택해요.
- Name에
interval을 입력해요. Type에서는 Custom을 선택해요. Custom options에1d를 입력하고 Enter를 눌러 추가해요.12h,6h,1h도 같은 방식으로 반복해요. - Add variable을 선택해서 저장해요.
-
시각화에서 변수를 사용해요:
-
대시보드에서 Create new를 선택한 다음 Add visualization을 선택해서 새 시각화 편집기를 열어요.
-
시간 필터에서 Last 30 days를 선택해요.
-
쿼리 상자에 다음 쿼리를 입력해요:
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를 선택해요. 시각화는 선택된 시간 버킷팅을 반영해요. 다음 이미지를 참고하세요.
-
동적으로 집계 함수 변경하기
변수를 사용하면 대시보드 조회자가 쿼리를 수정하지 않고도 집계 함수(예: avg, max, min) 사이를 전환할 수 있어요.
동적으로 집계 함수를 변경하려면 다음 단계를 따르세요:
-
function변수를 만들어요:- Observability 작업 공간에서 왼쪽 탐색 메뉴의 Dashboards를 선택해요.
- 기존 대시보드를 열거나 Create > Dashboard를 선택해서 새 대시보드를 만들어요. 새 대시보드를 만드는 경우, 제목을 입력하고 Save를 선택해서 먼저 저장해요.
- 대시보드 상단에서 Add variable을 선택해요.
- Name에
function을 입력해요. Type에서는 Custom을 선택해요. Custom options에avg를 입력하고 Enter를 눌러 추가해요.max와min도 같은 방식으로 반복해요. - Add variable을 선택해서 저장해요.
-
시각화에서 변수를 사용해요:
-
대시보드에서 Create new를 선택한 다음 Add visualization을 선택해서 새 시각화 편집기를 열어요.
-
시간 필터에서 Last 30 days를 선택해요.
-
쿼리 상자에 다음 쿼리를 입력해요:
| STATS ${function}(memory) BY span(`@timestamp`, 1d){% include copy.html %}
함수 사이를 전환하려면
function드롭다운 목록에서 값을 선택하고(예를 들어max선택) Update를 선택해요. 시각화는 선택된 집계 함수를 반영해요. 다음 이미지를 참고하세요.
-
계단식 및 크로스 패널 변수
다음 섹션에서는 고급 변수 사용 사례를 설명해요.
계단식 변수
한 변수가 다른 변수의 옵션을 필터링하는 종속 변수를 만들 수 있어요. 예를 들어, 먼저 리전을 선택한 다음 해당 리전에서 사용 가능한 서비스를 선택하는 식이에요.
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 변수 값을 변경하면 두 시각화 편집기가 동시에 업데이트돼요.