통합
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
GitLab은 웹훅 수신기를 통해 모든 소스의 알림을 수락할 수 있습니다. 유지 관리자 또는 소유자 역할을 가지면 프로젝트의 사이드바 메뉴에서 설정 > 모니터로 이동하여 알림 섹션을 확장하여 구성된 알림 통합 목록을 볼 수 있습니다.
GitLab은 웹훅 수신기를 통해 모든 소스의 알림을 수락할 수 있습니다. 알림 알림은 온콜 순번을 위한 호출을 트리거하거나 인시던트 생성에 사용할 수 있습니다.
통합 목록#
유지 관리자 또는 소유자 역할을 가지면 프로젝트의 사이드바 메뉴에서 설정 > 모니터로 이동하여 알림 섹션을 확장하여 구성된 알림 통합 목록을 볼 수 있습니다. 목록에는 통합 이름, 유형 및 상태(활성화 또는 비활성화)가 표시됩니다:

구성#
GitLab은 구성한 HTTP 엔드포인트를 통해 알림을 받을 수 있습니다.
단일 알림 엔드포인트#
GitLab 프로젝트에서 알림 엔드포인트를 활성화하면 JSON 형식의 알림 페이로드를 수신하도록 활성화됩니다. 원하는 대로 언제든지 페이로드를 사용자 정의할 수 있습니다.
- 프로젝트의 유지 관리자 역할을 가진 사용자로 GitLab에 로그인합니다.
- 프로젝트에서 설정 > 모니터로 이동합니다.
- 알림 섹션을 확장하고 통합 유형 선택 드롭다운 목록에서 Prometheus 알림의 경우 Prometheus를, 다른 모니터링 도구의 경우 HTTP 엔드포인트를 선택합니다.
- 활성 알림 설정을 토글합니다. 통합을 저장한 후 자격 증명 보기 탭에서 웹훅 구성을 위한 URL과 인증 키를 사용할 수 있습니다. URL과 인증 키를 외부 서비스에도 입력해야 합니다.
알림 엔드포인트#
GitLab Premium에서는 JSON 형식으로 외부 소스의 알림을 받기 위한 여러 고유 알림 엔드포인트를 생성할 수 있으며 페이로드를 사용자 정의할 수 있습니다.
-
프로젝트의 유지 관리자 역할을 가진 사용자로 GitLab에 로그인합니다.
-
프로젝트에서 설정 > 모니터로 이동합니다.
-
알림 섹션을 확장합니다.
-
생성하려는 각 엔드포인트에 대해:
-
새 통합 추가를 선택합니다.
-
통합 유형 선택 드롭다운 목록에서 Prometheus 알림의 경우 Prometheus를, 다른 모니터링 도구의 경우 HTTP 엔드포인트를 선택합니다. 세부 정보를 참조하십시오.
-
통합의 이름을 지정합니다.
-
활성 알림 설정을 토글합니다. 통합을 저장한 후 자격 증명 보기 탭에서 웹훅 구성을 위한 URL과 인증 키를 사용할 수 있습니다. URL과 인증 키를 외부 서비스에도 입력해야 합니다.
-
선택 사항. 모니터링 도구의 알림 필드를 GitLab 필드에 매핑하려면 샘플 페이로드를 입력하고 사용자 정의 매핑을 위한 페이로드 파싱을 선택합니다. 유효한 JSON이 필요합니다. 샘플 페이로드를 업데이트하는 경우 필드를 다시 매핑해야 합니다. Prometheus 통합의 경우 전체 페이로드 대신 페이로드의
alerts키에서 단일 알림을 입력합니다. -
선택 사항. 유효한 샘플 페이로드를 제공한 경우 페이로드 알림 키의 각 값을 선택하여 GitLab 알림 키에 매핑합니다.
-
통합을 저장하려면 통합 저장을 선택합니다. 원하는 경우 통합이 생성된 후 통합의 테스트 알림 전송 탭에서 테스트 알림을 전송할 수 있습니다.
-
새 HTTP 엔드포인트가 통합 목록에 표시됩니다. 통합 목록 오른쪽의 ⚙️ 설정 아이콘을 선택하여 통합을 편집할 수 있습니다.
사용자 정의 알림의 필드 매핑#
모니터링 도구의 알림 형식을 GitLab 알림과 통합할 수 있습니다. 알림 목록과 알림 세부 정보 페이지에 올바른 정보를 표시하려면 HTTP 엔드포인트를 생성할 때 알림의 필드를 GitLab 필드에 매핑합니다:

Alertmanager에 통합 자격 증명 추가(Prometheus 통합 전용)#
Prometheus 알림 알림을 GitLab으로 보내려면 Prometheus 통합의 URL과 인증 키를 Prometheus Alertmanager 구성의 webhook_configs 섹션에 복사합니다:
receivers:
- name: gitlab
webhook_configs:
- http_config:
authorization:
type: Bearer
credentials: 1234567890abdcdefg
send_resolved: true
url: http://IP_ADDRESS:PORT/root/manual_prometheus/prometheus/alerts/notify.json
# Rest of configuration omitted
# ...
GitLab 외부에서 알림 페이로드 사용자 정의#
예상 HTTP 요청 속성#
사용자 정의 매핑이 없는 HTTP 엔드포인트의 경우 다음 매개변수를 전송하여 페이로드를 사용자 정의할 수 있습니다. 모든 필드는 선택 사항입니다. 수신 알림에 Title 필드 값이 없는 경우 기본값 New: Alert가 적용됩니다.
| 속성 | 유형 | 설명 |
|---|---|---|
title |
String | 알림의 제목. |
description |
String | 문제의 높은 수준의 요약. |
start_time |
DateTime | 알림의 시간. 제공되지 않으면 현재 시간이 사용됨. |
end_time |
DateTime | 알림의 해결 시간. 제공되면 알림이 해결됨. |
service |
String | 영향을 받는 서비스. |
monitoring_tool |
String | 관련 모니터링 도구의 이름. |
hosts |
String or Array | 인시던트가 발생한 하나 이상의 호스트. |
severity |
String | 알림의 심각도. 대소문자 구분 없음. critical, high, medium, low, info, unknown 중 하나일 수 있음. 누락되거나 이 목록에 없는 경우 기본값은 critical. |
fingerprint |
String or Array | 알림의 고유 식별자. 동일한 알림의 발생을 그룹화하는 데 사용할 수 있음. generic_alert_fingerprinting 기능이 활성화된 경우 페이로드를 기반으로 자동으로 핑거프린트가 생성됨(start_time, end_time, hosts 매개변수 제외). |
gitlab_environment_name |
String | 관련 GitLab 환경의 이름. 대시보드에 알림 표시에 필요. |
알림의 페이로드에 사용자 정의 필드도 추가할 수 있습니다. 추가 매개변수의 값은 기본 유형(문자열 또는 숫자)에 국한되지 않고 중첩된 JSON 객체일 수 있습니다. 예를 들어:
{ "foo": { "bar": { "baz": 42 } } }
요청이 페이로드 애플리케이션 제한보다 작은지 확인하십시오.
예시 요청 본문#
페이로드 예시:
{
"title": "Incident title",
"description": "Short description of the incident",
"start_time": "2019-09-12T06:00:55Z",
"service": "service affected",
"monitoring_tool": "value",
"hosts": "value",
"severity": "high",
"fingerprint": "d19381d4e8ebca87b55cda6e8eee7385",
"foo": {
"bar": {
"baz": 42
}
}
}
예상 Prometheus 요청 속성#
알림은 Prometheus 웹훅 수신기에 맞게 형식화될 것으로 예상됩니다.
최상위 필수 속성:
alertscommonAnnotationscommonLabelsexternalURLgroupKeygroupLabelsreceiverstatusversion
Prometheus 페이로드의 alerts에서 배열의 각 항목에 대해 GitLab 알림이 생성됩니다. 아래 나열된 중첩 매개변수를 변경하여 GitLab 알림을 구성할 수 있습니다.
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
annotations/title, annotations/summary 또는 labels/alertname 중 하나 |
String | 예 | 알림의 제목. |
startsAt |
DateTime | 예 | 알림의 시작 시간. |
annotations/description |
String | 아니오 | 문제의 높은 수준의 요약. |
annotations/gitlab_incident_markdown |
String | 아니오 | 알림에서 생성된 인시던트에 추가할 GitLab Flavored Markdown. |
annotations/runbook |
String | 아니오 | 이 알림을 관리하는 방법에 대한 문서 또는 지침 링크. |
endsAt |
DateTime | 아니오 | 알림의 해결 시간. |
generatorUrl의 g0.expr 쿼리 매개변수 |
String | 아니오 | 관련 메트릭의 쿼리. |
labels/gitlab_environment_name |
String | 아니오 | 관련 GitLab 환경의 이름. 대시보드에 알림 표시에 필요. |
labels/severity |
String | 아니오 | 알림의 심각도. Prometheus 심각도 옵션 중 하나여야 함. 누락되거나 이 목록에 없는 경우 기본값은 critical. |
status |
String | 아니오 | Prometheus에서 알림의 상태. 값이 'resolved'이면 알림이 해결됨. |
annotations/gitlab_y_label, annotations/title, annotations/summary 또는 labels/alertname 중 하나 |
String | 아니오 | GitLab Flavored Markdown에 이 알림의 메트릭을 포함할 때 사용할 Y축 레이블. |
annotations 아래에 포함된 추가 속성은 알림 세부 정보 페이지에서 사용할 수 있습니다. 다른 속성은 무시됩니다.
속성은 기본 유형(문자열 또는 숫자)에 국한되지 않고 중첩된 JSON 객체일 수 있습니다. 예를 들어:
{
"target": {
"user": {
"id": 42
}
}
}
요청이 페이로드 애플리케이션 제한보다 작은지 확인하십시오.
Prometheus 심각도 옵션#
Prometheus의 알림은 알림 심각도에 대해 다음 대소문자 구분 없는 값을 제공할 수 있습니다:
- 치명적:
critical,s1,p1,emergency,fatal - 높음:
high,s2,p2,major,page - 중간:
medium,s3,p3,error,alert - 낮음:
low,s4,p4,warn,warning - 정보:
info,s5,p5,debug,information,notice
값이 누락되거나 이 목록에 없는 경우 심각도는 기본적으로 critical로 설정됩니다.
Prometheus 알림 예시#
예시 알림 규칙:
groups:
- name: example
rules:
- alert: ServiceDown
expr: up == 0
for: 5m
labels:
severity: high
annotations:
title: "Example title"
runbook: "http://example.com/my-alert-runbook"
description: "Service has been down for more than 5 minutes."
gitlab_y_label: "y-axis label"
foo:
bar:
baz: 42
예시 요청 페이로드:
{
"version" : "4",
"groupKey": null,
"status": "firing",
"receiver": "",
"groupLabels": {},
"commonLabels": {},
"commonAnnotations": {},
"externalURL": "",
"alerts": [{
"startsAt": "2022-010-30T11:22:40Z",
"generatorURL": "http://host?g0.expr=up",
"endsAt": null,
"status": "firing",
"labels": {
"gitlab_environment_name": "production",
"severity": "high"
},
"annotations": {
"title": "Example title",
"runbook": "http://example.com/my-alert-runbook",
"description": "Service has been down for more than 5 minutes.",
"gitlab_y_label": "y-axis label",
"foo": {
"bar": {
"baz": 42
}
}
}
}]
}
테스트 알림을 트리거할 때는 예시에 표시된 전체 페이로드를 입력합니다. 사용자 정의 매핑을 구성할 때는 샘플 페이로드로 alerts 배열의 첫 번째 항목만 입력합니다.
인증#
다음 인증 방법이 허용됩니다:
- Bearer 인증 헤더
- 기본 인증
<authorization_key> 및 <url> 값은 알림 통합을 구성할 때 찾을 수 있습니다.
Bearer 인증 헤더#
인증 키는 Bearer 토큰으로 사용할 수 있습니다:
curl --request POST \
--data '{"title": "Incident title"}' \
--header "Authorization: Bearer <authorization_key>" \
--header "Content-Type: application/json" \
<url>
기본 인증#
인증 키는 password로 사용할 수 있습니다. username은 비워 둡니다:
- username:
<blank> - password:
<authorization_key>
curl --request POST \
--data '{"title": "Incident title"}' \
--header "Authorization: Basic <base_64_encoded_credentials>" \
--header "Content-Type: application/json" \
<url>
기본 인증은 URL에서 자격 증명을 직접 사용할 수도 있습니다:
curl --request POST \
--data '{"title": "Incident title"}' \
--header "Content-Type: application/json" \
<username:password@url>
URL에 인증 키를 사용하는 것은 서버 로그에 표시되므로 보안상 안전하지 않습니다. 도구에서 지원하는 경우 앞서 설명한 헤더 옵션 중 하나를 사용하는 것이 좋습니다.
응답 본문#
JSON 응답 본문에는 요청 내에서 생성된 모든 알림 목록이 포함됩니다:
[
{
"iid": 1,
"title": "Incident title"
},
{
"iid": 2,
"title": "Second Incident title"
}
]
성공적인 응답은 200 응답 코드를 반환합니다.
테스트 알림 트리거#
프로젝트 유지 관리자 또는 소유자가 통합을 구성한 후 테스트 알림을 트리거하여 통합이 제대로 작동하는지 확인할 수 있습니다.
- 개발자, 유지 관리자 또는 소유자 역할을 가진 사용자로 로그인합니다.
- 프로젝트에서 설정 > 모니터로 이동합니다.
- 알림을 선택하여 섹션을 확장합니다.
- 목록에서 통합 오른쪽의 ⚙️ 설정 아이콘을 선택합니다.
- 테스트 알림 전송 탭을 선택하여 엽니다.
- 페이로드 필드에 테스트 페이로드를 입력합니다(유효한 JSON이 필요).
- 전송을 선택합니다.
GitLab은 테스트 결과에 따라 오류 또는 성공 메시지를 표시합니다.
동일한 알림의 자동 그룹화#
GitLab은 페이로드를 기반으로 알림을 그룹화합니다. 수신 알림이 다른 알림과 동일한 페이로드를 포함하는 경우(start_time 및 hosts 속성 제외) GitLab은 이 알림을 함께 그룹화하고 알림 관리 목록과 세부 정보 페이지에 카운터를 표시합니다.
기존 알림이 이미 resolved 상태인 경우 GitLab은 새 알림을 생성합니다.

복구 알림#
HTTP 엔드포인트가 알림의 종료 시간이 설정된 페이로드를 받으면 GitLab의 알림이 자동으로 해결됩니다. 사용자 정의 매핑이 없는 HTTP 엔드포인트의 경우 예상 필드는 end_time입니다. 사용자 정의 매핑을 사용하면 예상 필드를 선택할 수 있습니다.
GitLab은 페이로드의 일부로 제공될 수 있는 fingerprint 값을 기반으로 해결할 알림을 결정합니다. 알림 속성 및 매핑에 대한 자세한 내용은 GitLab 외부에서 알림 페이로드 사용자 정의를 참조하십시오.
알림이 해결될 때 관련 인시던트가 자동으로 닫히도록 구성할 수도 있습니다.
Opsgenie 알림에 링크#
히스토리
- GitLab 13.2에서 도입됨.
HTTP 엔드포인트 통합을 통해 Opsgenie 및 기타 알림 도구와 더 깊은 통합을 구축하고 있으므로 GitLab 인터페이스에서 알림을 볼 수 있습니다.
Opsgenie와 GitLab 통합을 사용하여 알림을 모니터링할 수 있습니다.
Opsgenie 통합을 활성화하면 다른 GitLab 알림 서비스를 동시에 활성화할 수 없습니다.
Opsgenie 통합을 활성화하려면:
- 유지 관리자 또는 소유자 역할을 가진 사용자로 로그인합니다.
- 모니터 > 알림으로 이동합니다.
- 통합 선택 상자에서 Opsgenie를 선택합니다.
- 활성 토글을 선택합니다.
- API URL 필드에
https://app.opsgenie.com/alert/list와 같이 Opsgenie 통합의 기본 URL을 입력합니다. - 변경 사항 저장을 선택합니다.
통합을 활성화한 후 모니터 > 알림에서 알림 페이지로 이동한 다음 Opsgenie에서 알림 보기를 선택합니다.
