

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

# 알림 전달 관리
<a name="v9-alerting-managenotifications"></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) 섹션을 참조하세요.

알림 전달을 보내는 방법, 시간 및 위치를 선택하는 것은 알림 시스템 설정의 중요한 부분입니다. 이러한 결정은 문제를 빠르게 해결하고 중요한 부분을 놓치지 않는 역량에 직접적인 영향을 미칩니다.

첫 번째 단계로 알림 전달을 보낼 *연락 지점*을 정의하세요. 연락 지점은 일치하는 알림의 대상 세트일 수 있습니다. 알림에서 재사용 및 일관된 메시징을 위해 알림 템플릿을 연락 지점에 추가하세요.

그런 다음, *알림 정책*을 생성하세요. 이 정책은 알림이 연락 지점로 라우팅되는 위치, 시간 및 방법에 대한 규칙 세트입니다. 알림 정책에서 생성한 연락 지점 중 하나를 선택하여 알림 전달을 보낼 위치를 정의합니다. 알림 정책에 음소거 타이밍을 추가하세요. *음소거 타이밍*은 알림을 전송하지 않으려는 반복 시간 간격입니다.

알림 규칙이 평가되면 알림 눈금자는 알림 인스턴스를 Alertmanager로 전송합니다. 하나의 알림 규칙이 여러 개별 *알림 인스턴스*를 트리거할 수 있습니다.

Alertmanager는 이러한 알림 인스턴스를 수신한 다음, 음소거 타이밍을 처리하고 알림을 그룹화하며 알림 정책에 정의된 대로 연락 지점에 알림을 보냅니다.

**Topics**
+ [Alertmanager](v9-alerting-managenotifications-alertmanager.md)
+ [연락 지점 작업](v9-alerting-contact-points.md)
+ [알림 정책 작업](v9-alerting-notification-policies.md)
+ [알림 사용자 지정](v9-alerting-notifications.md)
+ [Prometheus 데이터 소스에 대한 알림 전달 무음 처리](v9-alerting-silences.md)
+ [음소거 타이밍](v9-alerting-notification-muting.md)
+ [알림 그룹별 보기 및 필터링](v9-alerting-viewfiltergroups.md)
+ [알림 오류 보기](v9-alerting-viewnotificationerrors.md)

# Alertmanager
<a name="v9-alerting-managenotifications-alertmanager"></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) 섹션을 참조하세요.

Alertmanager를 사용하면 알림을 빠르고 효율적으로 관리하며 대응할 수 있습니다. 이메일 또는 Slack과 같이 선택한 채널을 통해 알림을 보내 알림을 수신하고, 음소거, 억제, 그룹화 및 라우팅을 처리합니다.

Grafana에서는 Grafana Alertmanager 또는 외부 Alertmanager를 사용할 수 있습니다. 또한 여러 Alertmanager를 실행할 수 있습니다. 결정은 설정 및 알림이 생성되는 위치에 따라 달라집니다.

**Grafana Alertmanager**

Grafana Alertmanager는 Grafana 온프레미스 또는 오픈 소스를 실행하는 경우 사전 구성되고 기본적으로 선택할 수 있는 내부 Alertmanager입니다.

Grafana Alertmanager는 Grafana로부터 알림을 수신할 수 있지만 Mimir 또는 Loki와 같은 Grafana 외부에서 알림을 수신할 수는 없습니다.

**참고**  
Grafana Alertmanager에서는 금지 규칙이 지원되지 않습니다.

**외부 Alertmanager**

단일 Alertmanager를 사용하여 모든 Grafana, Loki, Mimir 및 Prometheus 알림을 수신하려면 외부 Alertmanager를 사용하도록 Grafana를 설정할 수 있습니다. Grafana 자체 내에서 이 외부 Alertmanager를 구성하고 관리할 수 있습니다.

다음은 Grafana Alertmanager 대신 자체 외부 Alertmanager를 구성하고 알림을 보낼 수 있는 두 가지 예제입니다.

1. Prometheus와 같은 다른 알림 생성기가 있기 때문에 자체 클라우드 인프라에 이미 설정한 온프레미스 Alertmanager를 보유하고 있으며, 계속 사용하려고 합니다.

1. Prometheus 온프레미스 및 호스팅 Grafana를 모두 사용하여 클라우드 인프라에서 실행되는 동일한 Alertmanager에 알림을 보내려고 합니다.

Alertmanager는 알림 연락 지점 및 알림 정책 페이지의 드롭다운 메뉴에서 볼 수 있습니다.

데이터 소스를 프로비저닝하는 경우 `jsonData` 필드에서 `handleGrafanaManagedAlerts` 플래그를 `true`로 설정하여 Grafana 관리형 알림을 이 Alertmanager로 보내세요.

# 연락 지점 작업
<a name="v9-alerting-contact-points"></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) 섹션을 참조하세요.

연락 지점을 사용하여 알림이 시작될 때 연락처로 알림을 보내는 방법을 정의합니다. 연락 지점에는 Amazon Simple Notification Service 또는 Slack과 같은 하나 이상의 연락 지점 통합이 있을 수 있습니다. 알림이 시작되면 연락 지점에 대해 나열된 모든 연락 지점 통합에 알림이 전송됩니다. 선택적으로 [알림 템플릿](v9-alerting-create-templates.md)을 통해 연락 지점 유형에 대한 알림 메시지를 사용자 지정합니다.

**참고**  
Grafana 관리형 알림에 대한 연락 지점을 생성 및 편집할 수 있습니다. Alertmanager 알림에 대한 연락 지점은 읽기 전용입니다.

## 연락 지점 작업
<a name="v9-alerting-working-contact-points"></a>

다음 절차에서는 연락 지점을 추가, 편집, 테스트 및 삭제하는 방법을 자세히 설명합니다.

**연락 지점을 추가하는 방법**

1. Grafana 콘솔의 Grafana 메뉴에서 **알림**(종 모양) 아이콘을 선택하여 **알림** 페이지를 여세요.

1. **연락 지점**, **연락 지점 추가**를 차례로 선택하세요.

1. **Alertmanager** 드롭다운에서 Alertmanager를 선택하세요. Grafana Alertmanager는 기본적으로 선택됩니다.

1. 연락 지점의 **이름**을 입력하세요.

1. **연락 지점 통합**에서 유형을 선택하고 해당 유형을 기반으로 필수 필드를 선택하세요. 예를 들어 Slack을 선택한 경우 Slack 채널과 연락을 받아야 하는 사용자를 입력하세요.

1. 선택한 연락 지점에 대해 사용할 수 있는 경우 원하는 **선택적 설정**을 선택하여 추가 설정을 지정하세요.

1. **알림 설정**에서 알림이 확인될 때 알림을 받지 않으려면 **확인된 메시지 비활성화**를 선택하세요.

1. 연락 지점에 더 많은 연락 지점 유형이 필요한 경우 **연락 지점 통합 추가**를 선택하고 필요한 각 연락 지점 유형에 대해 단계를 반복할 수 있습니다.

1. **연락 지점 저장**을 선택하여 변경 사항을 저장하세요.

**연락 지점을 편집하는 방법**

1. **연락 지점**을 선택하여 기존 연락 지점 목록을 확인하세요.

1. 편집할 연락 지점을 선택한 다음, **편집** 아이콘(펜)을 선택하세요.

1. 필요한 사항을 변경한 다음, **연락 지점 저장**을 선택하여 변경 사항을 저장하세요.

연락 지점을 생성한 후 테스트 알림을 보내 올바르게 구성되었는지 확인할 수 있습니다.

**테스트 알림을 전송하는 방법**

1. **연락 지점**을 선택하여 기존 연락 지점 목록을 여세요.

1. 테스트할 연락 지점을 선택한 다음, **편집** 아이콘(펜)을 선택하세요.

1. **테스트** 아이콘(종이 비행기)을 선택하세요.

1. 사전 정의된 테스트 알림을 보낼지 또는 **사용자 지정**을 선택하여 테스트 알림에 사용자 지정 주석과 레이블을 추가할지 선택하세요.

1. 지정된 연락 지점으로의 알림을 테스트하려면 **테스트 알림 전송**을 선택하세요.

알림 정책에서 사용하지 않는 연락 지점을 삭제할 수 있습니다.

**연락 지점을 삭제하는 방법**

1. **연락 지점**을 선택하여 기존 연락 지점 목록을 여세요.

1. 삭제할 연락 지점을 선택한 다음, **삭제** 아이콘(휴지통)을 선택하세요.

1. 확인 대화 상자에서 **예, 삭제**를 선택하세요.

**참고**  
알림 정책에서 연락 지점을 사용 중인 경우 연락 지점을 삭제하기 전에 알림 정책을 삭제하거나 다른 연락 지점을 사용하도록 편집해야 합니다.

## 지원되는 전달자 목록
<a name="v9-alerting-contactpoint-supported-notifiers"></a>


|  이름  |  Type  | 
| --- | --- | 
| Amazon SNS  |  sns  | 
|  OpsGenie  |  opsgenie  | 
| PagerDuty  |  pagerduty  | 
| Slack  |  slack  | 
|  VictorOps  |  victorops  | 

# 알림 정책 작업
<a name="v9-alerting-notification-policies"></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) 섹션을 참조하세요.

알림 정책은 알림이 연락 지점으로 라우팅되는 방법을 결정합니다. 정책은 트리 구조를 사용하며, 각 정책에는 하나 이상의 하위 정책이 있을 수 있습니다. 루트 정책을 제외한 각 정책은 특정 알림 레이블과 일치할 수도 있습니다. 각 알림은 루트 정책 및 각 하위 정책에 따라 평가됩니다. 특정 정책에 대해 `Continue matching subsequent sibling nodes` 옵션을 활성화하면 하나 이상의 일치 후에도 평가가 계속됩니다. 상위 정책의 구성 설정 및 연락 지점 정보는 하위 정책과 일치하지 않는 알림의 동작을 제어합니다. 루트 정책은 특정 정책과 일치하지 않는 모든 알림을 제어합니다.

**참고**  
Grafana 관리형 알림에 대한 알림 정책을 생성 및 편집할 수 있습니다. Alertmanager 알림에 대한 알림 정책은 읽기 전용입니다.

**알림 그룹화**

그룹화는 유사한 속성의 알림 전달을 단일 깔대기로 분류합니다. 그러면 시스템의 많은 부분이 한 번에 장애가 발생하여 많은 수의 알림이 동시에 시작될 때 보다 큰 규모의 중단 중에도 알림 전달을 제어할 수 있습니다.

**그룹화 예제**

서로 다른 환경의 데이터베이스에 연결된 서비스가 100개라고 가정합니다. 이러한 서비스는 레이블 `env=environmentname`으로 구분됩니다. 서비스가 데이터베이스에 도달할 수 있는지 여부를 모니터링하기 위한 알림 규칙이 마련되어 있습니다. 알림 규칙은 `alertname=DatabaseUnreachable`이라는 알림을 생성합니다.

서비스의 절반이 더 이상 데이터베이스에 도달할 수 없는 네트워크 파티션이 발생하면 50개의 서로 다른 알림이 시작됩니다. 이 상황에서는 영향을 받는 환경 목록이 포함된 단일 페이지 알림(50페이지가 아님)을 수신하려고 합니다.

`group_by: [alertname]`로 그룹화를 구성할 수 있습니다(서비스마다 서로 다른 `env` 레이블을 사용하지 않음). 이 구성을 마련하면 Grafana에서 이 알림 규칙의 영향을 받는 모든 환경이 포함된 단일 압축 알림을 보냅니다.

**특수 그룹**

Grafana에는 두 개의 특수 그룹이 있습니다. 기본 그룹(`group_by: null`)은 *모든* 알림을 단일 그룹으로 그룹화합니다. `...`이라는 특수 레이블을 사용하여 모든 레이블별로 알림을 그룹화하고 그룹을 효과적으로 비활성화하며 각 알림을 자체 그룹으로 보낼 수도 있습니다.

## 알림 작업
<a name="v9-alerting-notification-policies-working"></a>

다음 절차에서는 알림 정책을 생성 및 관리하는 방법을 보여줍니다.

**루트 알림 정책을 편집하는 방법**

1. Grafana 콘솔의 Grafana 메뉴에서 **알림**(종 모양) 아이콘을 선택하여 **알림** 페이지를 여세요.

1. **알림 정책**을 선택하세요.

1. **Alertmanager** 드롭다운에서 편집할 Alertmanager를 선택하세요.

1. **루트 정책** 섹션에서 **편집** 아이콘(펜)을 선택하세요.

1. **기본 연락 지점**에서 알림 규칙이 특정 정책과 일치하지 않을 때 규칙에 대한 알림을 보내야 하는 연락 지점을 업데이트하세요.

1. **그룹화 기준**에서 알림을 그룹화할 기준이 되는 레이블 또는 특수 그룹을 선택하세요.

1. **타이밍 옵션**의 다음 옵션 중에서 선택하세요.
   + **그룹 대기** - 초기 알림을 전송하기 전에 동일한 그룹의 알림을 버퍼링하기 위해 대기하는 시간. 기본값은 30초입니다.
   + **그룹 간격** - 그룹에 대한 두 알림 사이의 최소 시간 간격. 기본값은 5분입니다.
   + **반복 간격** - 그룹에 새 알림이 추가되지 않은 경우 알림을 다시 보내기 전 최소 시간 간격. 기본값은 4시간입니다.

1. **저장**을 선택하여 변경 사항을 저장합니다.

**최상위 수준의 새 정책을 추가하는 방법**

1. Grafana 콘솔의 Grafana 메뉴에서 **알림**(종 모양) 아이콘을 선택하여 **알림** 페이지를 여세요.

1. **알림 정책**을 선택하세요.

1. **Alertmanager** 드롭다운에서 편집할 Alertmanager를 선택하세요.

1. **특정 라우팅** 섹션에서 **새 특정 정책**을 선택하세요.

1. **일치하는 레이블** 섹션에서 일치하는 알림 레이블을 하나 이상 추가하세요. 레이블 일치에 대한 자세한 내용은 이 주제의 뒷부분에 나와 있습니다.

1. **연락 지점**에서 알림이 이 특정 정책과 일치하는 경우 알림을 전송할 연락 지점을 추가합니다. 중첩된 정책은 이 연락 지점을 재정의합니다.

1. 선택적으로 알림이 현재 정책과 일치한 후에도 계속 형제 정책 일치를 수행하려면 **후속 형제 노드 연속 매칭**을 활성화합니다. 이 옵션을 활성화하면 동일한 알림에 대해 둘 이상의 알림을 받을 수 있습니다.

1. 선택적으로 **그룹화 재정의**를 선택하여 루트 정책과 다른 그룹화를 지정합니다.

1. 선택적으로 그룹 알림 정책의 타이밍 옵션을 재정의하려면 **일반 타이밍 재정의**를 선택하세요.

1. 변경 사항을 저장하려면 **정책 저장**을 선택합니다.

**중첩된 정책을 추가하는 방법**

1. 중첩된 정책을 생성할 특정 정책을 확장하세요.

1. **중첩된 정책 추가**를 선택하고 최상위 수준 특정 정책을 추가할 때와 같이 세부 정보를 추가하세요.

1. 변경 사항을 저장하려면 **정책 저장**을 선택합니다.

**특정 정책을 편집하는 방법**

1. **알림** 페이지에서 **알림 정책**을 선택하여 기존 정책을 나열하는 페이지를 엽니다.

1. 편집할 구성 정책을 선택하고 **편집** 아이콘(펜)을 선택하세요.

1. 최상위 수준별 정책을 추가할 때와 같이 변경하세요.

1. **정책 저장**을 선택합니다.

**정책 검색**

*레이블 매처* 또는 *연락 지점*별로 정책 트리 내에서 검색할 수 있습니다.
+ 연락 지점별로 검색하려면 **연락 지점별 검색** 필드에 연락 지점의 이름 일부 또는 전체를 입력하세요.
+ 레이블로 검색하려면 **레이블별 검색** 필드에 유효한 레이블 매처를 입력하세요. 쉼표로 구분하여 여러 매처를 입력할 수 있습니다. 예를 들어 유효한 매처 입력은 `severity=high, region=~EMEA|NA`일 수 있습니다.
**참고**  
레이블로 검색할 때 일치하는 모든 정책은 정확히 일치합니다. 부분 일치 및 정규식 스타일의 일치는 지원되지 않습니다.

**레이블 일치 작동 방식**

알림의 레이블이 정책에 지정된 모든 *일치 레이블*과 일치하는 경우 정책은 알림과 일치합니다.
+ **레이블** - 일치시킬 레이블의 이름. 알림의 레이블 이름과 정확히 일치해야 합니다.
+ **연산자** - 레이블 값을 일치 레이블 값과 비교하는 데 사용되는 연산자. 사용 가능한 연산자는 다음과 같습니다.
  + `=` 값이 제공된 문자열과 정확히 일치하는 레이블을 선택합니다.
  + `!=` 값이 제공된 문자열과 일치하지 않는 레이블을 선택합니다.
  + `=~` 값이 제공된 문자열의 정규식 해석 값과 일치하는 레이블을 선택합니다(제공된 문자열은 정규식으로 해석됨).
  + `!=` 제공된 정규식과 일치하지 않는 레이블을 선택합니다.
+ **값** - 레이블 값과 일치하는 값. 선택한 연산자에 따라 문자열 또는 정규식으로 일치할 수 있습니다.

# 알림 사용자 지정
<a name="v9-alerting-notifications"></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) 섹션을 참조하세요.

알림 템플릿을 사용하여 알림을 사용자 지정합니다.

알림 템플릿을 사용하여 알림에서 메시지의 제목, 메시지 및 형식을 변경할 수 있습니다.

알림 템플릿은 이메일 또는 Slack과 같은 특정 연락 지점 통합과 연결되지 않습니다. 그러나 서로 다른 연락 지점 통합을 위한 별도의 알림 템플릿을 생성하도록 선택할 수 있습니다.

알림 템플릿을 사용하여 다음을 수행할 수 있습니다.
+ 요약, 설명, 레이블 및 주석, 값 및 링크를 포함하여 알림에서 정보를 추가, 제거 또는 재정렬합니다.
+ 텍스트를 굵은 기울임꼴 서식으로 지정하고 줄 바꿈 추가 또는 제거

알림 템플릿을 사용하여 다음을 수행할 수 없습니다.
+ Slack 및 Microsoft Teams와 같은 인스턴트 메시징 서비스의 알림 설계 변경

**Topics**
+ [Go의 템플릿 지정 언어 사용](v9-alerting-notifications-go-templating.md)
+ [알림 템플릿 생성](v9-alerting-create-templates.md)
+ [템플릿 참조](v9-alerting-template-reference.md)

# Go의 템플릿 지정 언어 사용
<a name="v9-alerting-notifications-go-templating"></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) 섹션을 참조하세요.

알림 템플릿을 Go의 템플릿 지정 언어인 [text/template](https://pkg.go.dev/text/template)으로 작성합니다.

이 섹션에서는 Go의 템플릿 지정 언어에 대한 개요와 text/template에서 템플릿을 작성하는 방법을 제공합니다.

## 점
<a name="v9-go-dot"></a>

text/template에는 점(dot)이라는 특수 커서가 있습니다(`.`로 씀). 이 커서는 사용되는 템플릿의 위치에 따라 값이 변경되는 변수로 간주할 수 있습니다. 예를 들어 알림 템플릿의 시작 부분에서 `.`은 `ExtendedData` 객체를 참조합니다. 여기에서는 `Alerts`, `Status`, `GroupLabels`, `CommonLabels`, `CommonAnnotations`, `ExternalURL`을 포함하여 여러 필드를 포함합니다. 그러나 점은 목록의 `range`에서 사용할 때, `with`에서 사용할 때 또는 다른 템플릿에서 사용할 기능 템플릿을 작성할 때 다른 항목을 참조할 수 있습니다. [알림 템플릿 생성](v9-alerting-create-templates.md)에서 이에 대한 예제를 확인할 수 있으며, [템플릿 참조](v9-alerting-template-reference.md)에서 모든 데이터 및 함수를 확인할 수 있습니다.

## 여는 태그 및 닫는 태그
<a name="v9-go-openclosetags"></a>

text/template에서 템플릿은 템플릿이 변수를 인쇄하는지 여부와 if 문과 같이 제어 구조를 실행하는지 여부에 관계없이 `{{`로 시작하고 `}}`로 끝납니다. Jinja(변수를 인쇄할 때 `{{` 및 `}}`를 사용하고 제어 구조에서 `{%` 및 `%}`를 사용함)와 같은 다른 템플릿 지정 언어와는 다릅니다.

## 인쇄
<a name="v9-go-print"></a>

무언가의 값을 인쇄하려면 `{{` 및 `}}`를 사용합니다. 점 값, 점 필드, 함수 결과 및 [변수](#v9-go-variables) 값을 인쇄할 수 있습니다. 예를 들어 점이 `ExtendedData`를 참조하는 `Alerts` 필드를 인쇄하려면 다음과 같이 작성합니다.

```
{{ .Alerts }}
```

## 알림에 대한 반복
<a name="v9-go-iterate-alerts"></a>

알림에 대한 모든 정보가 아닌 각 알림의 레이블만 인쇄하려면 `range`를 사용하여 `ExtendedData`에서 알림을 반복할 수 있습니다.

```
{{ range .Alerts }}
{{ .Labels }}
{{ end }}
```

범위 내에서 점은 더 이상 `ExtendedData`를 참조하지 않고 `Alert`를 참조합니다. `{{ .Labels }}`를 사용하여 각 알림의 레이블을 인쇄할 수 있습니다. `{{ range .Alerts }}`에서 알림 목록의 현재 알림을 참조하도록 점을 변경하기 때문에 이러한 방식이 작동합니다. 범위가 완성되면 범위가 시작되기 전에 사용했던 값으로 점이 재설정됩니다(이 예제에서 `ExtendedData`).

```
{{ range .Alerts }}
{{ .Labels }}
{{ end }}
{{/* does not work, .Labels does not exist here */}}
{{ .Labels }}
{{/* works, cursor was reset */}}
{{ .Status }}
```

## 주석 및 레이블에 대한 반복
<a name="v9-go-iterate-labels"></a>

`The name of the label is $name, and the value is $value` 형식으로 각 알림의 레이블을 인쇄하도록 템플릿을 작성합니다. 여기서 `$name` 및 `$value`에는 각 레이블의 이름 및 값이 포함됩니다.

이전 예제와 마찬가지로 점을 사용하여 `.Alerts`에서 알림에 대해 반복합니다. 이때 점은 알림 목록에서 현재 알림을 참조합니다. 그리고 정렬된 레이블에서 두 번째 범위를 사용합니다. 이때 두 번째로 현재 레이블을 참조할 때 점이 업데이트됩니다. 두 번째 범위 내에서 `.Name` 및 `.Value`를 사용하여 각 레이블의 이름 및 값을 인쇄합니다.

```
{{ range .Alerts }}
{{ range .Labels.SortedPairs }}
The name of the label is {{ .Name }}, and the value is {{ .Value }}
{{ end }}
{{ range .Annotations.SortedPairs }}
The name of the annotation is {{ .Name }}, and the value is {{ .Value }}
{{ end }}
{{ end }}
```

## If 문
<a name="v9-go-if"></a>

템플릿에서 if 문을 사용할 수 있습니다. 예를 들어 `.Alerts`에 알림이 없는 경우 `There are no alerts`를 인쇄하려면 다음을 작성합니다.

```
{{ if .Alerts }}
There are alerts
{{ else }}
There are no alerts
{{ end }}
```

## With
<a name="v9-go-with"></a>

With는 if 문과 유사하지만, if 문과 달리 `with`에서는 with에서의 값을 참조하기 위해 점을 업데이트합니다.

```
{{ with .Alerts }}
There are {{ len . }} alert(s)
{{ else }}
There are no alerts
{{ end }}
```

## 변수
<a name="v9-go-variables"></a>

text/template의 변수는 템플릿 내에서 생성해야 합니다. 예를 들어 점의 현재 값을 사용해 `$variable` 변수를 생성하려면 다음을 작성합니다.

```
{{ $variable := . }}
```

`with` 또는 범위 내에서 `$variable`을 사용할 수 있으며, 이는 점의 현재 값이 아니라 변수가 정의된 시점에 점의 값을 참조합니다.

예를 들어 두 번째 범위에서 `{{ .Labels }}`를 사용하는 템플릿은 작성할 수 없습니다. 여기서 점은 현재 알림이 아닌 현재 레이블을 참조하기 때문입니다.

```
{{ range .Alerts }}
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{/* does not work because in the second range . is a label not an alert */}}
There are {{ len .Labels }}
{{ end }}
{{ end }}
```

첫 번째 범위와 두 번째 범위 앞에서 `$alert` 변수를 정의하여 이 문제를 해결할 수 있습니다.

```
{{ range .Alerts }}
{{ $alert := . }}
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{/* works because $alert refers to the value of dot inside the first range */}}
There are {{ len $alert.Labels }}
{{ end }}
{{ end }}
```

## 인덱스가 있는 범위
<a name="v9-go-rangeindex"></a>

범위 시작 위치에서 인덱스 및 값 변수를 정의하여 범위 내 각 알림의 인덱스를 가져올 수 있습니다.

```
{{ $num_alerts := len .Alerts }}
{{ range $index, $alert := .Alerts }}
This is alert {{ $index }} out of {{ $num_alerts }}
{{ end }}
```

## 템플릿 정의
<a name="v9-go-define"></a>

`define` 및 템플릿 이름(큰따옴표로 묶음)을 다른 템플릿 내에서 사용할 수 있는 템플릿을 정의할 수 있습니다. `__subject`, `__text_values_list`, `__text_alert_list`, `default.title`, `default.message`와 같은 기본 템플릿을 포함하여 다른 템플릿과 동일한 이름의 템플릿을 정의해서는 안 됩니다. 템플릿이 기본 템플릿과 동일한 이름으로 생성되었거나 다른 알림 템플릿의 템플릿인 경우 Grafana는 두 템플릿 중 하나를 사용할 수 있습니다. Grafana는 이름이 같은 템플릿이 두 개 이상 있는 경우 이를 금지하거나 오류 메시지를 표시하지 않습니다.

```
{{ define "print_labels" }}
{{ end }}
```

## 템플릿 임베드
<a name="v9-go-embed"></a>

`template`, 템플릿 이름(큰따옴표로 묶음), 템플릿에 전달해야 하는 커서를 사용하여 템플릿 내에서 정의된 템플릿을 임베드할 수 있습니다.

```
{{ template "print_labels" . }}
```

## 템플릿에 데이터 전달
<a name="v9-go-passdata"></a>

템플릿 내에서 점은 템플릿에 전달되는 값을 참조합니다.

예를 들어 템플릿에 실행 알림 목록이 전달되면 점에서는 해당 실행 알림 목록을 나타냅니다.

```
{{ template "print_alerts" .Alerts }}
```

템플릿에 알림에 대해 정렬된 레이블이 전달되면 점은 정렬된 레이블 목록을 참조합니다.

```
{{ template "print_labels" .SortedLabels }}
```

재사용 가능한 템플릿을 작성할 때 유용합니다. 예를 들어 모든 알림을 인쇄하려면 다음을 작성할 수 있습니다.

```
{{ template "print_alerts" .Alerts }}
```

그런 다음, 실행 알림만 인쇄하려면 다음을 작성하면 됩니다.

```
{{ template "print_alerts" .Alerts.Firing }}
```

`.Alerts` 및 `.Alerts.Firing`이 모두 알림 목록이므로 이 방식이 가능합니다.

```
{{ define "print_alerts" }}
{{ range . }}
{{ template "print_labels" .SortedLabels }}
{{ end }}
{{ end }}
```

## 설명
<a name="v9-go-comments"></a>

`{{/*` 및 `*/}}`를 사용하여 주석을 추가할 수 있습니다.

```
{{/* This is a comment */}}
```

설명에 줄 바꿈을 추가하지 못하도록 하려면 다음을 사용합니다.

```
{{- /* This is a comment with no leading or trailing line breaks */ -}}
```

## 들여쓰기
<a name="v9-go-indentation"></a>

탭과 공백, 줄 바꿈에서 모두 들여쓰기를 사용하여 템플릿의 가독성을 개선할 수 있습니다.

```
{{ range .Alerts }}
  {{ range .Labels.SortedPairs }}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

그러나 템플릿의 들여쓰기는 텍스트에도 표시됩니다. 다음으로 이를 제거하는 방법을 살펴봅니다.

## 공백 및 줄 바꿈 제거
<a name="v9-go-removespace"></a>

text/template에서 `{{-` 및 `-}}`를 사용하여 선행 및 후행 공백과 줄 바꿈을 제거합니다.

예를 들어 들여쓰기 및 줄 바꿈을 사용하여 템플릿의 가독성을 높이는 경우:

```
{{ range .Alerts }}
  {{ range .Labels.SortedPairs }}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

들여쓰기 및 줄 바꿈도 텍스트에 표시됩니다.

```
    alertname = "Test"

    grafana_folder = "Test alerts"
```

각 범위의 시작 위치에서 `}}`를 `-}}`로 변경하여 텍스트에서 들여쓰기 및 줄 바꿈을 제거할 수 있습니다.

```
{{ range .Alerts -}}
  {{ range .Labels.SortedPairs -}}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

이제 템플릿의 들여쓰기 및 줄 바꿈은 텍스트에 없습니다.

```
alertname = "Test"
grafana_folder = "Test alerts"
```

# 알림 템플릿 생성
<a name="v9-alerting-create-templates"></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) 섹션을 참조하세요.

연락 지점으로 전송할 재사용 가능한 알림 템플릿을 생성합니다.

알림 템플릿에 하나 이상의 템플릿을 추가할 수 있습니다.

알림 템플릿 이름은 고유해야 합니다. 동일한 알림 템플릿 또는 다른 알림 템플릿에서 이름이 같은 두 개의 템플릿을 사용할 수 없습니다. `__subject`, `__text_values_list`, `__text_alert_list`, `default.title`, `default.message`와 같이 기본 템플릿과 이름이 같은 템플릿을 정의하지 마세요.

연락 지점 탭에서 알림 템플릿 목록을 볼 수 있습니다.

## 알림 템플릿 생성
<a name="v9-alerting-creating-templates"></a>

**알림 템플릿을 생성하는 방법**

1. **템플릿 추가**를 클릭하세요.

1. `email.subject`와 같은 알림 템플릿의 이름을 선택하세요.

1. 콘텐츠 필드에서 템플릿의 콘텐츠를 작성하세요.

   예제:

   ```
   {{ if .Alerts.Firing -}}
      {{ len .Alerts.Firing }} firing alerts
      {{ end }}
      {{ if .Alerts.Resolved -}}
      {{ len .Alerts.Resolved }} resolved alerts
      {{ end }}
   ```

1. 저장을 클릭합니다.

   `{{ define "email.subject" }}`(여기서 `email.subject`는 템플릿의 이름임) 및 `{{ end }}`는 콘텐츠의 시작과 끝에 자동으로 추가됩니다.

**둘 이상의 템플릿이 포함된 알림 템플릿을 생성하는 방법:**

1. **템플릿 추가**를 클하세요.

1. 전체 알림 템플릿의 이름을 입력하세요. 예를 들어 `email`입니다.

1. 각 템플릿의 시작과 끝에 있는 `{{ define "name-of-template" }}` 및 `{{ end }}`를 포함하여 콘텐츠 필드에서 각 템플릿을 작성하세요. 알림 템플릿의 각 템플릿에 대해 설명이 포함된 이름(예: `email.subject` 또는 `email.message`)을 사용할 수 있습니다. 이 경우 위에 입력한 알림 템플릿의 이름을 재사용하지 마세요.

   다음 섹션에서는 생성할 수 있는 템플릿에 대한 자세한 예제를 보여줍니다.

1. 저장을 클릭합니다.

## 이메일 제목에 대한 템플릿 생성
<a name="v9-alerting-create-template-subject"></a>

이 예제와 같이 실행 알림 및 해결된 알림 수가 포함된 이메일 제목에 대한 템플릿을 생성합니다.

```
1 firing alerts, 0 resolved alerts
```

**이메일 제목에 대한 템플릿을 생성하는 방법**

1. 다음 콘텐츠로 `email.subject`라는 템플릿을 생성하세요.

   ```
   {{ define "email.subject" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. `template` 키워드를 **제목** 필드에 입력하여 연락 지점 통합을 생성할 때 템플릿을 사용하세요.

   ```
   {{ template "email.subject" . }}
   ```

## 이메일 메시지에 대한 템플릿 생성
<a name="v9-alerting-create-template-message"></a>

이 예제와 같이 모든 실행 알림 및 해결된 알림의 요약이 포함된 이메일 메시지 템플릿을 생성합니다.

```
There are 2 firing alerts, and 1 resolved alerts

Firing alerts:

- alertname=Test 1 grafana_folder=GrafanaCloud has value(s) B=1
- alertname=Test 2 grafana_folder=GrafanaCloud has value(s) B=2

Resolved alerts:

- alertname=Test 3 grafana_folder=GrafanaCloud has value(s) B=0
```

**이메일 메시지에 대한 템플릿을 생성하는 방법**

1. 콘텐츠에 두 개의 템플릿(`email.message_alert` 및 `email.message`)을 포함하는 `email` 알림 템플릿을 생성하세요.

   `email.message_alert` 템플릿은 각 실행 알림과 해결된 알림에 대한 레이블 및 값을 인쇄하는 데 사용되고, `email.message` 템플릿은 이메일 구조를 포함합니다.

   ```
   {{- define "email.message_alert" -}}
   {{- range .Labels.SortedPairs }}{{ .Name }}={{ .Value }} {{ end }} has value(s)
   {{- range $k, $v := .Values }} {{ $k }}={{ $v }}{{ end }}
   {{- end -}}
   
   {{ define "email.message" }}
   There are {{ len .Alerts.Firing }} firing alerts, and {{ len .Alerts.Resolved }} resolved alerts
   
   {{ if .Alerts.Firing -}}
   Firing alerts:
   {{- range .Alerts.Firing }}
   - {{ template "email.message_alert" . }}
   {{- end }}
   {{- end }}
   
   {{ if .Alerts.Resolved -}}
   Resolved alerts:
   {{- range .Alerts.Resolved }}
   - {{ template "email.message_alert" . }}
   {{- end }}
   {{- end }}
   
   {{ end }}
   ```

1. `template` 키워드를 **텍스트 본문** 필드에 입력하여 연락 지점 통합을 생성할 때 템플릿을 사용하세요.

   ```
   {{ template "email.message" . }}
   ```

## Slack 메시지 제목에 대한 템플릿 생성
<a name="v9-alerting-create-template-slack-title"></a>

다음 예제와 같이 실행 알림 및 해결된 알림 수를 포함하는 Slack 메시지의 제목에 대한 템플릿을 생성합니다.

```
1 firing alerts, 0 resolved alerts
```

**Slack 메시지 제목에 대한 템플릿을 생성하는 방법**

1. 다음 콘텐츠로 `slack.title`라는 템플릿을 생성하세요.

   ```
   {{ define "slack.title" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. `template` 키워드를 **제목** 필드에 입력하여 연락 지점 통합을 생성할 때 템플릿을 사용하세요.

   ```
   {{ template "slack.title" . }}
   ```

## Slack 메시지 콘텐츠에 대한 템플릿 생성
<a name="v9-alerting-create-template-slack-message"></a>

레이블, 주석 및 대시보드 URL을 포함하여 모든 실행 알림 및 해결된 알림에 대한 설명이 포함된 Slack 메시지의 콘텐츠에 대한 템플릿을 생성합니다.

```
1 firing alerts:

[firing] Test1
Labels:
- alertname: Test1
- grafana_folder: GrafanaCloud
Annotations:
- description: This is a test alert
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1

1 resolved alerts:

[firing] Test2
Labels:
- alertname: Test2
- grafana_folder: GrafanaCloud
Annotations:
- description: This is another test alert
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1
```

**Slack 메시지 콘텐츠에 대한 템플릿을 생성하는 방법**

1. 콘텐츠에 두 개의 템플릿(`slack.print_alert` 및 `slack.message`)을 포함하는 `slack` 템플릿을 생성하세요.

   `slack.print_alert` 템플릿은 레이블, 주석 및 DashboardURL을 인쇄하는 데 사용되는 반면 `slack.message` 템플릿에는 알림 구조가 포함되어 있습니다.

   ```
   {{ define "slack.print_alert" -}}
   [{{.Status}}] {{ .Labels.alertname }}
   Labels:
   {{ range .Labels.SortedPairs -}}
   - {{ .Name }}: {{ .Value }}
   {{ end -}}
   {{ if .Annotations -}}
   Annotations:
   {{ range .Annotations.SortedPairs -}}
   - {{ .Name }}: {{ .Value }}
   {{ end -}}
   {{ end -}}
   {{ if .DashboardURL -}}
     Go to dashboard: {{ .DashboardURL }}
   {{- end }}
   {{- end }}
   
   {{ define "slack.message" -}}
   {{ if .Alerts.Firing -}}
   {{ len .Alerts.Firing }} firing alerts:
   {{ range .Alerts.Firing }}
   {{ template "slack.print_alert" . }}
   {{ end -}}
   {{ end }}
   {{ if .Alerts.Resolved -}}
   {{ len .Alerts.Resolved }} resolved alerts:
   {{ range .Alerts.Resolved }}
   {{ template "slack.print_alert" .}}
   {{ end -}}
   {{ end }}
   {{- end }}
   ```

1. `template` 키워드를 **텍스트 본문** 필드에 입력하여 연락 지점 통합을 생성할 때 템플릿을 사용하세요.

   ```
   {{ template "slack.message" . }}
   ```

## 공유 템플릿으로 이메일 및 Slack 모두 템플릿 지정
<a name="v9-alerting-create-shared-templates"></a>

이메일 및 Slack과 같이 각 연락 지점에 대해 별도의 알림 템플릿을 생성하는 대신 동일한 템플릿을 공유할 수 있습니다.

예를 들어 이 제목의 이메일과 이 `1 firing alerts, 0 resolved alerts` 제목의 Slack 메시지를 보내려면 공유 템플릿을 생성할 수 있습니다.

**공유 템플릿을 생성하는 방법**

1. 다음 콘텐츠로 `common.subject_title`라는 템플릿을 생성하세요.

   ```
   {{ define "common.subject_title" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. 이메일의 경우 이메일 연락 지점 통합의 제목 필드에서 템플릿을 실행하세요.

   ```
   {{ template "common.subject_title" . }}
   ```

1. Slack의 경우 Slack 연락 지점 통합의 제목 필드에서 템플릿을 실행하세요.

   ```
   {{ template "common.subject_title" . }}
   ```

## 알림 템플릿 사용
<a name="v9-alerting-use-notification-templates"></a>

연락 지점의 템플릿을 사용하여 알림을 사용자 지정합니다.

**연락 지점을 생성할 때 템플릿을 사용하는 방법**

1. **알림** 메뉴에서 **연락 지점** 탭을 선택하여 기존 연락처 목록을 확인하세요.

1. **연락 지점 추가**를 선택하세요. 또는 편집하려는 연락 지점 옆에 있는 **편집** 아이콘(펜)을 선택하여 기존 연락 지점을 편집할 수 있습니다.

1. **메시지** 또는 **제목**과 같이 하나 이상의 필드에 사용하려는 템플릿을 입력하세요. 템플릿을 입력하려면 `{{ template "template_name" . }}` 양식을 사용하여 *template\$1name*을 사용하려는 템플릿 이름으로 바꾸세요.

1. **연락 지점 저장**을 클릭하세요.

# 템플릿 참조
<a name="v9-alerting-template-reference"></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) 섹션을 참조하세요.

이 섹션에서는 템플릿을 생성하기 위한 참조 정보를 제공합니다.

## 템플릿 데이터
<a name="v9-alerting-template-data"></a>

다음 데이터가 메시지 템플릿에 전달됩니다.


| 이름 | Type | 참고 | 
| --- | --- | --- | 
|  `Receiver`  |  문자열  |  알림이 전송되는 연락 지점 이름.  | 
|  `Status`  |  문자열  |  하나 이상의 알림이 실행 중인 경우 실행이고, 그렇지 않으면 해결됨 상태입니다.  | 
|  `Alerts`  |  Alert  |  이 알림에 포함된 알림 객체 목록(아래 참조).  | 
|  `GroupLabels`  |  KeyValue  |  이러한 알림이 그룹화된 레이블.  | 
|  `CommonLabels`  |  KeyValue  |  이 알림에 포함된 모든 알림에 공통된 레이블.  | 
|  `CommonAnnotations`  |  KeyValue  |  이 알림에 포함된 모든 알림에 공통된 주석.  | 
|  `ExternalURL`  |  문자열  |  알림을 전송한 Grafana로 돌아가는 링크. 외부 Alertmanager를 사용하는 경우 이 Alertmanager로 돌아가는 링크.  | 

`Alerts` 유형은 반환된 알림을 필터링하기 위한 두 가지 함수를 노출합니다.
+ `Alerts.Firing` - 실행 알림 목록을 반환합니다.
+ `Alerts.Resolved` - 해결된 알림 목록을 반환합니다.

**알림(유형)**

알림 유형에는 다음 데이터가 포함됩니다.


| 이름 | Type | 참고 | 
| --- | --- | --- | 
|  Status  |  문자열  |  `firing` 또는 `resolved`  | 
|  레이블  |  KeyValue  |  알림에 연결된 레이블 세트.  | 
|  Annotations  |  KeyValue  |  알림에 연결된 주석 세트.  | 
| 값 | KeyValue | 클래식 조건을 포함한 모든 표현식의 값 | 
|  StartsAt  |  time.Time  |  알림 실행이 시작되는 시간.  | 
|  EndsAt  |  time.Time  |  알림의 종료 시간을 알고 있는 경우에만 설정합니다. 그렇지 않으면 마지막 알림이 수신된 이후부터 구성 가능한 제한 시간으로 설정됩니다.  | 
|  GeneratorURL  |  문자열  |  Grafana 또는 외부 Alertmanager에 대한 백 링크.  | 
|  SilenceURL  |  문자열  |  알림을 음소거하는 링크(이 알림에 대한 레이블이 미리 채워짐). Grafana 관리형 알림에만 적용됩니다.  | 
|  DashboardURL  |  문자열  |  알림 규칙이 하나에 속하는 경우 Grafana 대시보드에 대한 링크. Grafana 관리형 알림에만 적용됩니다.  | 
|  PanelURL  |  문자열  |  알림 규칙이 하나에 속하는 경우 Grafana 대시보드 패널에 대한 링크. Grafana 관리형 알림에만 적용됩니다.  | 
|  지문  |  문자열  |  알림을 식별하는 데 사용할 수 있는 지문.  | 
|  ValueString  |  문자열  |  알림에서 축소된 각 표현식의 레이블과 값을 포함하는 문자열.  | 

 **ExtendedData**

ExtendedData 객체는 다음 속성을 포함합니다.


| 이름 | 종류 | 설명 | 예제 | 
| --- | --- | --- | --- | 
|  수신기  |  `string`  |  알림을 보내는 연락 지점의 이름.  |  `{{ .Receiver }}`  | 
|  Status  |  `string`  |  상태가 `firing if at least one alert is firing, otherwise resolved.`입니다.  |  `{{ .Status }}`  | 
|  알림  |  `[]Alert`  |  이 알림에서 모든 실행 알림과 해결된 알림 목록.  |  `There are {{ len .Alerts }} alerts`  | 
|  실행 알림  |  `[]Alert`  |  이 알림에서 모든 실행 알림 목록.  |  `There are {{ len .Alerts.Firing }} firing alerts`  | 
|  해결된 알림  |  `[]Alert`  |  이 알림에서 모든 해결된 알림 목록.  |  `There are {{ len .Alerts.Resolved }} resolved alerts`  | 
|  GroupLabels  |  `KeyValue`  |  이 알림에서 이러한 알림을 그룹화하는 레이블.  |  `{{ .GroupLabels }}`  | 
|  CommonLabels  |  `KeyValue`  |  이 알림에서 모든 알림에 공통된 레이블.  |  `{{ .CommonLabels }}`  | 
|  CommonAnnotations  |  `KeyValue`  |  이 알림에서 모든 알림에 공통된 주석.  |  `{{ .CommonAnnotations }}`  | 
|  ExternalURL  |  `string`  |  이 알림을 보낸 Grafana 워크스페이스 또는 Alertmanager에 대한 링크.  |  `{{ .ExternalURL }}`  | 

**KeyValue 유형**

`KeyValue` 유형은 레이블과 주석을 나타내는 키/값 문자열 페어 세트입니다.

`KeyValue`로 저장된 데이터에 대한 직접 액세스 외에도 데이터를 정렬, 제거 및 변환하는 방법도 있습니다.


| 이름 | 인수 | 반환 | 참고 | 예제 | 
| --- | --- | --- | --- | --- | 
|  SortedPairs  |    |  키 및 값 문자열 페어의 정렬된 목록  |    | `{{ .Annotations.SortedPairs }}` | 
|  제거  |  []string  |  KeyValue  |  지정된 키 없이 키/값 맵의 사본을 반환합니다.  | `{{ .Annotations.Remove "summary" }}` | 
|  이름  |    |  []string  |  레이블 이름 목록  | `{{ .Names }}` | 
|  값  |    |  []string  |  레이블 값 목록  | `{{ .Values }}` | 

**Time**

시간은 Go [https://pkg.go.dev/time#Time](https://pkg.go.dev/time#Time) 패키지에서 가져옵니다. 여러 형식으로 시간을 인쇄할 수 있습니다. 예를 들어, `Monday, 1st January 2022 at 10:00AM` 형식으로 알림이 실행된 시간을 인쇄하려면 다음 템플릿을 작성합니다.

```
{{ .StartsAt.Format "Monday, 2 January 2006 at 3:04PM" }}
```

[여기](https://pkg.go.dev/time#pkg-constants)에서 Go의 시간 형식에 대한 참조를 찾을 수 있습니다.

## 템플릿 함수
<a name="v9-alerting-template-functions"></a>

템플릿 함수를 사용하여 레이블 및 주석을 처리해 동적 알림을 생성할 수 있습니다. 다음 함수를 사용할 수 있습니다.


| 이름 | 인수 유형 | 반환 타입 | 설명 | 
| --- | --- | --- | --- | 
|  `humanize`  |  숫자 또는 문자열  |  문자열  |  지표 접두사를 사용하여 숫자를 더 읽기 쉬운 형식으로 변환합니다.  | 
|  `humanize1024`  |  숫자 또는 문자열  |  문자열  |  humanize와 비슷하지만 1000이 아닌 1024를 밑으로 사용합니다.  | 
|  `humanizeDuration`  |  숫자 또는 문자열  |  문자열  |  기간(초 단위)을 더 읽기 쉬운 형식으로 변환합니다.  | 
|  `humanizePercentage`  |  숫자 또는 문자열  |  문자열  |  비율 값을 100의 분율로 변환합니다.  | 
|  `humanizeTimestamp`  |  숫자 또는 문자열  |  문자열  |  Unix 타임스탬프(초 단위)를 더 읽기 쉬운 형식으로 변환합니다.  | 
|  `title`  |  문자열  |  문자열  |  strings.Title, 각 단어의 첫 번째 문자를 대문자로 표시합니다.  | 
|  `toUpper`  |  문자열  |  문자열  |  strings.ToUpper, 모든 문자를 대문자로 변환합니다.  | 
|  `toLower`  |  문자열  |  문자열  |  strings.ToLower, 모든 문자를 소문자로 변환합니다.  | 
|  `match`  |  패턴, 텍스트  |  부울  |  regexp.MatchString 고정되지 않은 정규식 일치를 테스트합니다.  | 
|  `reReplaceAll`  |  패턴, 교체, 텍스트  |  문자열  |  Regexp.ReplaceAllString Regexp 대체(고정되지 않음).  | 
|  `graphLink`  |  문자열 - `expr` 및 `datasource` 필드가 있는 JSON 객체  |  문자열  |  지정된 표현식 및 데이터 소스에 대한 탐색의 그래픽 보기 경로를 반환합니다.  | 
|  `tableLink`  |  문자열 - `expr` 및 `datasource` 필드가 있는 JSON 객체  |  문자열  |  지정된 표현식 및 데이터 소스에 대한 탐색의 테이블 형식 보기 경로를 반환합니다.  | 
|  `args`  |  []interface\$1\$1  |  map[string]interface\$1\$1  |  객체 목록을 arg0, arg1과 같은 키가 있는 맵으로 변환합니다. 이 함수를 사용하여 여러 인수를 템플릿에 전달합니다.  | 
|  `externalURL`  |  없음  |  문자열  |  외부 URL을 나타내는 문자열을 반환합니다.  | 
|  `pathPrefix`  |  없음  |  문자열  |  외부 URL의 경로를 반환합니다.  | 

다음 표에는 각 함수 사용 예제가 나와 있습니다.


| 함수 | TemplateString | Input | 예상 | 
| --- | --- | --- | --- | 
|  인간화  |  \$1 humanize \$1value \$1  |  1234567.0  |  1.235M  | 
|  humanize1024  |  \$1 humanize1024 \$1value \$1  |  1048576.0  |  1Mi  | 
|  humanizeDuration  |  \$1 humanizeDuration \$1value \$1  |  899.99  |  14m 59s  | 
|  humanizePercentage  |  \$1 humanizePercentage \$1value \$1  |  0.1234567  |  12.35%  | 
|  humanizeTimestamp  |  \$1 humanizeTimestamp \$1value \$1  |  1435065584.128  |  2015-06-23 13:19:44.128 \$10000 UTC  | 
|  제목  |  \$1 \$1value \$1 title \$1  |  aa bB CC  |  Aa Bb Cc  | 
|  toUpper  |  \$1 \$1value \$1 toUpper \$1  |  aa bB CC  |  AA BB CC  | 
|  toLower  |  \$1 \$1value \$1 toLower \$1  |  aa bB CC  |  aa bb cc  | 
|  match  |  \$1 match "a\$1" \$1labels.instance \$1  |  aa  |  true  | 
|  reReplaceAll  |  \$1\$1 reReplaceAll "localhost:(.\$1)" "my.domain:\$11" \$1labels.instance \$1\$1  |  localhost:3000  |  my.domain:3000  | 
|  graphLink  |  \$1\$1 graphLink "\$1\$1"expr\$1": \$1"up\$1", \$1"datasource\$1": \$1"gdev-prometheus\$1"\$1" \$1\$1  |    |  /explore?left=["now-1h","now","gdev-prometheus",\$1"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true\$1]  | 
|  tableLink  |  \$1\$1 tableLink "\$1\$1"expr\$1":\$1"up\$1", \$1"datasource\$1":\$1"gdev-prometheus\$1"\$1" \$1\$1  |    |  /explore?left=["now-1h","now","gdev-prometheus",\$1"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false\$1]  | 
|  args  |  \$1\$1define "x"\$1\$1\$1\$1.arg0\$1\$1 \$1\$1.arg1\$1\$1\$1\$1end\$1\$1\$1\$1template "x" (args 1 "2")\$1\$1  |    |  1 2  | 
|  externalURL  |  \$1 externalURL \$1  |    |  http://localhost/path/prefix  | 
|  pathPrefix  |  \$1 pathPrefix \$1  |    |  /path/prefix  | 

# Prometheus 데이터 소스에 대한 알림 전달 무음 처리
<a name="v9-alerting-silences"></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) 섹션을 참조하세요.

외부 Alertmanager 데이터 소스(Amazon Managed Service for Prometheus 포함)의 경우 *무음*으로 알림 전달을 억제할 수 있습니다. 무음은 알림 생성만 중지합니다. 무음은 알림 규칙이 평가되는 것을 방지하지 않으며 사용자 인터페이스에 인스턴스 알림이 표시되는 것도 중지하지 않습니다. 알림을 무음으로 설정한 경우 알림이 억제되는 기간을 지정합니다.

외부 Alertmanager 데이터 소스에 대해 무음을 구성할 수 있습니다.

**참고**  
정기적인 시간 간격(예: 정기 유지 관리 기간) 또는 다른 데이터 소스에 대해 알림 전달을 억제하려면 무음 대신 [음소거 타이밍](v9-alerting-notification-muting.md)을 사용합니다.

**무음을 추가하는 방법**

1. Grafana 콘솔의 Grafana 메뉴에서 **알림**(종 모양) 아이콘을 선택하여 **알림** 페이지를 여세요.

1. **무음**을 선택하여 기존 [연락 지점 작업](v9-alerting-contact-points.md)이 나열된 페이지를 여세요.

1. **Alertmanager** 드롭다운에서 외부 Alertmanager를 선택하세요.

1. **무음 추가**를 선택하세요.

1. **무음 시작 및 종료**에서 시작 및 종료 날짜를 선택하여 무음이 적용되는 시기와 종료 시기를 표시하세요.

   종료 시간을 설정하는 대신 **기간**에서 무음이 적용되는 기간을 지정하세요. 그러면 **무음 시작 및 종료** 필드의 종료 시간이 자동으로 업데이트됩니다.

1. **이름** 및 **값** 필드에 *일치하는 레이블*을 하나 이상 입력하세요. 매처는 무음이 적용되는 규칙을 결정합니다. 레이블 일치는 이 절차 이후에 자세히 설명합니다.

1. 선택적으로 **설명**을 추가하거나 **생성자** 수정하여 무음 소유자를 설정하세요.

1. **생성**을 선택하여 무음을 생성하세요.

**편집** 아이콘(펜)을 선택하여 기존 무음을 편집할 수 있습니다.

**알림 억제를 위한 레이블 일치**

무음을 생성할 때 무음의 일부로 *일치하는 레이블* 세트를 생성합니다. 알림을 억제하기 위해 일치해야 하는 레이블에 대한 규칙 세트입니다. 일치하는 레이블은 다음과 같이 세 부분으로 구성됩니다.
+ **레이블** - 일치시킬 레이블의 이름. 알림의 레이블 이름과 정확히 일치해야 합니다.
+ **연산자** - 레이블 값을 일치 레이블 값과 비교하는 데 사용되는 연산자. 사용 가능한 연산자는 다음과 같습니다.
  + `=` 값이 제공된 문자열과 정확히 일치하는 레이블을 선택합니다.
  + `!=` 값이 제공된 문자열과 일치하지 않는 레이블을 선택합니다.
  + `=~` 값이 제공된 문자열의 정규식 해석 값과 일치하는 레이블을 선택합니다(제공된 문자열은 정규식으로 해석됨).
  + `!=` 제공된 정규식과 일치하지 않는 레이블을 선택합니다.
+ **값** - 레이블 값과 일치하는 값. 선택한 연산자에 따라 문자열 또는 정규식으로 일치할 수 있습니다.

무음은 표시된 종료일에 종료되지만 언제든지 수동으로 억제를 종료할 수 있습니다.

**수동으로 무음을 종료하는 방법**

1. **알림** 페이지에서 **무음**을 선택하여 기존 무음 목록을 보세요.

1. 종료하려는 무음을 선택하고 **무음 해제**를 선택하세요. 그러면 알림 억제가 종료됩니다.
**참고**  
무음을 해제하면 종료 시간이 현재 시간으로 설정된 것처럼 알림 억제가 종료됩니다. (자동 또는 수동으로) 종료된 무음은 5일 동안 유지되고 나열됩니다. 목록에서 수동으로 무음을 제거할 수 없습니다.

**무음 생성 양식에 대한 링크 생성**

세부 정보가 이미 입력된 무음 생성 양식에 대한 URL을 생성할 수 있습니다. 운영자는 이를 사용하여 운영 이벤트 중에 경보를 신속하게 억제할 수 있습니다.

무음 양식에 대한 링크를 생성할 때 `matchers` 쿼리 파라미터를 사용하여 일치하는 레이블을 지정하고 `comment` 쿼리 파라미터를 사용하여 설명을 지정하세요. `matchers` 파라미터에는 쉼표로 구분된 `[label][operator][value]` 양식의 값이 하나 이상 필요합니다.

**예제 URL**

무음 양식(일치하는 레이블이 `severity=critical` 및 `cluster!~europe-.*`이고 설명이 `Silencing critical EU alerts`임)에 연결하려면 다음과 같은 URL을 사용합니다. *mygrafana*를 Grafana 인스턴스의 호스트 이름으로 바꾸세요.

```
https://mygrafana/alerting/silence/new?matchers=severity%3Dcritical%2Ccluster!~europe-*&comment=Silence%20critical%20EU%20alert
```

외부 Alertmanager의 새 무음 페이지에 연결하려면 `alertmanager=myAlertmanagerdatasource`와 같은 Alertmanage 데이터 소스 이름이 포함된 `alertmanager` 쿼리 파라미터를 추가하세요.

# 음소거 타이밍
<a name="v9-alerting-notification-muting"></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 관리형 음소거 타이밍 및 외부 Alertmanager 데이터 소스에 대한 음소거 타이밍을 구성할 수 있습니다.

**음소거 타이밍과 무음 비교**

다음 표에서는 음소거 타이밍과 무음의 차이를 강조합니다.


| 음소거 타이밍 | 무음 | 
| --- | --- | 
|  다시 발생할 수 있는 시간 간격 정의를 사용합니다.  |  시작 및 종료 시간이 고정되어 있습니다.  | 
|  생성 후 알림 정책에 추가됩니다.  |  레이블을 사용하여 무음 여부를 결정하기 위해 알림과 일치시킵니다.  | 
|  Grafana 알림 및 외부 Alertmanager와 함께 작동합니다.  |  외부 Alertmanager에서만 작동합니다.  | 

**음소거 타이밍을 생성하는 방법**

1. Grafana 콘솔의 Grafana 메뉴에서 **알림**(종 모양) 아이콘을 선택하여 **알림** 페이지를 여세요.

1. **알림 정책**을 선택하세요.

1. **Alertmanager** 드롭다운에서 편집할 Alertmanager를 선택하세요.

1. **음소거 타이밍** 섹션에서 **음소거 타이밍 추가** 버튼을 선택하세요.

1. 음소거 타이밍을 적용할 시간 간격을 선택하세요.

1. **제출**을 선택하여 음소거 타이밍을 생성하세요.

**알림 정책에 음소거 타이밍을 추가하는 방법**

1. 음소거 타이밍을 추가하려는 알림 정책을 선택하고 **편집** 버튼을 선택하세요.

1. **음소거 타이밍** 드롭다운에서 정책에 추가할 음소거 타이밍을 선택하세요.

   **정책 저장** 버튼을 선택하세요.

**시간 간격**

시간 간격은 시간 범위에 대한 정의입니다. 이 간격 동안 알림이 시작되면 알림이 억제됩니다. 범위는 `:`(예: `monday:thursday`)을 사용하여 지원됩니다. 음소거 타이밍에는 여러 시간 간격이 포함될 수 있습니다. 시간 간격은 여러 필드(다음 목록의 세부 정보)로 구성되며, 알림을 억제하려면 모두 일치해야 합니다. 예를 들어 요일(`monday:friday`) 및 시간 범위(8:00\$19:00)를 지정하면 월요일부터 금요일까지 8시\$19시에 알림이 억제되고 토요일 8시\$19시에는 기능 억제되지 않습니다.
+ **시간 범위** - 알림을 억제하는 시간. **시작 시간** 및 **종료 시간**이라는 두 개의 하위 필드로 구성됩니다. 예제 시간은 `14:30`입니다. 시간은 UTC의 24시간 표기법으로 표시됩니다.
+ **요일** - 요일. 하루(예: `monday`), 범위(예: `monday:friday`) 또는 쉼표로 구분된 일 목록(예: `monday, tuesday, wednesday`)일 수 있습니다.
+ **월** - 선택할 월. 숫자를 지정하거나 전체 월 이름을 사용하여 월을 지정할 수 있습니다(예: `1` 또는 `january`). 둘 다 1월을 지정합니다. 한 달, 월 범위 또는 쉼표로 구분된 월 목록을 지정할 수 있습니다.
+ **월의 일** - 한 달의 날짜. 가능한 값의 범위는 `1`\$1`31`입니다. 음수 값은 해당 월의 일을 역순으로 지정하므로 `-1`은 해당 월의 마지막 날짜를 나타냅니다. 월의 일은 하루, 일 범위 또는 쉼표로 구분된 일 목록으로 지정할 수 있습니다.
+ **연도** - 간격에 대한 하나 이상의 연도. 예를 들어 `2023:2025`입니다.

이러한 각 요소는 목록일 수 있으며, 일치하려면 요소의 항목을 하나 이상 충족해야 합니다. 따라서 연도를 `2023:2025, 2027`로 설정한 경우 2023년, 2024년, 2025년 및 2027년(2026년은 아님)에 해당합니다.

필드를 비워 두면 어느 시간이든 필드와 일치합니다. 전체 시간 간격과 일치하려면 시간에서 모든 필드가 일치해야 합니다.

정확한 기간을 지정하려면 해당 기간에 필요한 모든 옵션을 지정합니다. 예를 들어 3월, 6월, 9월, 12월의 첫 번째 월요일, 12:00\$124:00 UTC 시간에 시간 간격을 생성하려는 경우 시간 간격 사양은 다음과 같을 수 있습니다.
+ 시간 범위:
  + 시작 시간: `12:00`
  + 종료 시간: `24:00`
+ 요일: `monday`
+ 월: `3, 6, 9, 12`
+ 해당 월의 일: `1:7`

# 알림 그룹별 보기 및 필터링
<a name="v9-alerting-viewfiltergroups"></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) 섹션을 참조하세요.

알림 그룹에서는 Alertmanager 인스턴스의 그룹화된 경보를 표시합니다. 기본적으로 알림 규칙은 알림 정책의 루트 정책에 대한 레이블 키별로 그룹화됩니다. 공통 알림 규칙을 단일 알림 그룹으로 그룹화하면 중복 알림 규칙이 실행되지 않습니다.

알림 그룹을 보고 특정 기준과 일치하는 알림 규칙을 필터링할 수도 있습니다.

**알림 그룹을 보는 방법**

1. Grafana 메뉴에서 **알림**(종 모양) 아이콘을 클릭하여 기존 알림을 나열하는 알림 페이지를 여세요.

1. **알림 그룹**을 클릭하여 기존 그룹을 나열하는 페이지를 여세요.

1. **Alertmanager** 드롭다운에서 외부 Alertmanager를 데이터 소스로 선택하세요.

1. **사용자 지정 그룹화 기준** 드롭다운에서 레이블 조합을 선택하여 기본값이 아닌 다른 그룹화를 보세요. 이는 알림 정책 그룹을 디버깅하고 확인하는 데 유용합니다.

루트 정책의 그룹화 또는 사용자 지정 그룹화에 지정된 레이블이 알림에 포함되지 않은 경우 헤더가 `No grouping`인 다양한 그룹에 알림이 추가됩니다.

**레이블을 기준으로 필터링하는 방법**
+ **검색**에서 기존 레이블을 입력하여 레이블과 일치하는 알림을 확인하세요.

  예를 들어 `environment=production,region=~US|EU,severity!=warning`입니다.

**상태를 기준으로 필터링하는 방법**
+ **상태**에서 활성, 억제됨 또는 미처리 상태 중에서 선택하여 선택한 상태와 일치하는 알림을 보세요. 다른 모든 알림은 숨겨집니다.

# 알림 오류 보기
<a name="v9-alerting-viewnotificationerrors"></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 Alertmanager에 대해서만 지원됩니다.

**알림 오류를 보는 방법**

1. Grafana 메뉴에서 **알림**(종 모양) 아이콘을 클릭하여 기존 알림을 나열하는 알림 페이지를 여세요.

1. **연락 지점**을 선택하여 기존 연락 지점 목록을 확인하세요.

   연락 지점에서 장애가 발생한 경우 화면 오른쪽의 메시지에서는 오류가 있다는 메시지와 오류 개수를 사용자에게 알립니다.

1. 연락 지점을 클릭하여 해당 연락 지점에 대한 오류 세부 정보를 확인하세요.

   오류 아이콘 위로 마우스를 가져가면 오류 세부 정보가 표시됩니다.

   연락 지점에 둘 이상의 통합이 있는 경우 나열된 각 통합에 대한 모든 오류가 표시됩니다.

1. 상태 열에서 알림 상태를 확인하세요.

   정상, 시도 없음 또는 오류일 수 있습니다.