다운타임 예시
다운타임 예시 (Examples)
다운타임을 사용해 예약된 유지보수, 테스트, 또는 오토스케일링 이벤트 동안 불필요한 알림을 없앨 수 있어요. Downtime API를 사용하면 고급 유지보수 일정 형식을 관리하거나, 예를 들어 클라우드 인스턴스를 리사이징할 때 모니터를 동적으로 음소거할 수 있습니다.
이 가이드는 다음 사용 사례에 대한 다운타임 구성 방법을 설명해요.
- 주말 다운타임
- 업무 시간 외 다운타임
- 매월 N번째 평일에 반복되는 다운타임
출처: 문서
본문
개요 (Overview)
다운타임을 사용해 예약된 유지보수, 테스트, 또는 오토스케일링 이벤트 동안 불필요한 알림을 제거하세요. Downtime API로 고급 유지보수 일정 형식을 관리하거나, 예를 들어 클라우드 인스턴스를 리사이징할 때 모니터를 동적으로 음소거할 수 있습니다.
이 가이드는 다음 사용 사례에 대한 다운타임 구성 방법을 설명합니다.
- 주말 다운타임
- 업무 시간 외 다운타임
- 매월 N번째 평일에 반복되는 다운타임
사전 요구사항 (Prerequisites)
이 가이드는 API 사용을 설명하므로, admin 권한이 있는 API 키와 애플리케이션 키가 필요해요. 이 키는 Datadog 계정 API 키 페이지에서 사용할 수 있습니다. 모든 <DATADOG_API_KEY>와 <DATADOG_APP_KEY> 발생을 각각 Datadog API 키와 Datadog 애플리케이션 키로 바꾸세요.
또한 이 가이드는 CURL이 있는 터미널이 있고, 주요 다운타임 문서 페이지를 검토했다고 가정합니다.
사용 사례 (Use cases)
주말 다운타임 (Downtime over the weekend)
회사의 ERP나 회계 소프트웨어처럼 주중에만 사용되는 서비스를 모니터링한다면, 주중에만 알림을 받고 싶을 수 있어요. 다음 API 호출로 env:prod 태그의 모든 모니터에 대해 주말 동안 알림을 음소거할 수 있습니다.
API
curl -X POST "https://api.<DATADOG_SITE>/api/v2/downtime" \
-H "Content-type: application/json" \
-H "DD-API-KEY: *** \
-H "DD-APPLICATION-KEY: ${app_key}" \
-d '{"data":{"type":"downtime","attributes":{"monitor_identifier":{"monitor_tags":["*"]},"scope":"env:prod","display_timezone":"Europe/Berlin","message":"","mute_first_recovery_notification":false,"notify_end_types":["expired","canceled"],"notify_end_states":["alert","warn","no data"],"schedule":{"timezone":"Europe/Berlin","recurrences":[{"start":"2023-09-16T00:00","duration":"24h","rrule":"FREQ=WEEKLY;INTERVAL=1;BYDAY=SA,SU"}]}}}'
선택적으로 다운타임에 message를 추가해 다른 사람들이 만들고 있는 다운타임의 이유와 목적을 알 수 있게 하세요. 예: Muting all monitors in production environment over the weekend.
플레이스홀더 값 <DATADOG_SITE>을 Datadog 계정의 사이트 파라미터로 바꾸세요(Datadog Sites 문서 참고). 원하는 일정에 맞게 start와 end 파라미터를 바꾸세요. 예:
start=$(date +%s)end=$(date -v+24H +%s)
그다음 cURL 명령에서 "start": '"${start}"'을 사용하세요.
응답:
{
"data": {
"id": "16d09s97-1a70-11ee-8319-dasan1997",
"type": "downtime",
"attributes": {
"scope": "env:prod",
"canceled": null,
"schedule": {
"current_downtime": {
"start": "2023-09-16T22:00:00+00:00",
"end": "2023-09-17T22:00:00+00:00"
},
"timezone": "Europe/Berlin",
"recurrences": [
{
"start": "2023-09-16T00:00",
"duration": "24h",
"rrule": "FREQ=WEEKLY;INTERVAL=1;BYDAY=SA,SU"
}
]
},
"notify_end_states": ["warn", "alert", "no data"],
"monitor_identifier": { "monitor_tags": ["*"] },
"status": "scheduled",
"display_timezone": "Europe/Berlin",
"notify_end_types": ["canceled", "expired"],
"created": "2023-07-04T13:41:06.855440+00:00",
"modified": "2023-07-04T13:41:06.855440+00:00",
"mute_first_recovery_notification": false,
"message": ""
},
[..]
},
[..]
}
UI
Manage Downtime 페이지를 열고 새 다운타임을 예약하세요. 반복(recurring)을 선택합니다.
업무 시간 외 다운타임 (Downtime outside of business hours)
같은 예시에서, 주중 업무 시간 외에도 이 서비스를 음소거하고 싶을 수 있어요.
API
다음 API 호출로 매 평일 8pm에서 6am까지 알림을 음소거할 수 있어요.
curl -X POST "https://api.<DATADOG_SITE>/api/v1/downtime" \
-H "Content-type: application/json" \
-H "DD-API-KEY: *** \
-H "DD-APPLICATION-KEY: ${app_key}" \
-d '{"data":{"type":"downtime","attributes":{"monitor_identifier":{"monitor_tags":["*"]},"scope":"env:prod","display_timezone":"Europe/Berlin","message":"","mute_first_recovery_notification":false,"notify_end_types":["expired","canceled"],"notify_end_states":["alert","warn","no data"],"schedule":{"timezone":"Europe/Berlin","recurrences":[{"start":"2023-07-10T18:00","duration":"12h","rrule":"FREQ=DAILY;INTERVAL=1"}]}}}}'
선택적으로 다운타임에 message를 추가해 이유와 목적을 알 수 있게 하세요. 플레이스홀더 값 <DATADOG_SITE>을 사이트 파라미터로 바꾸세요(Datadog Sites 문서 참고). 원하는 일정에 맞게 start와 end 파라미터를 바꾸세요.
응답:
{
"data": {
"type": "downtime",
"id": "16d09s97-1a70-11ee-8319-dasan1997",
"attributes": {
"message": "",
"mute_first_recovery_notification": false,
"canceled": null,
"scope": "env:prod",
"monitor_identifier": { "monitor_tags": ["*"] },
"modified": "2023-07-05T08:12:17.145771+00:00",
"created": "2023-07-05T08:12:17.145771+00:00",
"status": "scheduled",
"display_timezone": "Europe/Berlin",
"schedule": {
"recurrences": [
{
"duration": "12h",
"rrule": "FREQ=DAILY;INTERVAL=1",
"start": "2023-07-10T18:00"
}
],
"current_downtime": {
"end": "2023-07-11T04:00:00+00:00",
"start": "2023-07-10T16:00:00+00:00"
},
"timezone": "Europe/Berlin"
},
"notify_end_states": ["alert", "warn", "no data"],
"notify_end_types": ["canceled", "expired"]
},
[..]
},
[..]
}
UI
Manage Downtime 페이지를 열고 새 다운타임을 예약하세요. 반복을 선택합니다.
업무 시간 외와 주말 결합 다운타임 (Combined downtime for outside business hours and weekend)
업무 시간 중에만 모니터 알림을 받고 싶은 사용 사례라면, 주중과 주말 모두 모니터를 음소거하세요. 이는 단일 다운타임으로 결합할 수 있어요. 위의 업무 시간 외 다운타임 예시에서 이어집니다.
API
다음 API 호출로 매 평일 8pm에서 6am과 전체 주말 동안 알림을 음소거할 수 있어요.
curl -X POST "https://api.<DATADOG_SITE>/api/v1/downtime" \
-H "Content-type: application/json" \
-H "DD-API-KEY: *** \
-H "DD-APPLICATION-KEY: ${app_key}" \
-d '{"data":{"type":"downtime","attributes":{"monitor_identifier":{"monitor_tags":["*"]},"scope":"env:prod","display_timezone":"Europe/Berlin","message":"","mute_first_recovery_notification":false,"notify_end_types":["expired","canceled"],"notify_end_states":["alert","warn","no data"],"schedule":{"timezone":"Europe/Berlin","recurrences":[{"start":"2023-07-09T18:00","duration":"12h","rrule":"FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR"},{"start":"2023-07-09T00:00","duration":"24h","rrule":"FREQ=WEEKLY;INTERVAL=1;BYDAY=SA,SU"}]}}}'
선택적으로 다운타임에 message를 추가하세요. <DATADOG_SITE>을 사이트 파라미터로, start·end 파라미터를 원하는 일정으로 바꾸세요.
응답:
{
"data": {
"type": "downtime",
"id": "16d09s97-1a70-11ee-8319-dasan1997",
"attributes": {
"monitor_identifier": { "monitor_tags": ["*"] },
"created": "2023-07-05T08:36:00.917977+00:00",
"message": "",
"schedule": {
"current_downtime": {
"start": "2023-07-08T22:00:00+00:00",
"end": "2023-07-10T04:00:00+00:00"
},
"timezone": "Europe/Berlin",
"recurrences": [
{
"start": "2023-07-09T18:00",
"duration": "12h",
"rrule": "FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR"
},
{
"start": "2023-07-09T00:00",
"duration": "24h",
"rrule": "FREQ=WEEKLY;INTERVAL=1;BYDAY=SA,SU"
}
]
},
"notify_end_states": ["alert", "warn", "no data"],
"status": "scheduled",
"scope": "env:prod",
"modified": "2023-07-05T08:36:00.917977+00:00",
"mute_first_recovery_notification": false,
"notify_end_types": ["expired", "canceled"],
"display_timezone": "Europe/Berlin",
"canceled": null
},
[..]
},
[..]
}
UI
Manage Downtime 페이지를 열고 새 다운타임을 추가하세요. 반복을 선택합니다.
매월 N번째 평일에 반복되는 다운타임 (Recurring downtime on the nth weekday of the month)
더 고급 유지보수 일정을 계획하려면 RRULE을 사용할 수 있어요.
RRULE — 또는 recurrence rule — 은 반복 이벤트 정의의 표준인 iCalendar RFC의 속성 이름입니다.
RRULE에서 지속 시간을 지정하는 속성은 지원되지 않아요(예: DTSTART, DTEND, DURATION). 가능한 속성은 RFC를 참고하세요. 이 도구로 RRULE을 생성해 API 호출에 붙여넣을 수 있습니다.
예시: ERP 앱이 매월 두 번째 화요일에 8AM에서 10AM 사이에 패치와 수정을 적용하기 위해 업데이트됩니다. 이에 대한 모니터는 app:erp로 범위가 지정되므로, 다운타임 범위에 사용됩니다.
API
start와 end 파라미터는 반복 규칙의 첫 번째 날의 예상 시작과 끝과 일치해야 해요. 규칙의 첫 번째 두 번째 화요일이 화요일 7월 11일이라고 가정하면, 시작 날짜는 7월 11일 오전 8시여야 하고 두 시간의 지속 시간이 설정되어야 합니다.
API 호출:
curl -X POST "https://api.<DATADOG_SITE>/api/v1/downtime" \
-H "Content-type: application/json" \
-H "DD-API-KEY: *** \
-H "DD-APPLICATION-KEY: ${app_key}" \
-d '{"data":{"type":"downtime","attributes":{"monitor_identifier":{"monitor_tags":["*"]},"scope":"env:prod","display_timezone":"Europe/Berlin","message":"","mute_first_recovery_notification":false,"notify_end_types":["expired","canceled"],"notify_end_states":["alert","warn","no data"],"schedule":{"timezone":"Europe/Berlin","recurrences":[{"start":"2023-07-11T08:00","duration":"2h","rrule":"FREQ=DAILY;INTERVAL=1;BYDAY=2TU"}]}}}'
<DATADOG_SITE>을 사이트 파라미터로, start·end 파라미터를 원하는 일정으로 바꾸세요.
응답:
{
"data": {
"type": "downtime",
"id": "16d09s97-1a70-11ee-8319-dasan1997",
"attributes": {
"mute_first_recovery_notification": false,
"notify_end_types": ["canceled", "expired"],
"created": "2023-07-05T08:50:19.678427+00:00",
"display_timezone": "Europe/Berlin",
"modified": "2023-07-05T08:50:19.678427+00:00",
"status": "scheduled",
"canceled": null,
"notify_end_states": ["warn", "alert", "no data"],
"message": "",
"schedule": {
"recurrences": [
{
"duration": "2h",
"start": "2023-07-11T08:00",
"rrule": "FREQ=DAILY;INTERVAL=1;BYDAY=2TU"
}
],
"current_downtime": {
"end": "2023-07-11T08:00:00+00:00",
"start": "2023-07-11T06:00:00+00:00"
},
"timezone": "Europe/Berlin"
},
"scope": "env:prod",
"monitor_identifier": { "monitor_tags": ["*"] }
},
[..]
},
[..]
}
UI
Manage Downtime 페이지를 열고 새 다운타임을 추가하세요. 반복을 선택한 다음 Use RRULE을 선택합니다.