CREATE RESOURCE MONITOR

CREATE RESOURCE MONITOR

새 리소스 모니터(resource monitor)를 만드는 명령이에요. 리소스 모니터는 웨어하우스의 크레딧 사용량을 추적·제한하고, 임계값에 도달하면 알림·일시 중지 같은 작업을 실행해요. 이 명령은 계정 관리자만 실행할 수 있어요.

출처: 문서

본문

새 리소스 모니터를 만들어요. 이 명령은 계정 관리자만 실행할 수 있어요.

함께 보기: ALTER RESOURCE MONITOR, DROP RESOURCE MONITOR, SHOW RESOURCE MONITORS, ALTER WAREHOUSE, ALTER ACCOUNT

구문 (Syntax)

CREATE [ OR REPLACE ] RESOURCE MONITOR [ IF NOT EXISTS ] <name> WITH
                      [ CREDIT_QUOTA = <number> ]
                      [ FREQUENCY = { MONTHLY | DAILY | WEEKLY | YEARLY | NEVER } ]
                      [ START_TIMESTAMP = { <timestamp> | IMMEDIATELY } ]
                      [ END_TIMESTAMP = <timestamp> ]
                      [ NOTIFY_USERS = ( <user_name> [ , <user_name> , ... ] ) ]
                      [ TRIGGERS triggerDefinition [ triggerDefinition ... ] ]

여기서:

triggerDefinition ::=
    ON <threshold> PERCENT DO { SUSPEND | SUSPEND_IMMEDIATE | NOTIFY }

필수 매개변수 (Required parameters)

name 리소스 모니터의 식별자로, 계정 안에서 고유해야 해요.

식별자는 반드시 알파벳 문자로 시작해야 하며, 전체 식별자 문자열이 큰따옴표로 묶이지 않는 한 공백이나 특수 문자를 포함할 수 없어요 (예: "My object"). 큰따옴표로 묶인 식별자는 대소문자를 구분해요.

자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고해요.

선택 매개변수 (Optional parameters)

CREDIT_QUOTA = num 주파수 간격당 리소스 모니터에 할당된 크레딧 수예요. 현재 주파수 간격에 대해 모니터에 할당된 모든 웨어하우스의 총 사용량이 이 숫자에 도달하면 리소스 모니터가 할당량의 100%에 도달한 것으로 간주돼요.

리소스 모니터에 값을 지정하지 않으면 모니터는 할당량이 없으며 지정된 간격 안에서 100% 사용량에 도달하지 않아요.

  • 기본값: 값 없음 (즉, 크레딧 할당량 없음)

FREQUENCY = MONTHLY | DAILY | WEEKLY | YEARLY | NEVER 크레딧 사용량이 0으로 재설정되는 주파수 간격이에요.

리소스 모니터에 주파수를 설정하면 START_TIMESTAMP도 설정해야 해요.

주파수에 NEVER를 지정하면 웨어하우스의 크레딧 사용량이 재설정되지 않아요.

  • 기본값: 값 없음 (즉, 크레딧 할당량이 매월 1일에 재설정되는 레거시 동작)

START_TIMESTAMP = timestamp | IMMEDIATELY 리소스 모니터가 할당된 웨어하우스의 크레딧 사용량 모니터링을 시작하는 날짜와 시간이에요.

리소스 모니터에 타임스탬프를 설정하면 FREQUENCY도 설정해야 해요.

시작 타임스탬프에 IMMEDIATELY를 지정하면 현재 타임스탬프가 사용돼요.

시간 없이 날짜만 지정하면 현재 시간이 사용돼요.

시간대 없이 시간을 설정하면 기본 시간대로 UTC가 사용돼요.

  • 기본값: 값 없음 (즉, 리소스 모니터가 즉시 웨어하우스 모니터링을 시작하는 레거시 동작)

END_TIMESTAMP = timestamp 리소스 모니터가 할당된 웨어하우스를 일시 중지하는 날짜와 시간이에요.

  • 기본값: 값 없음 (즉, 웨어하우스 일시 중지 날짜 없음)

NOTIFY_USERS = ( user_name [ , user_name , ... ] ) 리소스 모니터에 대한 이메일 알림을 받을 사용자 목록을 지정해요. 사용자 식별자에 공백·특수 문자가 포함되거나 대소문자를 구분한다면 식별자를 큰따옴표로 묶어야 해요 (예: "Mary Smith"). 자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고해요.

사용자 식별자 user_name은 SHOW USERS 출력의 name 컬럼 값이에요.

목록의 각 사용자는 확인된 이메일 주소가 있어야 해요. 웹 인터페이스에서 이메일 주소를 확인하는 방법은 이메일 주소 확인(Verify your email address)을 참고해요.

비관리자 사용자에 대한 이메일 알림은 관리자에 대한 이메일 알림을 대체하지 않아요. 이메일 알림을 활성화한 계정 관리자는 계속 이메일 알림을 받아요.

참고: 비관리자 사용자에게는 다음 제한이 적용돼요.

  • 비관리자 사용자는 웨어하우스 모니터에 대한 알림만 받을 수 있어요.
  • 비관리자 사용자는 이메일로 알림을 받지만 Snowsight에서 알림을 볼 수 없어요.
  • 비관리자 사용자는 리소스 모니터를 만들 수 없어요.
  • 비관리자 사용자는 알림받을 다른 사용자를 할당할 수 없어요.

TRIGGERS ... (aka actions) 리소스 모니터에 대한 하나 이상의 트리거를 지정해요. 각 트리거 정의는 다음으로 구성돼요.

  • ON threshold PERCENT — 리소스 모니터의 크레딧 할당량에 대한 백분율로 지정된 숫자 값이며, 100보다 큰 값이 지원돼요. 현재 주파수 간격에 대해 사용량이 이 임계값에 도달하면 트리거가 발동돼요.
  • DO SUSPEND | SUSPEND_IMMEDIATE | NOTIFY — 임계값에 도달했을 때 트리거가 수행하는 작업을 지정해요.
    • SUSPEND: 실행 중인 쿼리가 완료되도록 허용하면서 할당된 모든 웨어하우스를 일시 중지해요. 리소스 모니터의 크레딧 할당량이 증가할 때까지 웨어하우스가 새 쿼리를 실행할 수 없어요. 또한 이 작업은 자신에 대해 알림을 활성화한 모든 사용자에게 알림을 보내요.
    • SUSPEND_IMMEDIATE: 할당된 모든 웨어하우스를 즉시 일시 중지하고 그 웨어하우스를 사용하는 실행 중인 쿼리나 문을 취소해요. 또한 이 작업은 자신에 대해 알림을 활성화한 모든 사용자에게 알림을 보내요.
    • NOTIFY: 알림을 보내지만(알림이 활성화된 모든 계정 관리자에게) 그 외 다른 작업은 수행하지 않아요.
  • 기본값: 값 없음 (즉, 리소스 모니터가 어떤 작업도 수행하지 않음)

사용 메모 (Usage notes)

트리거는 선택 사항이지만, 리소스 모니터가 작업을 수행하려면 트리거를 최소 하나 추가해야 해요.

각 리소스 모니터는 최대 5개의 NOTIFY 작업 트리거를 지원해요.

리소스 모니터를 만든 뒤에는 웨어하우스나 계정에 할당해야 모니터링 작업을 수행할 수 있어요.

  • 웨어하우스를 리소스 모니터에 할당하려면 ALTER WAREHOUSE를 사용해요(웨어하우스를 만들고 있다면 CREATE WAREHOUSE).
  • 리소스 모니터를 계정 수준에서 할당하려면 ALTER ACCOUNT를 사용해요. NOTIFY_USERS 매개변수는 null이어야 해요.

계정에 만든 모든 리소스 모니터와 그 할당을 보려면 SHOW RESOURCE MONITORS 명령을 사용해요. 이 명령 출력은 계정이나 웨어하우스에 할당되지 않아 크레딧 사용량을 모니터링하지 않는 리소스 모니터의 level 컬럼에 NULL을 표시해요.

리소스 모니터에 frequencystart_timestamp 매개변수가 설정되면 크레딧 사용량 재설정 일은 그 매개변수들에 기반해 계산돼요. 크레딧 사용량이 0으로 재설정되는 시간은 start_timestamp에 지정된 시간과 관계없이 UTC 오전 12:00이에요.

end_timestamp를 지정하면 크레딧 할당량에 도달하지 않았더라도 모니터링이 지정된 날짜·시간에 끝나고 모든 할당된 웨어하우스가 그 날짜·시간에 일시 중지돼요.

이때 리소스 모니터가 할당량의 일정 비율에 도달해 즉시 일시 중지 작업을 트리거했다는 알림이 전송돼요. 할당량의 비율은 현재 간격에서 종료 날짜까지 사용된 크레딧 수를 반영하며, 지정한 임계값이 아닐 수 있어요.

알림 목록에 비관리자 사용자가 있으면 다음 사항이 적용돼요.

  • 알림 목록의 어떤 사용자에게 확인된 이메일이 없으면 SQL 문이 실패해요.
  • 알림 목록의 어떤 사용자가 이메일 주소를 변경하고 새 이메일 주소를 확인하지 않으면 알림이 조용히 실패해요.
  • 알림 목록은 최대 5명의 비관리자 사용자로 제한돼요.

계정 관리자는 SHOW RESOURCE MONITORS 출력의 notify_user 컬럼에서 비관리자 사용자의 알림 목록을 볼 수 있어요.

메타데이터에 관해서는 다음 사항에 주의해요.

⚠️ 주의: 고객은 Snowflake 서비스를 사용할 때 (User 객체를 제외하고) 개인 데이터·민감 데이터·수출 통제 데이터·기타 규제 데이터를 메타데이터로 입력하지 않도록 해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고해요.

OR REPLACEIF NOT EXISTS 절은 서로 배타적이에요. 같은 문에서 둘 다 사용할 수 없어요.

CREATE OR REPLACE <object> 문은 원자적(atomic)으로 동작해요. 즉, 객체를 교체할 때 기존 객체는 삭제되고 새 객체는 단일 트랜잭션 안에서 생성돼요.

⚠️ 중요: 리소스 모니터가 생성한 알림을 받으려면 알림 목록의 계정 관리자와 비관리자 사용자가 환경 설정에서 알림을 명시적으로 활성화해야 해요. 또한 이메일 알림을 받으려면 사용자가 환경 설정에 확인된 이메일이 있어야 해요. 환경 설정은 Snowflake 웹 인터페이스에서만 설정할 수 있어요. 자세한 내용은 알림 수신 활성화(Enabling receipt of notifications)를 참고해요.

예시 (Examples)

3개의 트리거가 있는 limiter라는 리소스 모니터를 만들어요.

CREATE OR REPLACE RESOURCE MONITOR limiter
  WITH CREDIT_QUOTA = 5000
  TRIGGERS ON 75 PERCENT DO NOTIFY
           ON 100 PERCENT DO SUSPEND
           ON 110 PERCENT DO SUSPEND_IMMEDIATE;

크레딧 할당량의 75%에 도달했을 때 세 사용자에게 알림을 보내는 리소스 모니터를 만들어요. 이 예시에서 두 사용자의 user_name은 공백을 포함하므로 큰따옴표로 묶어야 해요.

CREATE OR REPLACE RESOURCE MONITOR limiter
  WITH CREDIT_QUOTA = 5000
       NOTIFY_USERS = (JDOE, "Jane Smith", "John Doe")
  TRIGGERS ON 75 PERCENT DO NOTIFY
           ON 100 PERCENT DO SUSPEND
           ON 110 PERCENT DO SUSPEND_IMMEDIATE;

더 알아보기 (Learn more)