이 문서에서는 Pub/Sub를 사용하여 프로그래매틱 예산 및 비용 이상치(프리뷰) 알림을 설정하는 방법을 설명합니다.
예산 및 비용 이상치는 일반적으로 이메일 알림을 보내도록 구성됩니다. 예산 또는 비용 이상 감지를 비용 관리 도구로 사용하는 경우, 이메일 알림은 비용을 시기적절하게 제어하기에 적합한 방법이 아닐 수 있습니다. 프로그래매틱 알림을 설정하고 사용하여 비용 관리 응답을 자동화할 수 있습니다. 자동화된 비용 관리 응답의 예는 다음과 같습니다.
제한사항
예산에 사용되는 Cloud Billing 데이터는 예상치이며, 이는 인보이스가 확정되기 전까지는 변경될 수 있습니다.
도메인별 리소스 공유를 제한하도록 조직 정책을 설정하면(예: Pub/Sub 주제에서
enforceInTransit
사용 설정) Pub/Sub 주제를 설정하거나 연결하려고 할 때 오류가 발생할 수 있습니다. 이 경우 Pub/Sub 주제를 예산에 성공적으로 연결하기 위해 계정 액세스를 강제해야 할 수 있습니다. 계정 액세스를 강제하려면 다음 단계를 완료하세요.- 다음 방법 중 하나를 사용하여 도메인 제한 제약조건을 포함하는 조직 정책을 삭제합니다.
- 일시적으로 조직 정책을 삭제합니다.
- Pub/Sub 주제가 포함된 프로젝트의 조직 정책을 재정의합니다.
- Pub/Sub 주제를 연결하는 단계를 따릅니다.
- 조직 또는 프로젝트의 조직 정책을 복원합니다(선택사항).
- 다음 방법 중 하나를 사용하여 도메인 제한 제약조건을 포함하는 조직 정책을 삭제합니다.
이 태스크에 필요한 권한
예산 알림
프로그래매틱 예산 알림을 설정하려면 예산 및 Pub/Sub 주제를 만들거나 수정할 수 있는 권한이 필요합니다. 액세스 수준에 따라 서로 다른 권한 세트가 필요합니다.
Cloud Billing 계정 권한이 있는 사용자 | 프로젝트 수준 권한만 있는 사용자(프리뷰) |
---|---|
조직에서 인증에 커스텀 역할을 사용하는 경우 커스텀 역할에 다음 권한이 필요합니다.
커스텀 역할이 기존 Cloud Billing 예산을 수정하여 기존 Pub/Sub 주제에 연결하려면 다음 권한이 필요합니다.
사전 정의된 역할을 사용하여 필요한 권한을 얻으려면 관리자에게 Cloud Billing 계정에 대한 다음 사전 정의된 Cloud Billing IAM 역할 중 하나를 부여해 달라고 요청하세요. 그리고 관리자에게 Pub/Sub 주제가 포함된 대상 프로젝트에 대한 다음 역할을 부여해 달라고 요청하세요. |
조직에서 인증에 커스텀 역할을 사용하는 경우 커스텀 역할에 다음 권한이 필요합니다.
사전 정의된 역할을 사용하여 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 사전 정의된 Cloud Billing IAM 역할 중 하나를 부여해 달라고 요청하세요. 그리고 관리자에게 Pub/Sub 주제가 포함된 대상 프로젝트에 대한 다음 역할을 부여해 달라고 요청하세요. |
이상치 알림
프로그래매틱 이상 감지 알림을 설정하려면 이상 감지 및 Pub/Sub 주제를 만들거나 수정할 수 있는 권한이 필요합니다. Cloud Billing 계정 권한이 있어야 합니다.
Cloud Billing 계정 권한이 있는 사용자(프리뷰) |
---|
사전 정의된 역할을 사용하여 필요한 권한을 얻으려면 관리자에게 Cloud Billing 계정에 대한 다음 사전 정의된 Cloud Billing IAM 역할 중 하나를 부여해 달라고 요청하세요. 그리고 관리자에게 Pub/Sub 주제가 포함된 대상 프로젝트에 대한 다음 역할을 부여해 달라고 요청하세요. |
Pub/Sub 주제 만들기
프로그래매틱 예산 또는 이상치 알림을 설정하려면 먼저 Pub/Sub 주제를 만들어야 합니다. 예산 또는 비용 이상치에 대한 Pub/Sub 주제를 이미 구성한 경우에는 이 단계를 건너뛰면 됩니다.
Google Cloud 콘솔 Pub/Sub 페이지로 이동합니다.
Pub/Sub 주제가 포함된 프로젝트를 선택합니다.
결제 알림에 대한 Pub/Sub 주제를 구성할 때는 FinOps 관리 프로젝트를 사용하여 결제 관련 Pub/Sub 주제를 포함하는 것이 좋습니다.
주제 만들기를 클릭합니다.
주제 ID 필드에 주제 이름을 제공합니다.
기본 구독 및 암호화 설정을 유지하고 만들기를 클릭합니다.
Pub/Sub 주제 연결
Pub/Sub 메시지를 예산 또는 이상치의 현재 상태와 함께 수신하도록 프로그래매틱 알림을 사용 설정하려면 예산 또는 이상치를 Pub/Sub 주제에 연결해야 합니다.
예산 알림
Pub/Sub 주제를 Cloud Billing 예산에 연결하려면 다음 단계를 완료하세요.
Cloud Billing 계정 권한이 있는 사용자 | 프로젝트 수준 권한만 있는 사용자(프리뷰) |
---|---|
|
|
이상치 알림
Pub/Sub 주제를 비용 이상치에 연결하려면 다음 단계를 완료합니다.
Cloud Billing 계정 권한이 있는 사용자(프리뷰) |
---|
|
알림 형식
Pub/Sub 주제로 전송되는 알림은 다음 두 부분으로 구성됩니다.
- 속성: 이벤트를 설명하는 키-값 쌍의 모음입니다.
데이터: 예산 알림 세부정보를 설명하는 JSON 객체가 포함된 문자열입니다.
예산 알림
속성
속성은 Cloud Billing이 Pub/Sub 주제로 전송하는 모든 알림에 포함되는 키-값 쌍입니다. 알림 페이로드에 관계없이 알림에는 항상 다음 키-값 쌍이 포함됩니다.
속성 이름 | 예 | 설명 |
---|---|---|
billingAccountId |
01D4EE-079462-DFD6EC
|
예산을 소유한 Cloud Billing 계정의 식별자입니다. |
budgetId |
de72f49d-779b-4945-a127-4d6ce8def0bb
|
Cloud Billing 계정 내 예산 알림의 식별자입니다. |
schemaVersion |
1.0
|
알림 스키마 버전입니다. |
데이터
예산 알림 세부정보는 JSON 객체가 포함된 base64 인코딩 UTF-8 문자열로 반환되며, 해당 JSON 객체는 다음 속성을 포함합니다.
데이터 | 예 | 설명 |
---|---|---|
budgetDisplayName
|
"My Personal Budget"
|
예산에 할당된 이름이며 인간이 읽을 수 있는 형식입니다. |
costAmount
|
140.321
|
발생한 비용의 액수입니다. 추적되는 비용 유형은 예산 필터 및 설정에 따라 다릅니다. |
costIntervalStart
|
"2021-02-01T08:00:00Z"
|
예산 알림 기간의 시작입니다. `costAmount`에는 이 시점부터의 사용 비용이 포합됩니다. 예산 사용이 발생한 예산 기간(월, 분기, 연도 또는 커스텀 기간)의 시작일입니다. |
budgetAmount
|
152.557
|
예산에 배정된 금액입니다. |
budgetAmountType
|
"SPECIFIED_AMOUNT"
|
예산 금액 유형입니다. 다음 값 중 한 가지로 표시됩니다.
|
alertThresholdExceeded
|
0.9
|
가장 높게 구성된 실제 비용 알림 기준이 초과되었습니다. 값은 십진수 형식입니다(예: 0.9는 90%). 실제 비용이 기준을 초과하지 않았다면 이 키가 없습니다. |
forecastThresholdExceeded
|
0.2
|
가장 높은 예측 비용 알림 기준을 초과했습니다. 값은 십진수 형식의 백분율입니다(예: 0.2는 20%). 예측 비용이 기준을 초과하지 않았다면 이 키가 없습니다. |
currencyCode
|
"USD"
|
예산 알림 통화입니다. 모든 비용과 예산 금액이 이 통화로 표시됩니다. |
이상치 알림
속성
속성은 Cloud Billing이 Pub/Sub 주제로 전송하는 모든 알림에 포함되는 키-값 쌍입니다. 알림 페이로드에 관계없이 알림에는 항상 다음 키-값 쌍이 포함됩니다.
속성 이름 | 예 | 설명 |
---|---|---|
범위 |
scope_project
|
이상치의 범위입니다. |
billingAccountName |
billingAccounts/01D4EE-079462-DFD6EC
|
이상치가 발생한 Cloud Billing 계정의 식별자입니다. |
resourceDisplayName |
My project
|
이상치가 발생한 리소스의 표시 이름입니다. |
resourceName |
projects/123456
|
이상치가 발생한 리소스의 식별자입니다. |
SchemaVersion |
1.0
|
Pub/Sub 스키마 버전입니다. |
데이터
이상치 알림 세부정보는 JSON 객체가 포함된 base64 인코딩 UTF-8 문자열로 반환되며, 해당 JSON 객체는 다음 속성을 포함합니다.
데이터 | 예 | 설명 |
---|---|---|
anomalyName
|
billingAccounts/01D4EE-079462-DFD6EC/anomalies/aaa
|
이상치의 리소스 이름입니다. |
billingAccountName
|
billingAccounts/01D4EE-079462-DFD6EC
|
결제 계정의 식별자입니다. |
resourceName
|
"projects/12345"
|
이상치가 발생한 리소스의 식별자입니다. |
resourceDisplayName
|
"My project"
|
이상치가 발생한 리소스의 표시 이름입니다. |
detectionDate
|
"2024-02-01T08:00:00Z"
|
비용 이상이 감지된 날짜입니다. |
Scope
|
SCOPE_PROJECT
|
이상 감지의 범위를 나타냅니다. |
expectedSpendAmount
|
{
|
리소스의 예상 지출액입니다. |
actualSpendAmount
|
196.22
|
리소스의 실제 지출액입니다. |
deviationAmount
|
31.01
|
실제 지출액과 예상 지출액의 차이입니다. |
deviationPercentage
|
18.77
|
예상 지출액 대비 편차 금액의 비율입니다. |
Root cause
|
root_causes { resource: "services/XXX-XXXX-XXX" display_name: "BigQuery" cause_type: CAUSE_TYPE_SERVICE deviation { expected_spend { currency_code: "USD" units: "5000" } actual_spend { currency_code: "USD" units: "5000" } deviation_amount { currency_code: "USD" units: "5000" } deviation_percentage: "Infinity" } sub_causes { resource: "locations/us-west1", display_name: "us-west1", cause_type: CAUSE_TYPE_LOCATION, deviation { expected_spend { currency_code: "USD", } actual_spend { currency_code: "USD", units:"5000" } deviation_amount { currency_code: "USD", units: "5000" } deviation_percentage: "Infinity" } sub_causes { resource: "services/XXXX-XXXX-XXXX/skus/XXXX-XXXX-XXXX" display_name: "Some display name" cause_type: CAUSE_TYPE_SKU deviation { expected_spend { currency_code: "USD" } actual_spend { currency_code: "USD" units: 5000 } deviation_amount { currency_code: "USD" units: 5000 } deviation_percentage: "Infinity" } } sub_causes { resource: "services/XXXX-XXXX-XXXX/skus/XXXX-XXXX-XXXX" display_name: "Some display name" cause_type: CAUSE_TYPE_SKU deviation { expected_spend { currency_code: "USD" units: "1" nanos: 5413077 } actual_spend { currency_code: "USD" units: "1", nanos: 122606000 } deviation_amount { currency_code: "USD" nanos: 117192923 } deviation_percentage:11.656196419841217 } } } } |
이상치의 근본 원인에 관한 정보가 포함된 반복되는 필드입니다. |
Pub/Sub에 알림 전송 보장
예산 또는 이상치를 Pub/Sub 주제에 연결하면 다음과 같이 프로그래매틱 알림을 받을 수 있습니다.
예산 알림
- 예산 알림은 Pub/Sub 주제로 예산의 현재 상태와 함께 하루에 여러 번 전송됩니다. 이 주기는 예산 기준이 충족되는 경우에만 전송되는 예산 알림 이메일의 주기와 다릅니다.
- Pub/Sub 알림은 Cloud Billing 계정에 사용량이 없어도 전송됩니다.
- 첫 번째 Pub/Sub 알림을 받기까지 몇 시간이 걸릴 수 있습니다.
- Pub/Sub은 최소 한 번의 전송만 보장합니다. 메시지가 여러 번 수신될 수 있으며 순서대로 도착하지 않을 수 있습니다.
- Pub/Sub 주제 구성 오류로 인해 전송이 실패하면 알림이 표시되지 않습니다.
전송이 실패하는 이유는 다음 중 하나입니다.
- Pub/Sub 주제가 더 이상 존재하지 않습니다.
- Cloud Billing에 더 이상 Pub/Sub 주제 게시 권한이 없습니다.
- 알림 할당량을 초과했습니다.
- 도메인별 리소스 공유를 제한하는 조직 정책이 적용되어 있습니다.
이상치 알림
- 이상치 알림은 기준에 도달한 경우에만 Pub/Sub 주제로 전송됩니다.
- Pub/Sub은 최소 1회 전송만 보장합니다. 메시지가 여러 번 수신될 수 있으며 순서대로 도착하지 않을 수 있습니다.
- Pub/Sub 주제 구성 오류로 인해 전송이 실패하면 알림이 표시되지 않습니다.
전송이 실패하는 이유는 다음 중 하나입니다.
- Pub/Sub 주제가 더 이상 존재하지 않습니다.
- Cloud Billing 계정에 더 이상 Pub/Sub 주제 게시 권한이 없습니다.
- 알림 할당량을 초과했습니다.
- 도메인별 리소스 공유를 제한하는 조직 정책이 적용되어 있습니다.
자세한 내용은 Pub/Sub에서 메시지 게시 및 수신을 참조하세요.
다음 단계
프로그래매틱 알림을 사용하는 방법을 자세히 알아보려면 다음과 같은 프로그래매틱 비용 관리 응답의 예시를 검토하세요.