예산(Budgets)으로 크레딧 사용량 모니터링
예산(Budgets)으로 크레딧 사용량 모니터링
예산(budget)은 Snowflake 계정 또는 커스텀 Snowflake 객체 그룹의 컴퓨팅 비용에 대한 월간 지출 한도를 정의해요. 지출 한도를 초과할 것으로 예상되면 알림이 전송돼요. 이 알림을 이메일 주소 목록, 클라우드 서비스가 제공하는 큐(Amazon SNS, Azure Event Grid, Google Cloud PubSub), 또는 서드파티 시스템의 웹훅(예: Slack, Microsoft Teams, PagerDuty)으로 보내도록 예산을 구성할 수 있어요.
출처: Snowflake 문서
본문
계정 예산과 커스텀 예산
*계정 예산(account budget)*은 계정의 모든 크레딧 사용량에 대한 지출을 모니터링해요.
지원되는 객체의 특정 그룹에 대한 지출 한도를 모니터링하는 *커스텀 예산(custom budget)*도 만들 수 있어요.
사용자별 할당량(per-user quotas)을 사용해 계정의 개별 사용자에 대한 사용자별 크레딧 한도를 적용할 수도 있어요.
두 유형의 예산 모두에 대해 지출 한도를 설정하고 알림을 받는 방식을 지정해야 해요.
Snowflake에서 예산을 사용하려면 계정 예산을 활성화해요.
지출 한도와 시간 간격
지출 한도는 Snowflake 크레딧으로 표현되며 알림·통지 목적으로만 사용돼요. 지출 한도는 한 달력 월의 시간 간격으로 설정돼요.
시간 간격은 월 1일 오전 12:00 UTC에 시작해 월 말일 오후 11:59 UTC에 끝나요. 예산이 월 1일 이후에 생성되면 첫 모니터링 간격은 현재 월의 말일까지의 기간이고, 그다음 다음 달 1일에 재설정돼요.
계정 예산을 월 1일 이후에 활성화하면 월 초부터의 데이터가 백필(backfill)되어 그 달의 지출 한도 초과 여부를 판단하는 데 사용돼요.
커스텀 예산을 월 1일 이후에 만들면 태그를 사용해 예산에 추가된 리소스에 대해서만 그 달의 과거 데이터가 백필돼요. 개별적으로 추가된 리소스의 데이터는 백필되지 않아요.
참고(Note): 커스텀 예산을 만들고 태그 대신 리소스를 개별적으로 예산에 추가한다면 다음을 고려해요.
- 그 리소스들의 향후 지출 예측은 예산이 활성화된 이후의 날짜들의 크레딧 사용량에만 기반해요.
- 첫 달에는 예산을 초과할 수 있어요. 리소스 데이터가 백필되지 않으므로 예측이 부정확할 수 있어요. 이후 달에는 지출 이력을 기반으로 크레딧 사용량을 올바르게 예측해요.
사용자 정의 작업 만들기
예산 주기의 주요 시점에 사용자 정의 저장 프로시저를 자동으로 호출하도록 예산을 구성할 수 있어요. 예를 들어 지출이 특정 임계값에 도달하거나, 월간 기간이 시작될 때 예산 주기가 다시 시작될 때 저장 프로시저를 트리거할 수 있어요. 정의하는 각 저장 프로시저는 웨어하우스 일시 중단, 알림 전송, 이벤트를 테이블에 로그하는 것 같은 작업을 수행할 수 있어요.
- 지출 임계값 충족 시 작업을 트리거하려면 예산의 커스텀 작업을 참고해요.
- 예산 주기 재시작 시 작업을 트리거하려면 예산의 주기 시작 작업을 참고해요.
예산 새로고침 간격 조정
예산은 가장 최신 소비 데이터로 새로고침되기 전까지 소비가 지출 한도에 도달했는지 계산할 수 없어요. 소비와 그 소비에 대한 정보를 예산이 받는 시간 사이의 기간을 예산 새로고침 간격(budget refresh interval)이라고 해요.
기본적으로 예산 새로고침 간격은 최대 6.5시간이에요. 예산 새로고침 간격을 1시간으로 줄일 수 있는데, 지출을 더 주의 깊게 봐야 할 때 유용해요. 1시간 새로고침 간격의 예산을 *저지연 예산(low latency budget)*이라고 해요. 소비를 면밀히 모니터링하기 위해 예산 새로고침 간격을 임시로 줄였다가 비용을 아끼려면 기본값으로 되돌릴 수 있어요.
새로고침 간격을 1시간으로 설정하면 예산의 컴퓨팅 비용이 12배로 늘어나요. 예를 들어 새로고침 간격이 6.5시간일 때 예산이 월 1크레딧을 소비한다면, 새로고침 기간이 1시간일 때 월 12크레딧을 소비해요. 예산의 현재 컴퓨팅 비용을 확인하려면 컴퓨팅 비용 알아보기를 참고해요.
- 예산 새로고침 간격을 조정하려면 SET_REFRESH_TIER 메서드를 호출해요. Snowsight에서도 Enable low latency budget 필드를 선택/해제해 커스텀 예산의 간격을 조정할 수 있어요.
- 현재 새로고침 간격을 검색하려면 GET_REFRESH_TIER 메서드를 호출해요.
지원되는 서비스
예산은 다음 서비스의 크레딧 사용량을 모니터링해요. 커스텀 예산이 해당 서비스를 지원하는지, 그리고 서비스와 연결된 객체가 무엇인지 확인하려면 표를 사용해요.
참고(Note): 서버리스 기능에 대한 계정 예산 지원은 Account Usage METERING_HISTORY 뷰의 서비스 유형 가용성에 따라 달라져요.
| 서비스 | 계정 예산 | 커스텀 예산 | 객체 |
|---|---|---|---|
| AI_INFERENCE | ✔ | ✔ | Cortex AI Gateway(Preview) |
| AI_SERVICES | ✔ | ✔ | Snowflake CoWork, Cortex Agent |
| AUTO_CLUSTERING | ✔ | ✔ | Table |
| COPY_FILES | ✔ | ✔ | Database |
| DATA_QUALITY_MONITORING | ✔ | ✔ | Table |
| MATERIALIZED_VIEW | ✔ | ✔ | Materialized view |
| PIPE | ✔ | ✔ | Pipe |
| QUERY_ACCELERATION | ✔ | ✔ | Warehouse |
| REPLICATION | ✔ | ✔ | Database, Replication group |
| SEARCH_OPTIMIZATION | ✔ | ✔ | Table |
| SERVERLESS_ALERTS | ✔ | ✔ | Alert |
| SERVERLESS_TASK | ✔ | ✔ | Task |
| SNOWPARK_CONTAINER_SERVICES | ✔ | ✔ | Compute pool |
| SNOWPIPE_STREAMING | ✔ | ✔ | Table |
| WAREHOUSE_METERING | ✔ | ✔ | Warehouse |
예산 알림
예산은 시계열 예측에 기반해 현재 지출이 지출 한도를 초과할 궤적일 때 일일 경고 알림을 보내요.
자동 경고 알림을 받으려면 계정 예산 활성화 또는 커스텀 예산 생성의 일부로 다음을 수행해야 해요.
- 예산의 지출 한도를 설정해요.
- 예산에 대한 알림을 받는 방식을 지정해요.
자세한 내용은 예산 알림을 참고해요.
예산 역할과 권한
계정의 커스텀 역할이 예산으로 작업할 수 있게 하려면 다음 역할과 권한을 부여할 수 있어요.
참고(Note): Snowflake는 예산을 포함한 모든 비용 관련 기능에 대한 접근을 제어하는 애플리케이션 역할과 데이터베이스 역할을 제공해요. 예산별 역할과 권한을 다루는 대신 이런 역할을 커스텀 역할에 부여하는 방법은 비용 관리 접근 제어를 참고해요.
계정 예산 관리용 애플리케이션 역할
계정 예산을 모니터링하거나 관리하려면 계정의 커스텀 역할에 다음 애플리케이션 역할을 부여할 수 있어요.
| 애플리케이션 역할 | 설명 |
|---|---|
| BUDGET_VIEWER | 역할이 예산 사용량 데이터를 보고 예산의 리소스를 나열할 수 있게 해요. |
| BUDGET_ADMIN | 역할이 계정 예산을 활성화·비활성화하고 지출 한도, 사용할 알림 통합, 알림을 받을 이메일 주소 목록, 알림 음소거 설정을 포함한 예산 속성을 수정할 수 있게 해요. |
애플리케이션 역할에 더해, 커스텀 역할이 계정 예산을 모니터링하거나 관리할 수 있게 하려면 다른 필수 권한도 부여해야 해요. 자세한 내용은 필수 역할과 권한을 참고해요.
커스텀 예산 관리용 인스턴스 역할
각 커스텀 예산에는 다른 역할에 부여해 예산을 보거나 수정할 수 있게 하는 인스턴스 역할이 있어요.
| 인스턴스 역할 | 설명 |
|---|---|
| VIEWER | 역할이 예산 사용량 데이터를 볼 수 있게 해요. |
| ADMIN | 역할이 지출 한도, 사용할 알림 통합, 알림을 받을 이메일 주소 목록, 알림 음소거 설정, 그룹의 객체를 포함한 예산 속성을 수정할 수 있게 해요. |
인스턴스 역할에 더해, 커스텀 역할이 커스텀 예산을 생성·모니터링·수정할 수 있게 하려면 다른 필수 권한도 부여해야 해요. 자세한 내용은 필수 역할과 권한을 참고해요.
필수 역할과 권한
애플리케이션 또는 인스턴스 역할에 더해, 커스텀 역할이 예산을 모니터링하거나 관리하려면 다음 권한을 부여해야 해요.
| 권한 또는 역할 | 예산 유형 | 생성 | 관리 | 모니터링 | 비고 |
|---|---|---|---|---|---|
| USAGE_VIEWER | 둘 다 | ✔ | ✔ | ✔ | Snowflake 데이터베이스 역할 USAGE_VIEWER를 커스텀 역할에 부여해요. |
| USAGE | 커스텀 | ✔ | ✔ | ✔ | 커스텀 예산을 포함하는 데이터베이스 또는 스키마에 USAGE 권한을 부여해요. |
| SNOWFLAKE.BUDGET_CREATOR | 커스텀 | ✔ | 커스텀 역할이 커스텀 예산을 만들 수 있게 하려면 이 데이터베이스 역할을 부여해요. | ||
| CREATE SNOWFLAKE.CORE.BUDGET | 커스텀 | ✔ | 커스텀 예산을 포함할 스키마에 이 권한을 부여해요. | ||
| APPLYBUDGET | 커스텀 | ✔ | 커스텀 예산에 추가하거나 제거할 각 객체에 부여해야 해요. | ||
| USAGE | 커스텀 | ✔ | 커스텀 예산에 스키마 객체를 추가·제거하려면 객체를 포함하는 데이터베이스와 스키마에 이 권한을 부여해야 해요. |
자세한 내용과 예시는 다음 섹션을 참고해요.
- 계정 예산 관리를 위한 커스텀 역할 생성
- 계정 예산 모니터링을 위한 커스텀 역할 생성
- 커스텀 예산 모니터링을 위한 커스텀 역할 생성
- 커스텀 예산 관리를 위한 커스텀 역할 생성
- 예산 생성을 위한 커스텀 역할 생성
제한사항
다음은 Budgets의 제한사항이에요.
- BUDGET 클래스의 인스턴스는 대상 계정으로 복제할 수 없어요.
- 계정은 최대 100개의 커스텀 예산을 포함할 수 있어요.
- 현재 Budgets는 하이브리드 테이블(Hybrid tables)의 비용 모니터링을 지원하지 않아요.
- 다음 계정 수준 파라미터는 설정 해제하거나 기본값으로 설정해야 해요.
- AUTOCOMMIT은 설정 해제하거나 TRUE로 설정해야 해요. 이 파라미터가 FALSE로 설정되면 예산 활성화가 실패하거나 사용량이 올바르게 추적되지 않을 수 있어요.
- TIMESTAMP_INPUT_FORMAT과 DATE_INPUT_FORMAT은 설정 해제하거나 AUTO로 설정해야 해요. 이 파라미터가 AUTO로 설정되지 않으면 사용량이 올바르게 추적되지 않을 수 있어요.
예산을 활성화하기 전에 SHOW PARAMETERS 명령을 실행해 이 파라미터의 값을 확인해요.
SHOW PARAMETERS LIKE 'AUTOCOMMIT' IN ACCOUNT;
SHOW PARAMETERS LIKE 'TIMESTAMP_INPUT_FORMAT' IN ACCOUNT;
SHOW PARAMETERS LIKE 'DATE_INPUT_FORMAT' IN ACCOUNT;
참고(Note): 이 파라미터들은 계정 수준에서 설정해야 해요. 더 낮은 수준(예: 세션 수준)에서 파라미터를 설정하는 것은 예산 활성화나 사용량 추적에 영향을 주지 않아요.
더 알아보기 (Learn more)
- 계정 예산 사용하기 — 계정 예산 활성화·관리
- 커스텀 예산 — 사용자 지정 예산 만들기
- 예산 알림 — 알림 설정
- 예산 비용 — 예산 사용 비용