

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 대시보드 변수 추가 및 관리
<a name="v9-dash-variables"></a>

****  
이 설명서 주제는 **Grafana 버전 9.x**를 지원하는 Grafana 워크스페이스를 위해 설계되었습니다.  
Grafana 버전 10.x를 지원하는 Grafana 워크스페이스의 경우 [Grafana 버전 10에서 작업](using-grafana-v10.md) 섹션을 참조하세요.  
Grafana 버전 8.x를 지원하는 Grafana 워크스페이스의 경우 [Grafana 버전 8에서 작업](using-grafana-v8.md) 섹션을 참조하세요.

변수는 값의 자리표시자입니다. 지표 쿼리 및 패널 제목에서 변수를 사용할 수 있습니다. 따라서 대시보드 상단의 드롭다운을 사용하여 값을 변경하는 경우 패널의 지표 쿼리가 새 값을 반영하도록 변경됩니다.

변수를 사용하면 보다 동적이고 대화형 기능이 강화된 대시보드를 생성할 수 있습니다. 지표 쿼리에서 서버, 애플리케이션 및 센서 이름과 같은 사물을 하드 코딩하는 대신 해당 위치에서 변수를 사용할 수 있습니다. 변수는 대시보드 상단에 드롭다운 목록으로 표시됩니다. 이러한 드롭다운을 사용하면 대시보드에 표시되는 데이터를 쉽게 변경할 수 있습니다.

이는 Grafana 최종 사용자가 시각화를 빠르게 조정할 수 있도록 허용하되 전체 편집 권한을 부여하지 않으려는 관리자에게 특히 유용할 수 있습니다. Grafana 최종 사용자는 변수를 사용할 수 있습니다.

변수 및 템플릿을 사용하면 단일 소스 대시보드도 사용할 수 있습니다. 동일한 데이터 소스 또는 서버가 여러 개 있는 경우 하나의 대시보드를 만들고 변수를 사용하여 보고 있는 내용을 변경할 수 있습니다. 이를 통해 유지 관리가 크게 간소화됩니다.

**템플릿**

템플릿은 변수를 포함하는 모든 쿼리입니다. 예를 들어 여러 서버를 모니터링하기 위해 대시보드를 관리하는 경우 각 서버에 대해 대시보드를 만들거나 하나의 대시보드를 생성하고 다음과 같은 템플릿 쿼리가 있는 패널을 사용할 수 있습니다.

```
wmi_system_threads{instance=~"$server"}
```

변수 값은 항상 var-<varname>=value 구문을 사용하여 URL에 동기화됩니다.

**예시**

변수는 화면 상단의 드롭다운 목록에 나열됩니다. 시각화가 어떻게 변경되는지 보려면 다른 변수를 선택합니다.

변수 설정을 보려면 **대시보드 설정 > 변수**로 이동합니다. 목록에서 변수를 클릭하여 해당 설정을 확인합니다. 

변수는 제목, 설명, 텍스트 패널 및 쿼리에 사용할 수 있습니다. `$`로 시작하는 텍스트가 있는 쿼리는 템플릿입니다. 모든 패널에 템플릿 쿼리가 있는 것은 아닙니다.

**변수 모범 사례**
+ 변수 드롭다운 목록은 **대시보드 설정**의 변수 목록에 나열된 순서대로 표시됩니다.
+ 자주 변경하는 변수를 맨 위에 배치하면 해당 변수가 먼저 표시됩니다(대시보드에서 맨 왼쪽).

# 변수 추가 및 관리
<a name="v9-dash-variable-add"></a>

****  
이 설명서 주제는 **Grafana 버전 9.x**를 지원하는 Grafana 워크스페이스를 위해 설계되었습니다.  
Grafana 버전 10.x를 지원하는 Grafana 워크스페이스의 경우 [Grafana 버전 10에서 작업](using-grafana-v10.md) 섹션을 참조하세요.  
Grafana 버전 8.x를 지원하는 Grafana 워크스페이스의 경우 [Grafana 버전 8에서 작업](using-grafana-v8.md) 섹션을 참조하세요.

다음 표에는 Grafana와 함께 제공되는 변수 유형이 나열되어 있습니다.


| 변수 유형 | 설명 | 
| --- | --- | 
|  Query  |  지표 이름, 서버 이름, 센서 ID, 데이터 센터 등과 같은 쿼리 생성 값 목록. 쿼리 변수를 추가합니다.  | 
|  사용자 지정  |  쉼표로 구분된 목록을 사용하여 변수 옵션을 수동으로 정의합니다. 사용자 지정 변수를 추가합니다.  | 
|  텍스트 상자  |  선택적 기본값이 있는 자유 텍스트 입력 필드를 표시합니다. 텍스트 상자 변수를 추가합니다.  | 
|  상수  |  숨겨진 상수를 정의합니다. 상수 변수를 추가합니다.  | 
|  데이터 소스  |  전체 대시보드의 데이터 소스를 빠르게 변경합니다. 데이터 소스를 추가합니다.  | 
|  간격  |  간격 변수는 시간 범위를 나타냅니다. 간격 변수를 추가합니다.  | 
|  임시 필터  |  데이터 소스의 모든 지표 쿼리에 자동으로 추가되는 키-값 필터(Prometheus, Loki, InfluxDB 및 Elasticsearch만 해당). 임시 필터를 추가합니다.  | 
|  전역 변수  |  쿼리 편집기의 표현식에 사용할 수 있는 기본 제공 변수. 전역 변수를 참조하세요.  | 
|  체인 변수  |  변수 쿼리는 다른 변수를 포함할 수 있습니다. 체인 변수를 참조하세요.  | 

## 일반 옵션 입력
<a name="v9-dash-variable-options"></a>

생성하는 모든 유형의 변수에 대한 일반 옵션을 입력해야 합니다.

**일반 옵션을 입력하는 방법**

1. 변수를 생성할 대시보드로 이동하여 페이지 상단의 **대시보드 설정**(톱니) 아이콘을 선택하세요.

1. **변수** 탭에서 **새로 만들기**를 선택하세요.

1. 변수의 **이름**을 입력하세요.

1. **유형** 목록에서 **쿼리**를 선택하세요.

1. (선택 사항) **레이블**에 변수 드롭다운의 표시 이름을 입력하세요.

   표시 이름을 입력하지 않으면 드롭다운 레이블이 변수 이름입니다.

1. **숨기기** 옵션을 선택하세요.
   + **선택 사항 없음(비어 있음):** 변수 드롭다운에 변수 **이름** 또는 **레이블** 값이 표시됩니다.
   + **레이블:** 변수 드롭다운에는 선택한 변수 값과 아래쪽 화살표만 표시됩니다.
   + **변수:** 대시보드에 변수 드롭다운이 표시되지 않습니다.

## 쿼리 변수 추가
<a name="v9-dash-variable-add-query"></a>

쿼리 변수를 사용하면 지표 이름, 태그 값 또는 키 목록을 반환할 수 있는 데이터 소스 쿼리를 작성할 수 있습니다. 예를 들어 쿼리 변수는 서버 이름, 센서 IDs 또는 데이터 센터 목록을 반환할 수 있습니다. 변수 값은 데이터 소스 쿼리를 사용하여 옵션을 동적으로 가져올 때 변경됩니다.

쿼리 변수는 일반적으로 문자열에서만 지원됩니다. 쿼리에서 숫자 또는 기타 데이터 유형을 반환하는 경우 이를 변수로 사용하려면 문자열로 변환해야 할 수 있습니다. 예를 들어 Azure 데이터 소스의 경우 이 용도로 [tostring](https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/tostringfunction) 함수를 사용할 수 있습니다.

쿼리 표현식에는 다른 변수에 대한 참조가 포함될 수 있으며 실제로 연결된 변수를 생성할 수 있습니다. Grafana에서 이를 감지하고 연결된 변수 중 하나가 변경될 때 자동으로 변수를 새로 고칩니다.

**참고**  
쿼리 표현식은 데이터 소스마다 다릅니다. 자세한 내용은 [데이터 소스](AMG-data-sources.md)에 대한 설명서를 참조하세요.

**쿼리 변수를 추가하는 방법**

1. 위와 같이 일반 옵션을 입력하세요.

1. **데이터 소스** 목록에서 쿼리의 대상 데이터 소스를 선택하세요.

1. **새로 고침** 목록에서 변수가 옵션을 업데이트해야 하는 시기를 선택하세요.
   + **대시보드 로드 시:** 대시보드가 로드될 때마다 데이터 소스를 쿼리합니다. 이 경우 대시보드를 초기화하기 전에 변수 쿼리를 완료해야 하므로 대시보드 로드가 느려집니다.
   + **시간 범위 변경 시:** 대시보드 시간 범위가 변경될 때 데이터 소스를 쿼리합니다. 변수 옵션 쿼리에 시간 범위 필터가 포함되어 있거나 대시보드 시간 범위에 따라 달라지는 경우에만 이 옵션을 사용하세요.

1. **쿼리** 필드에 쿼리를 입력하세요.
   + 쿼리 필드는 데이터 소스에 따라 다릅니다. 일부 데이터 소스에는 사용자 지정 쿼리 편집기가 있습니다.
   + 단일 입력 필드 쿼리 편집기에 더 많은 공간이 필요한 경우 필드의 오른쪽 하단에 있는 선 위에 커서를 놓고 아래로 끌어 확장하세요.

1. (선택 사항) **정규식** 필드에 정규식을 입력하여 데이터 소스 쿼리에서 반환된 이름의 특정 부분을 필터링하거나 캡처하세요. 예제를 보려면 [정규식으로 변수 필터링](#v9-dash-variable-add-filter)을 참조하세요.

1. **정렬** 목록에서 드롭다운 목록에 표시할 값의 정렬 순서를 선택하세요. 기본 옵션, **비활성화됨**은 데이터 소스 쿼리에서 반환된 옵션 순서가 사용됨을 의미합니다.

1. (선택 사항) [선택 옵션](#v9-dash-variable-add-selection)을 입력하세요.

1. **값 미리 보기**에서 Grafana는 현재 변수 값 목록을 표시합니다. 이를 검토하여 예상한 내용과 일치하는지 확인하세요.

1. **추가**를 선택하여 대시보드에 변수를 추가하세요.

## 사용자 지정 변수 추가
<a name="v9-dash-variable-add-custom"></a>

숫자 또는 문자열과 같이 변경되지 않는 값에 대해 *사용자 지정* 변수를 사용합니다.

예를 들어 변경되지 않은 서버 이름이나 리전 이름이 있는 경우 쿼리 변수가 아닌 사용자 지정 변수로 생성할 수 있습니다. 변경되지 않으므로 다른 쿼리 변수가 아닌 [체인 변수](#v9-dash-variable-add-chained)에서 사용할 수 있습니다. 이 경우 체인 변수가 업데이트될 때 Grafana에서 전송해야 하는 쿼리 수가 줄어듭니다.

**사용자 지정 변수를 추가하는 방법**

1. 위와 같이 일반 옵션을 입력하세요.

1. 이 경우 

   **쉼표로 구분된 값** 목록에서 쉼표로 구분된 목록에 이 변수의 값을 입력하세요. 공백과 콜론으로 구분된 숫자, 문자열 또는 키-값 페어를 포함할 수 있습니다. 예를 들어 `key1 : value1,key2 : value2`입니다.

1. (선택 사항) [선택 옵션](#v9-dash-variable-add-selection)을 입력하세요.

1. **값 미리 보기**에서 Grafana는 현재 변수 값 목록을 표시합니다. 이를 검토하여 예상한 내용과 일치하는지 확인하세요.

1. **추가**를 선택하여 대시보드에 변수를 추가하세요.

## 텍스트 상자 변수 추가
<a name="v9-dash-variable-add-text"></a>

*텍스트 상자* 변수는 선택적 기본값이 있는 자유 텍스트 입력 필드를 표시합니다. 값을 입력할 수 있으므로 이 변수가 가장 유연한 변수입니다. 카디널리티가 높은 지표가 있거나 대시보드에서 여러 패널을 동시에 업데이트하려는 경우 이 유형의 변수를 사용합니다.

**텍스트 상자 변수를 추가하는 방법**

1. 위와 같이 일반 옵션을 입력하세요.

1. (선택 사항) **기본값** 필드에서 변수의 기본값을 선택하세요. 이 필드에 아무 것도 입력하지 않으면 Grafana는 사용자가 텍스트를 입력할 수 있는 빈 텍스트 상자를 표시합니다.

1. **값 미리 보기**에서 Grafana는 현재 변수 값 목록을 표시합니다. 이를 검토하여 예상한 내용과 일치하는지 확인하세요.

1. **추가**를 선택하여 대시보드에 변수를 추가하세요.

## 상수 변수 추가
<a name="v9-dash-variable-add-constant"></a>

*상수* 변수를 사용하면 숨겨진 상수를 정의할 수 있습니다. 공유하려는 대시보드의 지표 경로 접두사에 유용합니다. 대시보드를 내보내면 상수 변수가 가져오기 옵션으로 변환됩니다.

상수 변수는 유연하지 *않습니다*. 각 상수 변수는 하나의 값만 보유하며 변수 설정을 업데이트하지 않으면 업데이트할 수 없습니다.

상수 변수는 쿼리에 포함해야 하지만 모든 쿼리에 다시 입력하지 않으려는 복잡한 값이 있는 경우에 유용합니다. 예를 들어 `i-0b6a61efe2ab843gg`라는 서버 경로가 있는 경우 `$path_gg`라는 변수로 바꿀 수 있습니다.

**상수 변수를 추가하는 방법**

1. 위와 같이 일반 옵션을 입력하세요.

1. **값** 필드에 변수 값을 입력하세요. 문자, 숫자 및 기호를 입력할 수 있습니다. [원시 형식](https://grafana.com/docs/grafana/latest/dashboards/variables/variable-syntax/#raw)을 사용하는 경우 와일드카드도 사용할 수 있습니다.

1. **값 미리 보기**에서 Grafana는 현재 변수 값 목록을 표시합니다. 이를 검토하여 예상한 내용과 일치하는지 확인하세요.

1. **추가**를 선택하여 대시보드에 변수를 추가하세요.

## 데이터 소스 변수 추가
<a name="v9-dash-variable-add-datasource"></a>

*데이터 소스* 변수를 사용하면 전체 대시보드의 데이터 소스를 빠르게 변경할 수 있습니다. 여러 환경에서 데이터 소스의 인스턴스가 여러 개 있는 경우 유용합니다.

**데이터 소스를 추가하는 방법**

1. 위와 같이 일반 옵션을 입력하세요.

1. **유형** 목록에서 변수의 대상 데이터 소스를 선택하세요.

1. (선택 사항) **인스턴스 이름 필터**에 변수 값 드롭다운 목록에서 선택할 데이터 소스 인스턴스의 정규식 필터를 입력하세요. 모든 인스턴스를 표시하려면 이 필드를 비워 두세요.

1. (선택 사항) [선택 옵션](#v9-dash-variable-add-selection)을 입력하세요.

1. **값 미리 보기**에서 Grafana는 현재 변수 값 목록을 표시합니다. 이를 검토하여 예상한 내용과 일치하는지 확인하세요.

1. **추가**를 선택하여 대시보드에 변수를 추가하세요.

## 간격 변수 추가
<a name="v9-dash-variable-add-internal"></a>

*간격* 변수를 사용하여 `1m`, `1h` 또는 `1d`와 같은 시간 범위를 나타냅니다. 이를 대시보드 전체에 적용되는 **group by time 명령으로 간주할 수 있습니다. 간격 변수는 시각화에서 데이터를 그룹화하는 방법을 변경합니다. 자동 옵션을 사용하여 시간 범위당 설정된 데이터 포인트 수를 반환할 수도 있습니다.

간격 변수를 그룹화 시간 파라미터(InfluxDB의 경우), 날짜 히스토그램 간격(Elasticsearch의 경우) 또는 summarize 함수 파라미터(Graphite의 경우)로 사용할 수 있습니다.

**간격 변수를 추가하는 방법**

1. 위와 같이 일반 옵션을 입력하세요.

1. **값** 필드에 변수 드롭다운 목록에서 표시할 시간 범위 간격을 입력하세요. `s (seconds)`, `m (minutes)`, `h (hours)`, `d (days)`, `w (weeks)`, `M (months)`, `y (years)`와 같은 시간 단위가 지원됩니다. 기본값(`1m,10m,30m,1h,6h,12h,1d,7d,14d,30d`)을 수락하거나 편집할 수도 있습니다.

1. (선택 사항) 목록에 `auto` 옵션을 추가하려면 **자동 옵션**을 켜세요. 이 옵션을 사용하면 현재 `auto` 시간 범위를 계산하기 위해 현재 시간 범위를 분할해야 하는 횟수를 지정할 수 있습니다. 이 기능을 켜면 두 가지 추가 옵션이 나타납니다.
   + **단계 수** - **최대 데이터 포인트** 쿼리 옵션과 마찬가지로 값을 계산하기 위해 현재 시간 범위를 분할하는 횟수를 선택합니다. 예를 들어 현재 표시되는 시간 범위가 30분인 경우 `auto` 간격은 데이터를 30분 단위로 그룹화합니다. 기본값은 30개의 단계입니다.
   + **최소 간격** - 단계 수 간격에서 시간을 나누지 않는 최소 임계치. 30분 예제를 계속하려면 최소 간격이 2m로 설정된 경우 Grafana는 데이터를 15분 증분 단위로 그룹화합니다.

1. **값 미리 보기**에서 Grafana는 현재 변수 값 목록을 표시합니다. 이를 검토하여 예상한 내용과 일치하는지 확인하세요.

1. **추가**를 선택하여 대시보드에 변수를 추가하세요.

**간격 변수 예제**

다음 예제에서는 Graphite 함수에서 템플릿 변수 `myinterval`을 보여줍니다.

```
summarize($myinterval, sum, false)
```

## 임시 필터 추가
<a name="v9-dash-variable-add-adhoc"></a>

*임시 필터*를 사용하면 지정된 데이터 소스를 사용하는 모든 지표 쿼리에 자동으로 추가되는 키-값 필터를 추가할 수 있습니다. 다른 변수와 달리 쿼리에서 임시 필터를 사용하지 않습니다. 대신 임시 필터를 사용하여 기존 쿼리에 대한 필터를 작성합니다.

**참고**  
임시 필터 변수는 Prometheus, Loki, InfluxDB 및 Elasticsearch 데이터 소스에서만 작동합니다.

1. 위와 같이 일반 옵션을 입력하세요.

1. **데이터 소스** 목록에서 대상 데이터 소스를 선택합니다.

1. **추가**를 선택하여 대시보드에 변수를 추가하세요.

**임시 필터 생성**

임시 필터는 가장 복잡하고 유연한 가용 변수 옵션 중 하나입니다. 변수 옵션의 일반적인 목록 대신 이 변수를 사용하면 대시보드 전반의 임시 쿼리를 빌드할 수 있습니다. 이러한 방식으로 적용하는 필터는 대시보드의 모든 패널에 적용됩니다.

## 변수 선택 옵션 구성
<a name="v9-dash-variable-add-selection"></a>

**선택 옵션**은 변수 옵션 선택을 관리하는 데 사용할 수 있는 기능입니다. 모든 선택 옵션은 선택 사항이며 기본적으로 꺼져 있습니다.

### 다중 값 변수
<a name="v9-dash-variable-add-selection-multi"></a>

선택한 다중 값 변수 보간은 변수가 사용되는 지정된 컨텍스트에서 유효한 문자열로 다중 값 형식을 지정하는 방법이 간단하지 않기 때문에 어렵습니다. Grafana는 각 데이터 소스 플러그인이 템플릿 지정 보간 엔진에 다중 값에 사용할 형식을 알릴 수 있도록 함으로써 이 문제를 해결하려고 합니다.

**참고**  
Grafana가 모든 값을 단일 문자열 형식으로 지정하려면 변수의 **모든 사용자 지정 값** 옵션이 비어 있어야 합니다. 비워 두면 Grafana에서는 쿼리의 모든 값을 연결(함께 추가)합니다. 예를 들어 `value1,value2,value3`입니다. 사용자 지정 `all` 값을 사용하는 경우 대신 값은 `*` 또는 `all`입니다.

**Graphite 데이터 소스에서 다중 값 변수**

Graphite에서는 glob 표현식을 사용합니다. 이 경우 다중 값 변수는 현재 값이 *host1*, *host2* 및 *host3*인 것처럼 `{host1,host2,host3}`으로 보간됩니다.

**Prometheus 또는 InfluxDB 데이터 소스에서 다중 값 변수**

InfluxDB 및 Prometheus는 정규식을 사용하므로 동일한 변수가 `(host1|host2|host3)`으로 보간됩니다. 또한 모든 값이 정규식으로 이스케이프 처리됩니다. 그렇지 않은 경우 정규식 제어 문자가 있는 값으로 인해 정규식이 손상됩니다.

**탄력적 데이터 소스에서 다중 값 변수**

Elasticsearch는 Lucene 쿼리 구문을 사용하므로 동일한 변수가 `("host1" OR "host2" OR "host3")` 형식으로 지정됩니다. 이 경우 모든 값이 이스케이프 처리되어야 합니다. 따라서 값에는 Lucene 제어 단어와 따옴표만 포함됩니다.

**다중 값 변수 문제 해결**

자동 이스케이프 처리 및 형식 지정은 문제를 일으킬 수 있으며 이후 로직을 포착하기 까다로울 수 있습니다. 특히 정규식 구문을 사용하려면 정규식 연산자 컨텍스트에서 변수를 사용해야 하는 InfluxDB 및 Prometheus의 경우에 더 까다롭습니다.

Grafana에서 이 자동 정규식 이스케이프 처리 및 형식 지정을 수행하지 않도록 하려면 다음 중 하나를 수행해야 합니다.
+ **다중 값** 또는 **모든 옵션 포함** 옵션을 끕니다.
+ [원시 변수 형식](https://grafana.com/docs/grafana/latest/dashboards/variables/variable-syntax/#raw)을 사용합니다.

### 모두 포함 옵션
<a name="v9-dash-variable-add-multi-all"></a>

Grafana는 변수 드롭다운 목록에 `All` 옵션을 추가합니다. 사용자가 이 옵션을 선택하면 모든 변수 옵션이 선택됩니다.

### 모든 값 사용자 지정
<a name="v9-dash-variable-add-multi-custom"></a>

이 옵션은 **모든 옵션 포함**을 선택한 경우에만 표시됩니다.

**모든 값 사용자 지정** 필드에 정규식, glob 또는 Lucene 구문을 입력하여 `All` 옵션의 값을 정의합니다.

기본적으로 `All` 값에는 결합된 표현식의 모든 옵션이 포함됩니다. 그러면 매우 길고 성능 문제가 있을 수 있습니다. 와일드카드 정규식과 같이 모든 사용자 지정 값을 지정하는 것이 더 나을 수 있습니다.

**모든 사용자 지정 값** 옵션에 사용자 지정 정규식, glob 또는 Lucene 구문을 포함하려면 이스케이프 처리되지 않으므로 데이터 소스에 유효한 값이 무엇인지 생각해야 합니다.

## 전역 변수
<a name="v9-dash-variable-add-global"></a>

Grafana에는 쿼리 편집기의 표현식에 사용할 수 있는 전역 기본 제공 변수가 있습니다. 이 주제에서는 사전순으로 나열하고 정의합니다. 이러한 변수는 쿼리, 대시보드 링크, 패널 링크 및 데이터 링크에 유용합니다.

**\$1\$1\$1dashboard**

이 변수는 현재 대시보드의 이름입니다.

**\$1\$1\$1from 및 \$1\$1\$1to**

Grafana에는 `$__from` 및 `$__to`의 두 가지 기본 제공 시간 범위 변수가 있습니다. 현재는 기본적으로 에포크 밀리초로 보간되지만 날짜 형식을 제어할 수 있습니다.


| 구문 | 결과 예제 | 설명 | 
| --- | --- | --- | 
|  `${__from}`  |  1594671549254  |  Unix 밀리초 에포크  | 
|  `${__from:date}`  |  2020-07-13T20:19:09.254Z  |  인수 없음, 기본값: ISO 8601/RFC 3339  | 
|  `${__from:date:iso}`  |  2020-07-13T20:19:09.254Z  |  ISO 8601/RFC 3339  | 
|  `${__from:date:seconds}`  |  1594671549  |  Unix 초 에포크  | 
|  `${__from:date:YYYY-MM}`  |  2020-07  |  : 문자를 포함하지 않는 사용자 지정 날짜 형식  | 

위의 구문은 `${__to}`에서도 작동합니다.

**\$1\$1\$1interval**

`$__interval` 변수를 그룹화 시간 파라미터(InfluxDB, MySQL, Postgres, MSSQL의 경우), 날짜 히스토그램 간격(Elasticsearch의 경우) 또는 **summarize 함수 파라미터(Graphite의 경우)로 사용할 수 있습니다.

Grafana는 쿼리에서 시간별로 그룹화하는 데 사용할 수 있는 간격을 자동으로 계산합니다. 그래프에 표시할 수 있는 것보다 많은 데이터 포인트가 있는 경우 더 큰 간격으로 그룹화하여 쿼리의 효율성을 개선할 수 있습니다. 예를 들어 3개월 분량의 데이터 그래프를 보는 경우 분 단위로 세부 정보를 보지 못할 수도 있습니다. 시간 또는 일별로 그룹화하면 그래프에 표시되는 내용에 영향을 주지 않고 쿼리의 효율성을 개선할 수 있습니다. `$__interval`은 그래프의 시간 범위와 너비(픽셀 수)를 사용하여 계산됩니다.

대략적인 계산: `(to - from) / resolution`

예를 들어, 시간 범위가 1시간이고 그래프가 전체 화면인 경우 간격은 `2m`으로 계산될 수 있습니다. 포인트는 2분 간격으로 그룹화됩니다. 시간 범위가 6개월이고 그래프가 전체 화면인 경우 간격은 `1d`(1일)일 수 있습니다. 포인트는 일별로 그룹화됩니다.

InfluxDB 데이터 소스에서 레거시 변수 `$interval`은 동일한 변수입니다. 대신 `$__interval`을 사용해야 합니다.

InfluxDB 및 Elasticsearch 데이터 소스에는 간격을 하드 코딩하거나 `$__interval` 변수에 대한 최소 제한을 설정하는 데 사용되는 `Group by time interval` 필드가 있습니다(`>` 구문 사용, 예: `>10m`).

**\$1\$1\$1interval\$1ms**

이 변수는 시간 간격 형식 문자열이 아닌 밀리초 단위의 `$__interval` 변수입니다. 예를 들어 `$__interval`이 `20m`이면 `$__interval_ms`는 `1200000`입니다.

**\$1\$1\$1org**

이 변수는 현재 조직의 ID입니다. `${__org.name}`은 현재 조직의 이름입니다.

**\$1\$1\$1user**

`${__user.id}`는 현재 사용자의 ID입니다. `${__user.login}`은 현재 사용자의 로그인 핸들입니다. `${__user.email}`은 현재 사용자의 이메일입니다.

**\$1\$1\$1range**

현재 Prometheus 및 Loki 데이터 소스에 대해서만 지원됩니다. 이 변수는 현재 대시보드의 범위를 나타냅니다. `to - from`에 의해 계산됩니다. `$__range_ms` 및 `$__range_s`와 같은 밀리초 및 초 표현을 사용합니다.

**\$1\$1\$1rate\$1interval**

현재 Prometheus 데이터 소스에 대해서만 지원됩니다. `$__rate_interval` 변수는 비율 함수에 사용하기 위해 제공됩니다.

**\$1timeFilter 또는 \$1\$1\$1timeFilter**

`$timeFilter` 변수는 현재 선택한 시간 범위를 표현식으로 반환합니다. 예를 들어 시간 범위 간격 `Last 7 days` 표현식은 `time > now() - 7d`입니다.

이는 다음을 포함한 여러 곳에서 사용됩니다.
+ InfluxDB 데이터 소스의 WHERE 절. Grafana는 쿼리 편집기 모드에서 InfluxDB 쿼리에 이를 자동으로 추가합니다. 텍스트 편집기 모드에서 수동으로 추가할 수 있습니다(`WHERE $timeFilter`).
+ Azure Monitor 데이터 소스의 Log Analytics 쿼리.
+ MySQL, Postgres 및 MSSQL의 SQL 쿼리.
+ `$__timeFilter` 변수는 MySQL 데이터 소스에서 사용됩니다.

## 체인 변수
<a name="v9-dash-variable-add-chained"></a>

*체인 변수*(*연결된 변수* 또는 *중첩된 변수*라고도 함)는 변수 쿼리에 하나 이상의 다른 변수를 포함하는 쿼리 변수입니다. 이 섹션에서는 체인 변수의 작동 방식을 설명하고 체인 변수를 사용하는 대시보드 예제에 대한 링크를 제공합니다.

체인 변수 쿼리는 모든 데이터 소스에서 다르지만, 전제는 모든 데이터 소스에서 동일합니다. 이를 허용하는 모든 데이터 소스에서 체인 변수 쿼리를 사용할 수 있습니다.

매우 복잡한 연결된 템플릿 대시보드가 나타날 수 있으며, 깊이는 5\$110의 수준입니다. 엄밀히 말하면 깊이나 복잡성에는 제한이 없지만 링크가 많을수록 쿼리 로드가 커집니다.

**모범 사례 및 팁**

다음 방법을 사용하면 대시보드와 변수를 더 쉽게 사용할 수 있습니다.

**연결된 새 변수 생성**
+ 변수를 체인화하면 상위/하위 종속 항목이 생성됩니다. 사다리나 트리로 구상할 수 있습니다.
+ 새 체인 변수를 생성하는 가장 쉬운 방법은 새 변수를 기반으로 할 변수를 복사하는 것입니다. 변수 목록에서 변수 항목 오른쪽에 있는 변수 **복제** 아이콘을 클릭하여 사본을 생성합니다. 그런 다음, 상위 변수에 대한 쿼리에 추가할 수 있습니다.
+ 이렇게 생성된 새 변수는 목록 하단에 표시됩니다. 논리적 순서로 가져오려면 목록의 다른 위치로 끌어야 할 수 있습니다.

**변수 순서**

각 항목의 오른쪽에 있는 위쪽 및 아래쪽 화살표를 클릭하여 대시보드 변수 목록에서 변수의 순서를 변경할 수 있습니다. Grafana는 이 목록에 따라 왼쪽에서 오른쪽으로 변수 드롭다운을 나열하고 이때 변수는 맨 왼쪽 상단에 위치합니다.
+ 종속 항목이 없는 변수는 하위 변수 앞, 맨 위에 나열합니다.
+ 각 변수는 종속된 항목을 따라야 합니다.
+ UI에는 종속 관계가 있는 변수에 대한 표시가 없습니다. 사용자 및 다른 사용자가 쉽게 사용할 수 있도록 변수를 논리적 순서로 나열합니다.

**복잡성 고려 사항**

변수에 종속 항목 계층이 많을수록 변수를 변경한 후 대시보드를 업데이트하는 데 시간이 오래 걸립니다.

예를 들어 연결된 변수(국가, 리전, 서버, 지표)가 네 개이고 루트 변수 값(국가)을 변경하는 경우 Grafana는 대시보드의 시각화를 업데이트하기 전에 모든 종속 변수에 대한 쿼리를 실행해야 합니다.

## 변수 관리
<a name="v9-dash-variable-add-manage"></a>

변수 페이지에서는 변수를 [추](https://grafana.com/docs/grafana/latest/dashboards/variables/add-template-variables/)가하고 기존 변수를 관리할 수 있습니다. 또한 변수를 [검사](https://grafana.com/docs/grafana/latest/dashboards/variables/inspect-variable/)하고 변수가 다른 변수나 대시보드에서 참조 또는 사용되고 있는지 식별할 수 있습니다.

**이동:** 끌어서 놓기를 사용하여 변수를 목록 위 또는 아래로 이동할 수 있습니다.

**복제:** 변수를 복제하려면 오른쪽에 있는 아이콘 세트에서 복제 아이콘을 클릭합니다. 이렇게 하면 접두사가 `copy_of_`인 원본 변수의 이름을 사용하는 변수의 사본이 생성됩니다.

**삭제:** 변수를 삭제하려면 오른쪽에 있는 아이콘 세트에서 휴지통 아이콘을 클릭합니다.

## 정규식으로 변수 필터링
<a name="v9-dash-variable-add-filter"></a>

정규식 쿼리 옵션을 사용하여 변수 쿼리에서 반환된 옵션 목록을 필터링하거나 반환된 옵션을 수정합니다.

이 페이지에서는 정규식을 사용하여 변수 드롭다운에서 값을 필터링/수정하는 방법을 보여줍니다.

정규식 쿼리 옵션을 사용하여 변수 쿼리에서 반환된 옵션 목록을 필터링하거나 반환된 옵션을 수정합니다. 자세한 내용은 Mozilla 안내서의 [Regular expressions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)를 참조하세요.

다음 예제에서는 다음 옵션 목록에 대한 필터링을 보여줍니다.

```
backend_01
backend_02
backend_03
backend_04
```

**`01` 또는 `02`로 끝나는 옵션만 반환되도록 필터링**

정규식:

```
/
(
01|02 
) 
$/
```

결과:

```
backend_01
backend_02
```

**정규식 캡처 그룹을 사용해 옵션을 필터링 및 수정하여 텍스트의 일부를 반환합니다.**

정규식:

```
/.* 
(
01|02 
)
/
```

결과:

```
01
02
```

**필터링 및 수정 - Prometheus 예제**

옵션 목록:

```
up{instance="demo.robustperception.io:9090",job="prometheus"} 1 1521630638000
up{instance="demo.robustperception.io:9093",job="alertmanager"} 1 1521630638000
up{instance="demo.robustperception.io:9100",job="node"} 1 1521630638000
```

정규식:

```
/. *instance="
(
[^"]*
)
.*/
```

결과:

```
demo.robustperception.io:9090
demo.robustperception.io:9093
demo.robustperception.io:9100
```

**이름 지정된 텍스트 및 값 캡처 그룹을 사용하여 필터링 및 수정**

이름 지정된 캡처 그룹을 사용하여 변수 쿼리에서 반환된 옵션과 별도의 '텍스트' 및 '값' 부분을 캡처할 수 있습니다. 이렇게 하면 변수 드롭다운 목록에 선택할 수 있는 각 값에 대한 친숙한 이름이 포함될 수 있습니다.

예를 들어 `node_hwmon_chip_names` Prometheus 지표를 쿼리할 때 `chip_name`은 `chip` 값보다 훨씬 더 친숙합니다. 따라서 다음과 같은 변수 쿼리 결과가 생성됩니다.

```
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_0",chip_name="enp216s0f0np0"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_1",chip_name="enp216s0f0np1"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_2",chip_name="enp216s0f0np2"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_3",chip_name="enp216s0f0np3"} 1
```

다음 정규식을 통해 전달됩니다.

```
/chip_name="(?<text>[ ^ " ] + ) |chip=" (?<value >[ ^ " ] + )/g
```

다음 드롭다운 목록을 생성합니다.

```
Display Name          Value
------------          -------------------------
enp216s0f0np0         0000:d7:00_0_0000:d8:00_0
enp216s0f0np1         0000:d7:00_0_0000:d8:00_1
enp216s0f0np2         0000:d7:00_0_0000:d8:00_2
enp216s0f0np3         0000:d7:00_0_0000:d8:00_3
```

`text` 및 `value` 캡처 그룹 이름만 지원됩니다.

## 
<a name="v9-dash-variable-add-inspect"></a>

변수 페이지를 사용하면 변수가 다른 변수 또는 대시보드에서 참조 또는 사용되고 있는지 쉽게 식별할 수 있습니다.

참조 또는 사용되는 모든 변수 옆에는 녹색 확인 표시가 있고, 참조되지 않은 변수 옆에는 주황색 주의 아이콘이 있습니다. 또한 참조된 모든 변수에는 녹색 확인 표시 옆에 종속 항목 아이콘이 있습니다. 아이콘을 선택하여 종속 항목 맵을 볼 수 있습니다. 종속 항목 맵은 이동할 수 있습니다. 마우스 휠 또는 이에 상응하는 기능을 사용하여 확대하거나 축소할 수 있습니다.

# 변수 구문
<a name="v9-dash-variable-syntax"></a>

****  
이 설명서 주제는 **Grafana 버전 9.x**를 지원하는 Grafana 워크스페이스를 위해 설계되었습니다.  
Grafana 버전 10.x를 지원하는 Grafana 워크스페이스의 경우 [Grafana 버전 10에서 작업](using-grafana-v10.md) 섹션을 참조하세요.  
Grafana 버전 8.x를 지원하는 Grafana 워크스페이스의 경우 [Grafana 버전 8에서 작업](using-grafana-v8.md) 섹션을 참조하세요.

패널 제목과 지표 쿼리는 두 가지 다른 구문을 사용하여 변수를 참조할 수 있습니다.
+ `$varname` - 이 구문은 읽기 쉽지만 단어 중간에 변수를 사용할 수 없습니다.

  **예**: `apps.frontend.$server.requests.count`
+ `${var_name}` - 표현식 중간에 변수를 사용하려는 경우 이 구문을 사용합니다.
+ `${var_name:<format>}` - 이 형식을 사용하면 Grafana에서 값을 해석하는 방법을 더 잘 제어할 수 있습니다. 자세한 내용은 *고급 변수 형식 옵션*을 참조하세요.
+ `[[varname]]` - 사용하지 않습니다. 이 구문은 오래되어 더 이상 사용되지 않습니다. 향후 릴리스에서 제거됩니다.

쿼리가 데이터 소스로 전송되기 전에 쿼리가 *보간*됩니다. 즉, 변수가 현재 값으로 대체됩니다. 보간 중에 쿼리 언어의 구문과 사용되는 위치를 준수하기 위해 변수 값이 *이스케이프 처리*될 수 있습니다. 예를 들어 InfluxDB 또는 Prometheus 쿼리의 정규식에 사용되는 변수는 정규식 이스케이프 처리됩니다.

**고급 변수 형식 옵션**

변수 보간의 형식 지정은 데이터 소스에 따라 다르지만 기본 형식 지정을 변경하려는 상황이 있습니다.

예를 들어 MySQL 데이터 소스의 기본값은 따옴표로 묶어 쉼표로 구분된 다중 값을 조인하는 것입니다(`'server01','server02'`). 경우에 따라 `server01,server02`와 같이 따옴표 없이 쉼표로 구분된 문자열을 사용할 수 있습니다. 아래에 나열된 고급 변수 형식 지정 옵션을 사용하여 이러한 작업을 수행할 수 있습니다.

**일반 구문**

구문: `${var_name:option}`

잘못된 형식 지정 옵션이 지정된 경우 `glob`가 기본/대체 옵션입니다.

**CSV**

다중 값 변수를 쉼표로 구분된 문자열 형식으로 지정합니다.

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:csv}'
Interpolation result:  'test1,test2'
```

**분산 - OpenTSDB**

다중 값 변수를 OpenTSDB에 대한 사용자 지정 형식으로 지정합니다.

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:distributed}'
Interpolation result:  'test1,servers=test2'
```

**큰따옴표**

단일 및 다중 값 변수를 쉼표로 구분된 문자열 형식으로 지정하고, 각 값에서 `"`를 `\"`로 이스케이프 처리하고 각 값을 `"`로 묶습니다.

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:doublequote}'
Interpolation result:  '"test1","test2"'
```

**Glob - Graphite**

다중 값 변수를 Graphite 쿼리에 대한 glob 형식으로 지정합니다.

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:glob}'
Interpolation result:  '{test1,test2}'
```

**JSON**

다중 값 변수를 쉼표로 구분된 문자열 형식으로 지정합니다.

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:json}'
Interpolation result:  '["test1", "test2"]'
```

**Lucene - Elasticsearch**

Elasticsearch에 대해 Lucene 형식으로 사용하여 다중 값 변수의 형식을 지정합니다.

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:lucene}'
Interpolation result:  '("test1" OR "test2")'
```

**Percentencode**

URL 파라미터에서 사용할 단일 및 다중 값 변수로 형식을 지정합니다.

```
servers = [ 'foo()bar BAZ',  'test2' ]
String to interpolate:  '${servers:percentencode}'
Interpolation result:  'foo%28%29bar%20BAZ%2Ctest2'
```

**파이프**

다중 값 변수를 파이프로 구분된 문자열 형식으로 지정합니다.

```
servers = [ 'test1.',  'test2' ]
String to interpolate:  '${servers:pipe}'
Interpolation result:  'test1.|test2'
```

**원시**

SQL 쿼리에서 작은따옴표와 같은 데이터 소스 특정 형식 지정을 끕니다.

```
servers = [ 'test.1',  'test2' ]
String to interpolate:  '${var_name:raw}'
Interpolation result:  'test.1,test2'
```

**Regex**

다중 값 변수를 정규식 문자열 형식으로 지정합니다.

```
servers = [ 'test1.',  'test2' ]
String to interpolate:  '${servers:regex}'
Interpolation result:  '(test1\.|test2)'
```

**Singlequote**

단일 및 다중 값 변수를 쉼표로 구분된 문자열 형식으로 지정하고, 각 값에서 `'`를 `\'`로 이스케이프 처리하고 각 값을 `'`로 묶습니다.

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:singlequote}'
Interpolation result:  "'test1','test2'"
```

**Sqlstring**

단일 및 다중 값 변수를 쉼표로 구분된 문자열 형식으로 지정하고, 각 값에서 `'`를 `''`로 이스케이프 처리하고 각 값을 `'`로 묶습니다.

```
servers = [ "test'1",  "test2" ]
String to interpolate:  '${servers:sqlstring}'
Interpolation result:  "'test''1','test2'"
```

**텍스트**

단일 및 다중 값 변수를 텍스트 표현 형식으로 지정합니다. 단일 변수의 경우 텍스트 표현만 반환합니다. 다중 값 변수의 경우 `+`와 결합된 텍스트 표현을 반환합니다.

```
servers = [ "test1",  "test2" ]
String to interpolate:  '${servers:text}'
Interpolation result:  "test1 + test2"
```

**쿼리 파라미터**

단일 및 다중 값 변수를 쿼리 파라미터 표현 형식으로 지정합니다. 예시: `var-foo=value1&var-foo=value2`

```
servers = [ "test1",  "test2" ]
String to interpolate:  '${servers:queryparam}'
Interpolation result:  "var-servers=test1&var-servers=test2"
```