템플릿 라벨 및 주석 - Amazon Managed Grafana

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

템플릿 라벨 및 주석

이 설명서 항목은 Grafana 버전 9.x를 지원하는 Grafana 작업 영역을 위해 설계되었습니다.

Grafana 버전 10.x를 지원하는 Grafana 작업 영역에 대한 내용은 을 참조하십시오. Grafana 버전 10에서 작업하기

Grafana 버전 8.x를 지원하는 Grafana 작업 영역에 대한 내용은 을 참조하십시오. Grafana 버전 8에서 작업하기

Grafana에서는 Prometheus에서처럼 레이블과 주석을 템플릿으로 만들 수 있습니다. 이전에 Prometheus를 사용해 본 적이 있다면 $labels 경고의 레이블과 값을 포함하는 $value 및 변수를 잘 알고 있을 것입니다. 알림에서 Prometheus 데이터 소스를 사용하지 않더라도 Grafana에서 동일한 변수를 사용할 수 있습니다. 이전에 Prometheus를 사용해 본 적이 없더라도 걱정하지 마세요. 각 변수와 템플릿 작성 방법은 이 페이지의 나머지 부분을 따라 진행하면서 설명될 것입니다.

Go의 템플릿 작성 언어

라벨 및 주석용 템플릿은 Go의 템플릿 언어인 텍스트/템플릿으로 작성됩니다.

태그 열기 및 닫기

텍스트/템플릿에서 템플릿은 템플릿이 변수를 인쇄하는지 또는 if {{ 문과 같은 제어 구조를 실행하는지에 }} 관계없이 로 시작하고 끝납니다. 이는 변수를 인쇄할 때 and와 제어 구조에서 {{}} 를 사용하는 Jinja와 같은 다른 템플릿 언어와는 다릅니다. {% %}

인쇄

값을 출력하려면 및 를 사용하십시오. {{ }} 함수의 결과 또는 변수 값을 인쇄할 수 있습니다. 예를 들어 $labels 변수를 인쇄하려면 다음과 같이 작성하면 됩니다.

{{ $labels }}

레이블을 반복해서 살펴보세요.

에서 각 레이블을 반복하려면 $labels a를 사용할 수 있습니다. range 여기서는 $k 현재 레이블의 이름과 값을 $v 나타냅니다. 예를 들어, 쿼리에서 레이블이 반환된 instance=test 경우 $k 레이블도 instance 반환되고 반환될 $v 것입니다test.

{{ range $k, $v := $labels }} {{ $k }}={{ $v }} {{ end }}

레이블, 값 및 값 변수

라벨 변수

$labels변수에는 쿼리의 레이블이 포함됩니다. 예를 들어 인스턴스가 다운되었는지 확인하는 쿼리는 다운된 인스턴스의 이름이 포함된 인스턴스 레이블을 반환할 수 있습니다. 예를 들어 인스턴스 중 하나가 5분 이상 중단되면 실행되는 알림 규칙이 있다고 가정해 보겠습니다. 어떤 인스턴스가 다운되었는지 알려주는 요약을 알림에 추가하려고 합니다. $labels변수를 사용하여 요약에 인스턴스 레이블을 인쇄하는 요약을 만들 수 있습니다.

Instance {{ $labels.instance }} has been down for more than 5 minutes

점이 있는 레이블

템플릿에서 같은 점을 사용하여 인쇄하려는 라벨의 이름에 점 (마침표 또는 마침표) 이 포함된 경우 다음과 같이 할 수 없습니다.

Instance {{ $labels.instance.name }} has been down for more than 5 minutes

템플릿이 in이라는 name 존재하지 않는 필드를 사용하려고 하기 때문입니다. $labels.instance 대신 변수에 instance.name 레이블을 인쇄하는 index 함수를 사용해야 합니다. $labels

Instance {{ index $labels "instance.name" }} has been down for more than 5 minutes

값 변수

$value 변수는 Prometheus와 다르게 작동합니다. $valuePrometheus에서는 표현식의 값을 포함하는 부동 소수점 숫자이지만 Grafana에서는 이 경고 규칙의 모든 임계값, Reduce 및 Math 표현식과 클래식 조건의 레이블과 값을 포함하는 문자열입니다. 쿼리 결과는 10~10,000개의 행 또는 메트릭을 반환할 수 있으므로 쿼리 결과는 포함되지 않습니다.

알림 요약에 $value 변수를 사용하려는 경우:

{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $value }})

요약은 다음과 같을 수 있습니다.

api has an over 5% of responses with 5xx errors: [ var='B' labels={service=api} value=6.789 ]

다음은 ReFID B가 있는 표현식을 var='B' 참조합니다. Grafana에서 모든 쿼리와 표현식은 경고 규칙의 각 쿼리와 표현식을 식별하는 ReFID로 식별됩니다. 마찬가지로 레이블을 labels={service=api} 참조하며 value=6.789 값을 나타냅니다.

ReFID A가 없는 것을 보셨을 수도 있습니다. 이는 대부분의 경고 규칙에서 reFID A가 쿼리를 참조하고 쿼리는 해당 쿼리가 포함되지 않은 많은 행 또는 시계열을 반환할 수 있기 때문입니다. $value

값 변수

$value변수에 필요한 것보다 많은 정보가 들어 있는 경우 대신 를 사용하여 개별 표현식의 레이블과 값을 인쇄할 수 $values 있습니다. 이와 달리 $value $values 변수는 각 표현식의 레이블과 부동 소수점 값이 포함된 객체 테이블이며, 해당 reFID로 인덱싱됩니다.

알림 B 요약에서 reFID를 사용하여 표현식의 값을 인쇄하려는 경우:

{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $values.B }}%

요약에는 다음 값만 포함됩니다.

api has an over 5% of responses with 5xx errors: 6.789%

그러나 숫자 6.789를 {{ $values.B }} 인쇄하는 경우 실제로는 reFID B의 레이블과 값을 모두 포함하는 객체를 인쇄하는 문자열이며, ReFID B의 부동 소수점 값을 사용하려면 의 필드를 사용해야 합니다. Value $values.B 알림 요약에서 부동 소수점 값을 인간화하려는 경우:

{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanize $values.B.Value }}%

데이터 없음, 런타임 오류 및 타임아웃

경고 규칙의 쿼리가 데이터를 반환하지 않거나 데이터 소스 오류 또는 시간 초과로 인해 실패하는 경우 해당 쿼리를 사용하는 Threshold, Reduce 또는 Math 표현식도 데이터를 반환하지 않거나 오류를 반환합니다. 이 경우 이러한 표현식은 없어집니다. $values 사용하기 전에 RefID가 있는지 확인하는 것이 좋습니다. 그렇지 않으면 쿼리에서 데이터가 반환되지 않거나 오류가 발생하면 템플릿이 손상됩니다. if 문을 사용하여 이 작업을 수행할 수 있습니다.

{{ if $values.B }}{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanizePercentage $values.B.Value }}{{ end }}

클래식 조건

규칙이 임계값, 감소 및 수학 표현식 대신 클래식 조건을 사용하는 경우 $values 변수는 참조 ID와 클래식 조건의 조건 위치를 기준으로 인덱싱됩니다. 예를 들어, ReFID B에 두 개의 조건이 포함된 클래식 조건이 있는 경우 두 개의 조건과 $values 이 포함됩니다. B0 B1

The first condition is {{ $values.B0 }}, and the second condition is {{ $values.B1 }}

함수

레이블과 주석을 확장할 때도 다음 함수를 사용할 수 있습니다.

args

args 함수는 arg0, arg1 등의 키를 사용하여 객체 목록을 맵으로 변환합니다. 이는 템플릿에 여러 인수를 전달할 수 있도록 하기 위한 것입니다.

{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}}
1 2

외부 URL

externalURL 함수는 ini 파일에 구성된 Grafana 서버의 외부 URL을 반환합니다.

{{ externalURL }}
https://example.com/grafana

그래프링크

graphLink 함수는 지정된 표현식과 데이터 소스의 Grafana 버전 9에서 둘러보기 그래픽 뷰 경로를 반환합니다.

{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}]

인간화

humanize 함수는 십진수를 인간화합니다.

{{ humanize 1000.0 }}
1k

인간화:1024

1000과 비슷하게 humanize1024 humanize 작동하지만 1024를 기본으로 사용합니다.

{{ humanize1024 1024.0 }}
1ki

휴머나이즈 듀레이션

humanizeDuration 함수는 지속 시간을 초 단위로 인간화합니다.

{{ humanizeDuration 60.0 }}
1m 0s

퍼센트 인간화

humanizePercentage 함수는 비율 값을 백분율로 인간화합니다.

{{ humanizePercentage 0.2 }}
20%

타임스탬프 인간화

humanizeTimestamp 함수는 Unix 타임스탬프를 인간화합니다.

{{ humanizeTimestamp 1577836800.0 }}
2020-01-01 00:00:00 +0000 UTC

매칭

match함수는 텍스트를 정규 표현식 패턴과 일치시킵니다.

{{ match "a.*" "abc" }}
true

경로 접두사

pathPrefix 함수는 ini 파일에 구성된 Grafana 서버의 경로를 반환합니다.

{{ pathPrefix }}
/grafana

테이블링크

tableLink 함수는 지정된 표현식과 데이터 소스에 Grafana 버전 9에서 둘러보기 대한 표 형식 뷰의 경로를 반환합니다.

{{ tableLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}]

title

title함수는 각 단어의 첫 글자를 대문자로 표시합니다.

{{ title "hello, world!" }}
Hello, World!

토로워

toLower 함수는 모든 텍스트를 소문자로 반환합니다.

{{ toLower "Hello, world!" }}
hello, world!

토우 어퍼

toUpper 함수는 모든 텍스트를 대문자로 반환합니다.

{{ toUpper "Hello, world!" }}
HELLO, WORLD!

reReplaceAll

reReplaceAll함수는 정규 표현식과 일치하는 텍스트를 대체합니다.

{{ reReplaceAll "localhost:(.*)" "example.com:$1" "localhost:8080" }}
example.com:8080