템플릿 및 변수 - Amazon Managed Grafana

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

템플릿 및 변수

이 설명서 주제는 Grafana 버전 8.x를 지원하는 Grafana 워크스페이스를 위해 설계되었습니다.

Grafana 버전 10.x를 지원하는 Grafana 워크스페이스의 경우 Grafana 버전 10에서 작업 섹션을 참조하세요.

Grafana 버전 9.x를 지원하는 Grafana 워크스페이스의 경우 Grafana 버전 9에서 작업 섹션을 참조하세요.

변수는 값의 자리표시자입니다. 지표 쿼리 및 패널 제목에서 변수를 사용할 수 있습니다. 변수를 사용하면 보다 동적이고 대화형 기능이 강화된 대시보드를 생성할 수 있습니다. 지표 쿼리에서 서버, 애플리케이션 및 센서 이름과 같은 사물을 하드 코딩하는 대신 해당 위치에서 변수를 사용할 수 있습니다.

변수는 대시보드 상단에 드롭다운 목록으로 표시됩니다. 대시보드 상단의 드롭다운 목록을 사용하여 값을 변경하는 경우 패널의 지표 쿼리에 새 값이 반영됩니다.

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

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

지원되는 변수 유형 목록과 각 변수 유형 추가 지침은 변수 유형 섹션을 참조하세요.

템플릿

템플릿은 변수를 포함하는 모든 쿼리입니다.

예를 들어 여러 서버를 모니터링하기 위해 대시보드를 관리하는 경우 각 서버에 대한 대시보드를 만들 수 있습니다. 또는 다음 예제와 같이 하나의 대시보드를 생성하고 템플릿 쿼리가 있는 패널을 사용할 수 있습니다.

wmi_system_threads{instance=~"$server"}

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

변수 모범 사례

변수 드롭다운 목록은 대시보드 설정의 변수 목록에 나열된 순서대로 표시됩니다.

자주 변경하는 변수를 맨 위에 배치하면 해당 변수가 먼저 표시됩니다(대시보드에서 맨 왼쪽).

변수 구문

패널 제목과 지표 쿼리는 두 가지 다른 구문을 사용하여 변수를 참조할 수 있습니다.

  • $varname 다음 예제와 같이 이 구문을 더 쉽게 읽을 수 있습니다. apps.frontend.$server.requests.count. 하지만 단어 중간에 변수를 사용할 수 없습니다.

  • ${var_name} - 표현식 중간에 변수를 보간하려는 경우 이 구문을 사용합니다.

  • ${var_name:<format>} - 이 형식을 사용하면 Grafana에서 값을 보간하는 방법을 더 잘 제어할 수 있습니다. 자세한 내용은 고급 변수 형식 옵션 단원을 참조하십시오.

쿼리가 데이터 소스로 전송되기 전에 쿼리가 보간됩니다. 즉, 변수가 현재 값으로 대체됩니다. 보간 중에 쿼리 언어의 구문과 사용되는 위치를 준수하기 위해 변수 값이 이스케이프 처리될 수 있습니다. 예를 들어 Prometheus 쿼리의 정규식에 사용되는 변수는 정규식으로 이스케이프 처리됩니다. 보간 중 값 이스케이프 처리에 대한 자세한 내용은 데이터 소스별 설명서 주제를 참조하세요.

데이터 소스 기본 형식을 재정의하는 고급 구문에 대한 자세한 내용은 고급 변수 형식 옵션 섹션을 참조하세요.

기타 변수 옵션

이 섹션에서는 사용 가능한 다른 변수 옵션을 설명합니다.

변수 선택 옵션 입력

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

다중 값

이 옵션을 켜면 변수 드롭다운 목록에서 여러 옵션의 동시 선택을 지원합니다. 자세한 내용은 다중 값 변수 형식 지정 단원을 참조하십시오.

모두 포함 옵션

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

모든 사용자 지정 값

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

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

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

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

고급 변수 형식 옵션

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

예를 들어 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 - OpenSearch

다중 값 변수를 OpenTSDB에 대한 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 = ['test1.', '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"

다중 값 변수 형식 지정

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

참고

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

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

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

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

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

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

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

형식 문제 해결

자동 이스케이프 처리 및 서식 지정으로 문제가 생길 수 있습니다. 특히 InfluxDB 및 Prometheus에서 문제 이면의 논리를 파악하기란 쉽지 않습니다. 이 경우 정규식 구문을 사용하려면 정규식 연산자 컨텍스트에서 변수를 사용해야 하기 때문입니다.

Grafana가 이 자동 정규식 이스케이프 처리 및 서식 지정을 수행하지 않도록 하려면 다음 중 하나를 수행해야 합니다.

  • 다중 값, 모두 포함 옵션 옵션을 끕니다.

  • [원시 변수 형식]({{< relref "advanced-variable-format-options.md#raw" >}})을 사용합니다.

정규식으로 변수 필터링

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

이 섹션에서는 정규식을 사용하여 변수 드롭다운 목록에서 값을 필터링하고 수정하는 방법을 보여줍니다.

정규식 쿼리 옵션을 사용하여 변수 쿼리에서 반환된 옵션 목록을 필터링하거나 반환된 옵션을 수정합니다. 자세한 내용은 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_namechip 값보다 더 친숙합니다. 다음 변수 쿼리 결과로 시작합니다.

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

참고: textvalue 캡처 그룹 이름만 지원됩니다.

패널 또는 행 반복

템플릿 변수를 사용하여 동적 대시보드를 생성할 수 있습니다. 쿼리의 모든 변수는 쿼리가 데이터베이스로 전송되기 전에 변수의 현재 값으로 확장됩니다. 변수를 사용하면 모든 서비스에 단일 대시보드를 재사용할 수 있습니다.

템플릿 변수는 전체 대시보드에서 쿼리를 동적으로 변경하는 데 매우 유용할 수 있습니다. Grafana에서 선택한 값을 기반으로 새 패널 또는 행을 동적으로 생성하도록 하려면 반복 기능을 사용할 수 있습니다.

패널 반복

Multi-value 또는 Include all value 옵션이 켜져 있는 변수가 있는 경우 패널 하나를 선택하고 Grafana에서 선택한 모든 값에 대해 해당 패널을 반복하도록 할 수 있습니다. 패널 편집 모드의 일반 탭에서 반복 기능을 찾을 수 있습니다.

direction에서는 패널 배열 방법을 제어합니다.

horizontal을 선택하면 패널이 나란히 배열됩니다. Grafana는 각 반복 패널의 너비를 자동으로 조정하여 전체 행을 채웁니다. 현재 행의 다른 패널을 반복 패널과 혼합할 수 없습니다.

Max per row를 설정하여 Grafana에 행당 원하는 최대 패널 수를 알려줍니다. 기본값은 4입니다.

vertical을 선택하면 패널이 열에서 배열(위에서 아래 방향)됩니다. 반복되는 패널의 너비는 반복되는 첫 번째 패널(원본 템플릿)과 동일합니다.

첫 번째 패널(원본 템플릿)만 변경합니다. 변경 사항이 모든 패널에 적용되려면 동적 대시보드를 다시 빌드하도록 시작해야 합니다. 변수 값(즉, 반복의 기준)을 변경하거나 대시보드를 다시 로드하여 이 작업을 수행할 수 있습니다.

참고

패널을 반복하려면 변수에서 하나 이상의 항목을 선택해야 합니다. 패널을 0회 반복하여 숨길 수 없습니다.

행 반복

위에서 볼 수 있듯이 패널에서 Multi-value 또는 Include all value 선택 옵션으로 변수가 설정된 경우에도 행을 반복할 수 있습니다.

이 기능을 켜려면 먼저 패널 추가 메뉴를 사용하여 새 을 추가해야 합니다. 그런 다음, 행 제목에서 일시 중지하고 톱니 버튼을 선택하여 Row Options 구성 패널에 액세스합니다. 그런 다음, 행을 반복할 변수를 선택할 수 있습니다.

모범 사례는 행 제목에도 변수를 사용하는 것입니다.