HTTP API로 알림 리소스 관리
HTTP API로 알림 리소스 관리 (Use the HTTP API to manage alerting resources)
Alerting Provisioning HTTP API는 Grafana 관리형 알림(Grafana-managed alerts)과 관련된 리소스를 만들고·수정하고·삭제하는 데 사용할 수 있어요. 이 API는 Grafana Terraform 공급자가 사용하는 API이기도 해요.
출처: 문서
본문
Grafana Enterprise를 실행 중이라면 일부 엔드포인트에 특정 권한을 추가해야 해요. 자세한 내용은 "Role-based access control permissions" 문서를 참고하세요.
Warning: 이 API의 contact points, notification policies, notification template groups, mute timings 엔드포인트는 더 이상 사용되지 않으며(deprecated) 향후 릴리스에서 제거될 예정이에요. Grafana App Platform 알림 API를 대신 사용하세요.
Note: Alerting provisioning HTTP API의 엔드포인트는 export 엔드포인트가 반환하는 형식과 다른 JSON 형식을 사용해요. export 엔드포인트는 파일 프로비저닝에 적합한 JSON 형식으로 알림 리소스를 내보내지만, 이 형식으로 HTTP API를 통해 리소스를 업데이트할 수는 없어요.
알림 규칙 (Alert rules)
다음 엔드포인트는 알림 규칙과 녹음 규칙(recording rules)을 모두 관리하는 데 사용할 수 있어요. 녹음 규칙을 만들려면 요청에 condition 필드 대신 record 블록을 포함해요.
| Method | URI | Name | Summary |
|---|---|---|---|
| DELETE | /api/v1/provisioning/alert-rules/:uid | route delete alert rule | UID로 특정 알림 규칙 삭제. |
| GET | /api/v1/provisioning/alert-rules/:uid | route get alert rule | UID로 특정 알림 규칙 조회. |
| POST | /api/v1/provisioning/alert-rules | route post alert rule | 새 알림 규칙 생성. |
| PUT | /api/v1/provisioning/alert-rules/:uid | route put alert rule | 기존 알림 규칙 업데이트. |
| GET | /api/v1/provisioning/alert-rules/:uid/export | route get alert rule export | 프로비저닝 파일 형식으로 알림 규칙 내보내기. |
| DELETE | /api/v1/provisioning/folder/:folderUid/rule-groups/:group | route delete alert rule group | 규칙 그룹 삭제. |
| GET | /api/v1/provisioning/folder/:folderUid/rule-groups/:group | route get alert rule group | 규칙 그룹 조회. |
| PUT | /api/v1/provisioning/folder/:folderUid/rule-groups/:group | route put alert rule group | 규칙 그룹 생성 또는 업데이트. |
| GET | /api/v1/provisioning/folder/:folderUid/rule-groups/:group/export | route get alert rule group export | 프로비저닝 파일 형식으로 규칙 그룹 내보내기. |
| GET | /api/v1/provisioning/alert-rules | route get alert rules | 모든 알림 규칙 조회. |
| GET | /api/v1/provisioning/alert-rules/export | route get alert rules export | 프로비저닝 파일 형식으로 모든 알림 규칙 내보내기. |
새 알림 규칙 요청 예제:
POST /api/v1/provisioning/alert-rules
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIj...ZYbk
{
"title": "TEST-API_1",
"ruleGroup": "API",
"folderUID": "SET_FOLDER_UID",
"noDataState": "OK",
"execErrState": "OK",
"for": "5m",
"keepFiringFor": "2m",
"orgId": 1,
"uid": "",
"condition": "B",
"annotations": {
"summary": "test_api_1"
},
"labels": {
"API": "test1"
},
"data": [
{
"refId": "A",
"queryType": "",
"relativeTimeRange": {
"from": 600,
"to": 0
},
"datasourceUid": "XXXXXXXXX-XXXXXXXXX-XXXXXXXXXX",
"model": {
"expr": "up",
"hide": false,
"intervalMs": 1000,
"maxDataPoints": 43200,
"refId": "A"
}
},
{
"refId": "B",
"queryType": "",
"relativeTimeRange": {
"from": 0,
"to": 0
},
"datasourceUid": "-100",
"model": {
"conditions": [
{
"evaluator": {
"params": [6],
"type": "gt"
},
"operator": {
"type": "and"
},
"query": {
"params": ["A"]
},
"reducer": {
"params": [],
"type": "last"
},
"type": "query"
}
],
"datasource": {
"type": "__expr__",
"uid": "-100"
},
"hide": false,
"intervalMs": 1000,
"maxDataPoints": 43200,
"refId": "B",
"type": "classic_conditions"
}
}
]
}
예제 응답: HTTP/1.1 201 Created와 함께 생성된 규칙의 id, uid, orgID, folderUID, ruleGroup, title, condition, data를 반환해요.
연락처 (Contact points)
| Method | URI | Name | Summary |
|---|---|---|---|
| DELETE | /api/v1/provisioning/contact-points/:uid | route delete contactpoints | 연결 지점 삭제. |
| GET | /api/v1/provisioning/contact-points | route get contactpoints | 모든 연결 지점 조회. |
| POST | /api/v1/provisioning/contact-points | route post contactpoints | 연결 지점 생성. |
| PUT | /api/v1/provisioning/contact-points/:uid | route put contactpoint | 기존 연결 지점 업데이트. |
| GET | /api/v1/provisioning/contact-points/export | route get contactpoints export | 프로비저닝 파일 형식으로 모든 연결 지점 내보내기. |
모든 연락처 요청 예제 및 응답:
GET /api/v1/provisioning/contact-points
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIj...ZYbk
응답은 uid, name, type(예: email), settings(예: addresses), disableResolveMessage를 포함한 연락처 배열이에요.
수신자 권한 (Receiver permissions)
수신자 권한 엔드포인트는 연결 지점 수신자(receiver)에 대한 접근 제어를 관리해요. 특정 수신자에 대해 사용자·팀·내장 역할에 권한을 지정할 수 있어요.
| Method | URI | Name | Summary |
|---|---|---|---|
| POST | /api/access-control/receivers/:uid/users/:userID | route set user receiver permission | 특정 수신자에 대한 사용자 권한 설정. |
| POST | /api/access-control/receivers/:uid/teams/:teamID | route set team receiver permission | 특정 수신자에 대한 팀 권한 설정. |
| POST | /api/access-control/receivers/:uid/builtInRoles/:builtInRole | route set builtin receiver permission | 특정 수신자에 대한 내장 역할 권한 설정. |
예: 사용자에게 권한 지정:
POST /api/access-control/receivers/abc123/users/5
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIj...ZYbk
{
"permission": "Edit"
}
사용 가능한 권한 세트:
View— 수신자에 대한 읽기 전용 접근.alert.notifications.receivers:read부여.Edit— 수신자 업데이트·테스트 능력.View액션에 더해alert.notifications.receivers:write,...:delete,...:test:create부여.Admin— 권한 관리와 시크릿 읽기를 포함한 전체 접근.Edit액션에 더해alert.notifications.receivers.secrets:read,receivers.permissions:read,receivers.permissions:write,alert.notifications.receivers.protected:write부여.- 빈 문자열(
"") — 권한 제거.
알림 정책 (Notification policies)
| Method | URI | Name | Summary |
|---|---|---|---|
| DELETE | /api/v1/provisioning/policies | route reset policy tree | 알림 정책 트리 초기화. |
| GET | /api/v1/provisioning/policies | route get policy tree | 알림 정책 트리 조회. |
| PUT | /api/v1/provisioning/policies | route put policy tree | 알림 정책 트리 설정. |
| GET | /api/v1/provisioning/policies/export | route get policy tree export | 프로비저닝 파일 형식으로 알림 정책 트리 내보내기. |
음소거 타이밍 (Mute timings)
| Method | URI | Name | Summary |
|---|---|---|---|
| DELETE | /api/v1/provisioning/mute-timings/:name | route delete mute timing | 음소거 타이밍 삭제. |
| GET | /api/v1/provisioning/mute-timings/:name | route get mute timing | 음소거 타이밍 조회. |
| GET | /api/v1/provisioning/mute-timings | route get mute timings | 모든 음소거 타이밍 조회. |
| POST | /api/v1/provisioning/mute-timings | route post mute timing | 새 음소거 타이밍 생성. |
| PUT | /api/v1/provisioning/mute-timings/:name | route put mute timing | 기존 음소거 타이밍 교체. |
| GET | /api/v1/provisioning/mute-timings/export | route get mute timings export | 모든 음소거 타이밍 내보내기. |
| GET | /api/v1/provisioning/mute-timings/:name/export | route get mute timing export | 특정 음소거 타이밍 내보내기. |
모든 음소거 타이밍 응답 예제:
GET /api/v1/provisioning/mute-timings
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIj...ZYbk
응답은 name, time_intervals(예: weekdays), version, provenance를 포함한 배열이에요.
Grafana UI에서 리소스 편집
기본적으로 Grafana에서는 API로 프로비저닝된 알림 리소스를 편집할 수 없어요. Grafana UI에서 이 리소스 편집을 활성화하려면 다음 API 요청에 X-Disable-Provenance: true 헤더를 추가해요:
PUT /api/v1/provisioning/folder/{FolderUID}/rule-groups/{Group}: 이 동작은 규칙 그룹과 그 모든 알림 규칙의 provenance도 설정해요.POST /api/v1/provisioning/alert-rules: 새 알림 규칙의 provenance는 그 규칙 그룹에 구성된 provenance 값과 일치해야 해요.POST /api/v1/provisioning/contact-pointsPOST /api/v1/provisioning/mute-timingsPUT /api/v1/provisioning/templates/{name}PUT /api/v1/provisioning/policies
알림 정책 트리를 기본값으로 재설정하고 Grafana UI에서 편집을 잠금 해제하려면 DELETE /api/v1/provisioning/policies를 사용해요.
데이터 소스 관리형 리소스
Caution: Grafana Cloud에서 사전 프로비저닝된 Loki·Prometheus 데이터 소스 관리형 알림이 더 이상 사용되지 않으며 새 스택에서는 만들 수 없어요. 새 Grafana Cloud 스택은 기본적으로 Grafana 관리형 알림(GMA)을 사용해요. 기존 스택은 영향이 없어요. 이는 Grafana Labs가 관리하는 기본 클라우드 데이터 소스와 Cloud Alertmanager에 적용되며, 직접 Mimir·Loki·Alertmanager 데이터 소스를 추가하면 데이터 소스 관리형 알림을 계속 쓸 수 있어요. Cloud 사용자는 import 도구로 DMA 규칙을 GMA 규칙으로 가져올 수 있어요.
자세한 경로 및 모델
이어지는 문서의 "Paths" 섹션은 위 엔드포인트 각각의 상세한 파라미터·응답 코드·스키마를 제공하며, "Models" 섹션은 AlertQuery, AlertRuleGroup, AlertingFileExport, ContactPointExport, Matcher, MuteTimeInterval, Route, TimeInterval, ProvisionedAlertRule 등 데이터 모델의 정의를 포함해요. 엔드포인트별 요청·응답 스키마는 원문 문서의 각 섹션을 참조하세요.