통합
GitLab은 웹후크 수신기를 통해 모든 소스에서 알림을 수신할 수 있습니다. 알림 알림
은 페이지를 트리거할 수 있으며, 대기 중인 회전 또는 사고를 생성하는 데 사용될 수 있습니다.
통합 목록
최소한 Maintainer 역할이 있는 경우, Settings > Monitor로 이동하여
프로젝트의 사이드바 메뉴에서 구성된 알림 통합 목록을 볼 수 있으며,
Alerts 섹션을 확장할 수 있습니다. 목록은 통합 이름, 유형 및 상태(활성화 또는 비활성화)를 표시합니다:
구성
GitLab은 구성한 HTTP 엔드포인트를 통해 알림을 수신할 수 있습니다.
단일 HTTP 엔드포인트
GitLab 프로젝트에서 HTTP 엔드포인트를 활성화하면 알림 페이로드를 JSON 형식으로 수신할 수 있게 됩니다.
언제든지 페이로드를 사용자 지정할 수 있습니다.
-
프로젝트에 대해 Maintainer 역할을 가진 사용자로 GitLab에 로그인합니다.
-
프로젝트의 Settings > Monitor로 이동합니다.
-
Alerts 섹션을 확장하고, Select integration type 드롭다운 목록에서
HTTP Endpoint를 선택합니다. -
Active 알림 설정을 전환합니다. 웹후크 구성에 대한 URL 및 인증 키는
통합을 저장한 후 View credentials 탭에서 사용할 수 있습니다.
외부 서비스에서도 URL 및 인증 키를 입력해야 합니다.
HTTP 엔드포인트
GitLab Premium에서는
여러 개의 고유한 HTTP 엔드포인트를 생성하여 외부 소스에서 JSON 형식으로 알림을 수신할 수 있으며,
페이로드를 사용자 지정할 수 있습니다.
-
프로젝트에 대해 Maintainer 역할을 가진 사용자로 GitLab에 로그인합니다.
-
프로젝트의 Settings > Monitor로 이동합니다.
-
Alerts 섹션을 확장합니다.
-
생성할 각 엔드포인트에 대해:
- Add new integration를 선택합니다.
- Select integration type 드롭다운 목록에서 HTTP Endpoint를 선택합니다.
- 통합의 이름을 입력합니다.
-
Active 알림 설정을 전환합니다. 웹후크 구성에 대한 URL 및 Authorization Key는
통합을 저장한 후 View credentials 탭에서 사용할 수 있습니다.
외부 서비스에서도 URL 및 Authorization Key를 입력해야 합니다. -
선택 사항. 모니터링 도구의 알림에서 GitLab 필드로 매핑하려면 샘플
페이로드를 입력하고 Parse payload for custom mapping을 선택합니다. 유효한 JSON이 필요합니다.
샘플 페이로드를 업데이트하면 필드도 다시 매핑해야 합니다. - 선택 사항. 유효한 샘플 페이로드를 제공한 경우, Payload alert key의 각 값을 선택하여
GitLab alert key에 매핑합니다. - 통합을 저장하려면 Save Integration를 선택합니다.
원하는 경우, 통합이 생성된 후 Send test alert 탭에서 테스트 알림을 보낼 수 있습니다.
새로운 HTTP 엔드포인트는 통합 목록에 표시됩니다.
통합 목록의 오른쪽에 있는 설정 아이콘을 선택하여 통합을 편집할 수 있습니다.
맞춤 알림에서 필드 매핑
모니터링 도구의 알림 형식을 GitLab 알림으로 통합할 수 있습니다.
알림 목록 및 알림 세부 정보 페이지에 올바른 정보를 표시하려면 알림의 필드를 GitLab 필드에 매핑하십시오. HTTP 엔드포인트를 생성할 때:
GitLab 외부에서 알림 페이로드 사용자 지정
맞춤 매핑이 없는 HTTP 엔드포인트의 경우, 다음 매개변수를 보내어 페이로드를 사용자 지정할 수 있습니다. 모든 필드는 선택 사항입니다. 수신하는 알림에 Title
필드의 값이 포함되지 않은 경우 기본값인 New: Alert
가 적용됩니다.
속성 | 유형 | 설명 |
---|---|---|
title |
문자열 | 알림의 제목입니다. |
description |
문자열 | 문제에 대한 고급 요약입니다. |
start_time |
날짜 및 시간 | 알림의 시간입니다. 제공되지 않으면 현재 시간이 사용됩니다. |
end_time |
날짜 및 시간 | 알림의 해결 시간입니다. 제공되면 알림이 해결됩니다. |
service |
문자열 | 영향을 받는 서비스입니다. |
monitoring_tool |
문자열 | 관련 모니터링 도구의 이름입니다. |
hosts |
문자열 또는 배열 | 이 사고가 발생한 하나 이상의 호스트입니다. |
severity |
문자열 | 알림의 심각도입니다. 대소문자를 구분하지 않습니다. critical , high , medium , low , info , unknown 중 하나일 수 있습니다. 누락되거나 이 목록에 값이 없으면 기본값은 critical 입니다. |
fingerprint |
문자열 또는 배열 | 알림의 고유 식별자입니다. 이는 동일한 알림의 발생을 그룹화하는 데 사용할 수 있습니다. generic_alert_fingerprinting 기능이 활성화되면 페이로드를 기반으로 지문이 자동으로 생성됩니다( start_time , end_time , 및 hosts 매개변수는 제외). |
gitlab_environment_name |
문자열 | 관련된 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
}
}
}
프로메테우스 엔드포인트
필수 조건:
- 프로젝트에 대해 최소한 유지 관리자(Maintainer) 역할이 있어야 합니다.
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
설정 > 모니터를 선택합니다.
-
알림 섹션을 확장하고 새 통합 추가를 선택합니다.
-
통합 유형 선택 드롭다운 목록에서 Prometheus를 선택합니다.
-
활성화 토글을 켭니다.
-
Prometheus API 기본 URL을 입력합니다. 이 필드는 더 이상 사용되지 않음 및 제거 예정입니다.
-
통합 저장을 선택합니다.
웹후크 구성의 URL 및 인증 키는 자격 증명 보기 탭에서 확인할 수 있습니다.
URL 및 인증 키를 외부 서비스에 입력하세요.
또한 통합의 테스트 알림 보내기 탭에서 테스트 알림을 보낼 수 있습니다.
프로메테우스 알림 관리자에 통합 자격 증명 추가
프로메테우스 알림을 GitLab에 보내려면, Prometheus 통합에서 URL 및 인증 키를 복사하여
프로메테우스 알림 관리자 구성의 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
# 나머지 구성 생략
# ...
예상 요청 속성
알림은 프로메테우스 웹후크 수신기 형식으로 예상됩니다.
상위 수준 필수 속성:
alerts
commonAnnotations
commonLabels
externalURL
groupKey
groupLabels
receiver
status
version
alerts
의 Prometheus 페이로드에서 GitLab 알림은 배열의 각 항목에 대해 생성됩니다.
아래 나열된 중첩 매개변수를 수정하여 GitLab 알림을 구성할 수 있습니다.
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
annotations/title , annotations/summary 또는 labels/alertname 중 하나 |
문자열 | 예 | 알림의 제목입니다. |
startsAt |
날짜/시간 | 예 | 알림의 시작 시간입니다. |
annotations/description |
문자열 | 아니오 | 문제에 대한 높은 수준의 요약입니다. |
annotations/gitlab_incident_markdown |
문자열 | 아니오 | 알림에서 생성된 사건에 추가될 GitLab Flavored Markdown입니다. |
annotations/runbook |
문자열 | 아니오 | 이 알림을 관리하는 방법에 대한 문서 또는 지침 링크입니다. |
endsAt |
날짜/시간 | 아니오 | 알림의 해결 시간입니다. |
g0.expr 쿼리 매개변수는 generatorUrl 에 있습니다. |
문자열 | 아니오 | 연결된 메트릭의 쿼리입니다. |
labels/gitlab_environment_name |
문자열 | 아니오 | 연관된 GitLab 환경의 이름입니다. 대시보드에서 알림을 표시하는 데 필요합니다. |
labels/severity |
문자열 | 아니오 | 알림의 심각도입니다. Prometheus 심각도 옵션 중 하나여야 합니다. 누락되거나 이 목록에 값이 없으면 기본값은 critical 입니다. |
status |
문자열 | 아니오 | Prometheus에서 알림의 상태입니다. 값이 ‘resolved’인 경우 알림이 해결됩니다. |
annotations/gitlab_y_label , annotations/title , annotations/summary 또는 labels/alertname 중 하나 |
문자열 | 아니오 | 이 알림의 메트릭을 GitLab Flavored Markdown에 포함할 때 사용할 Y축 레이블입니다. |
annotations
하위에 추가된 속성은 알림 세부정보 페이지에서 사용할 수 있습니다. 다른 속성은 무시됩니다.
속성은 문자열이나 숫자와 같은 원시 데이터 유형에 국한되지 않고 중첩된 JSON 객체일 수 있습니다. 예:
{
"target": {
"user": {
"id": 42
}
}
}
참고: 요청이 페이로드 응용 프로그램 한도보다 작아야 합니다.
프로메테우스 심각도 옵션
프로메테우스의 알림은 알림 심각도에 대해 대소문자를 구분하지 않는 다음 값을 제공할 수 있습니다:
-
Critical:
critical
,s1
,p1
,emergency
,fatal
-
High:
high
,s2
,p2
,major
,page
-
Medium:
medium
,s3
,p3
,error
,alert
-
Low:
low
,s4
,p4
,warn
,warning
-
Info:
info
,s5
,p5
,debug
,information
,notice
값이 누락되거나 이 목록에 없으면 기본 심각도는 critical
로 설정됩니다.
예제 프로메테우스 알림
예제 알림 규칙:
groups:
- name: example
rules:
- alert: ServiceDown
expr: up == 0
for: 5m
labels:
severity: high
annotations:
title: "예제 제목"
runbook: "http://example.com/my-alert-runbook"
description: "서비스가 5분 이상 중단되었습니다."
gitlab_y_label: "y축 레이블"
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": "예제 제목",
"runbook": "http://example.com/my-alert-runbook",
"description": "서비스가 5분 이상 중단되었습니다.",
"gitlab_y_label": "y축 레이블",
"foo": {
"bar": {
"baz": 42
}
}
}
}]
}
인증
다음 인증 방법이 허용됩니다:
- Bearer 인증 헤더
- 기본 인증
<authorization_key>
및 <url>
값은 알림 통합을 구성할 때 찾을 수 있습니다.
Bearer 인증 헤더
인증 키는 Bearer 토큰으로 사용될 수 있습니다:
curl --request POST \
--data '{"title": "사고 제목"}' \
--header "Authorization: Bearer <authorization_key>" \
--header "Content-Type: application/json" \
<url>
기본 인증
인증 키는 password
로 사용될 수 있습니다. username
은 비워둡니다:
- username:
<blank>
- password:
<authorization_key>
curl --request POST \
--data '{"title": "사고 제목"}' \
--header "Authorization: Basic <base_64_encoded_credentials>" \
--header "Content-Type: application/json" \
<url>
기본 인증은 URL에 직접 자격 증명을 사용할 수도 있습니다:
curl --request POST \
--data '{"title": "사고 제목"}' \
--header "Content-Type: application/json" \
<username:password@url>
경고:
URL에서 인증 키를 사용하는 것은 보안에 취약하며, 서버 로그에 노출됩니다. 도구가 지원하는 경우 위의 헤더 옵션 중 하나를 사용하는 것이 좋습니다.
응답 본문
JSON 응답 본문은 요청 내에서 생성된 경고 목록을 포함합니다:
[
{
"iid": 1,
"title": "사고 제목"
},
{
"iid": 2,
"title": "두 번째 사고 제목"
}
]
성공적인 응답은 200
응답 코드를 반환합니다.
테스트 경고 트리거링
프로젝트 유지 관리자 또는 소유자가 통합을 구성한 후, 통합이 제대로 작동하는지 확인하기 위해 테스트 경고를 트리거할 수 있습니다.
- 최소 개발자 역할을 가진 사용자로 로그인합니다.
- 프로젝트의 설정 > 모니터로 이동합니다.
- 경고를 선택하여 해당 섹션을 확장합니다.
- 목록에서 통합의 오른쪽에 있는 설정 아이콘을 선택합니다.
- 테스트 경고 전송 탭을 선택하여 엽니다.
- 페이로드 필드에 테스트 페이로드를 입력합니다(유효한 JSON이 필요합니다).
- 전송을 선택합니다.
GitLab은 테스트의 결과에 따라 오류 또는 성공 메시지를 표시합니다.
동일한 경고의 자동 그룹화
GitLab은 페이로드를 기반으로 경고를 그룹화합니다. 수신 경고의 페이로드가 다른 경고와 동일한 경우( start_time
및 hosts
속성 제외), GitLab은 이러한 경고를 함께 그룹화하여 경고 관리 목록 및 세부 정보 페이지에 카운터를 표시합니다.
기존 경고가 이미 해결됨
인 경우, GitLab은 대신 새로운 경고를 생성합니다.
복구 경고
GitLab의 경고는 HTTP 엔드포인트가 설정된 경고의 종료 시간으로 페이로드를 수신하면 자동으로 해결됩니다. 커스텀 매핑이 없는 HTTP 엔드포인트의 경우, 예상되는 필드는 end_time
입니다. 커스텀 매핑을 사용하면 예상 필드를 선택할 수 있습니다.
GitLab은 페이로드의 일부로 제공될 수 있는 fingerprint
값을 기반으로 어떤 경고를 해결할지 결정합니다. 경고 속성 및 매핑에 대한 자세한 내용은 GitLab 외부에서 경고 페이로드 사용자화하기를 참조하세요.
경고가 해결될 때 연결된 사고를 자동으로 닫도록 설정할 수도 있습니다.
Opsgenie 경고 링크
- GitLab 13.2에 도입됨 Introduced.
경고: Opsgenie 및 기타 경고 도구와의 더 깊은 통합을 위해 HTTP 엔드포인트 통합을 통해 GitLab 인터페이스에서 경고를 볼 수 있습니다.
GitLab 통합을 사용하여 Opsgenie에서 경고를 모니터링할 수 있습니다.
Opsgenie 통합을 활성화하면 동시에 다른 GitLab 경고 서비스가 활성 상태일 수 없습니다.
Opsgenie 통합을 활성화하려면:
- 유지 관리자 또는 소유자 역할을 가진 사용자로 로그인합니다.
- 모니터 > 경고로 이동합니다.
- 통합 선택 상자에서 Opsgenie를 선택합니다.
- 활성 토글을 선택합니다.
-
API URL 필드에 Opsgenie 통합을 위한 기본 URL을 입력합니다 (예:
https://app.opsgenie.com/alert/list
). - 변경 사항 저장을 선택합니다.
통합을 활성화한 후, 모니터 > 경고의 경고 페이지로 이동한 다음 Opsgenie에서 경고 보기를 선택합니다.