Snowsight의 알림(Alerts)
Snowsight의 알림(Alerts)
Snowsight에서 Snowflake 기능에 대한 알림을 설정할 수 있어요. 이 사용자 인터페이스는 Snowflake 계정을 모니터링하는 방식을 간소화해요.
SQL 문을 실행해 알림을 만들고 관리하는 대신 Snowsight의 위저드를 사용해 알림을 생성·관리·모니터링할 수 있어요.
출처: Snowflake 문서
본문
Snowsight의 알림 관리 기능은 다음 이점을 제공해요.
- 알림의 중앙 집중식 가시성: Snowflake Alerts Center에서 모든 알림, 이 알림의 이력, 이 알림의 실행 상태를 볼 수 있어요.
- 알림 생성을 위한 템플릿: Snowflake Alerts UI에서 제공하는 알림 템플릿을 사용해 다음 기능에 대한 알림을 빠르게 만들 수 있어요. 참고: 템플릿에서 알림을 생성한 후에는 수명 주기 관리 측면에서 다른 알림과 동등하며, 특별한 속성을 포함하지 않아요.
- 태스크(Tasks)
- Openflow
- 데이터 품질(Data quality)
- 동적 테이블(Dynamic tables)
- Iceberg 테이블(카탈로그 연결 데이터베이스)
- Snowflake 기능의 사전 모니터링: 실패, 지연 시간, 데이터 이상에 대한 알림을 쉽게 구성해 파이프라인과 예산이 정상 상태를 유지하도록 할 수 있어요.
전제 조건
Snowsight를 사용해 알림을 만들고, 모니터링하고, 관리하려면 다음 전제 조건을 충족해야 해요.
- 태스크 알림 전제 조건
- Openflow 알림 전제 조건
- 데이터 품질 알림 전제 조건
- 동적 테이블 알림 전제 조건
- Iceberg 카탈로그 연결 데이터베이스 알림 전제 조건
- 알림용 알림 설정
- Snowsight에서 알림에 접근하기 위한 역할 생성
태스크 알림 전제 조건
태스크에 대한 알림을 만들고, 관리하고, 모니터링하려면 다음을 수행해야 해요.
- 태스크 이벤트에 대해 캡처하려는 로그 메시지의 심각도 수준을 설정해요.
- 태스크 알림은 이벤트 테이블에 로그된 오류 메시지를 모니터링해요. 모니터링하려는 태스크에 대해 LOG_LEVEL 파라미터를 최소
ERROR로 설정해야 해요. 이 파라미터는 다음 유형의 객체 중 하나에 설정할 수 있어요. - 계정의 모든 객체(태스크 포함)에 심각도 수준을 ERROR로 설정하려면 ALTER ACCOUNT SET LOG_LEVEL을 실행해요.
- 태스크 알림은 이벤트 테이블에 로그된 오류 메시지를 모니터링해요. 모니터링하려는 태스크에 대해 LOG_LEVEL 파라미터를 최소
ALTER ACCOUNT SET LOG_LEVEL = ERROR;
참고(Note): 이 설정은 UDF, 저장 프로시저, 동적 테이블이 로그하는 메시지에도 영향을 줘요.
- 태스크를 포함하는 데이터베이스의 모든 객체에 심각도 수준을 ERROR로 설정하려면 ALTER DATABASE … SET LOG_LEVEL을 실행해요.
ALTER DATABASE my_task_db SET LOG_LEVEL = ERROR;
참고(Note): 이 설정은 해당 데이터베이스의 UDF, 저장 프로시저, 동적 테이블이 로그하는 메시지에도 영향을 줘요.
- 특정 태스크에 심각도 수준을 ERROR로 설정하려면 ALTER TASK … SET LOG_LEVEL을 실행해요.
ALTER TASK my_task SET LOG_LEVEL = ERROR;
- Snowsight에 접근할 때 사용할 역할에 부여된 권한을 확인해요.
- 그 역할에는 ACCOUNT_USAGE 스키마의 TASK_HISTORY 뷰와 QUERY_HISTORY 뷰를 쿼리할 권한이 부여되어야 해요. 자세한 내용은 다른 역할이 SNOWFLAKE 데이터베이스의 스키마를 사용할 수 있게 하기를 참고해요.
Openflow 알림 전제 조건
Openflow 알림은 이벤트 테이블에 기록된 이벤트를 모니터링해요. Openflow가 이벤트를 로그하도록 구성되어 있는지 확인해요. 자세한 내용은 다음 섹션을 참고해요.
- Openflow 전용 이벤트 테이블 구성[선택](Openflow BYOC 사용 시)
- Openflow 전용 이벤트 테이블 구성[선택](Openflow Snowflake 사용 시)
데이터 품질 알림 전제 조건
DMF(Data Metric Functions)가 모니터링하려는 테이블과 뷰에 등록되고 실행되고 있는지 확인해요.
자세한 내용은 SQL로 데이터 메트릭 함수 설정을 참고해요.
동적 테이블 알림 전제 조건
동적 테이블 알림은 이벤트 테이블에 기록된 새로고침 상태 이벤트를 모니터링해요. 모니터링하려는 동적 테이블에 대해 새로고침 실패와 업스트림 실패에 필요한 심각도 수준을 포함해 이벤트 로깅이 구성되어 있는지 확인해요.
자세한 내용은 이벤트 테이블로 알림 설정을 참고해요.
Iceberg 카탈로그 연결 데이터베이스 알림 전제 조건
Iceberg 알림은 카탈로그 연결 데이터베이스의 이벤트를 모니터링해요. 카탈로그 통합이 구성된 카탈로그 연결 데이터베이스가 있는지 확인해요. 카탈로그 연결 데이터베이스의 일부가 아닌 일반 Iceberg 테이블은 이 알림이 모니터링하는 이벤트를 내보내지 않아요.
자세한 내용은 Apache Iceberg™ 테이블에 카탈로그 연결 데이터베이스 사용을 참고해요.
알림용 알림 설정
Snowsight에서 알림을 만들 때 이메일이나 웹훅을 통해 알림을 보내도록 알림을 구성할 수 있어요.
알림을 보내려면 알림 통합(notification integration)을 사용해야 해요. 기존 알림 통합을 사용하거나 새로 만들 수 있어요.
- 기존 알림 통합을 찾으려면 SHOW NOTIFICATION INTEGRATIONS을 실행하고 파이프 연산자로 결과를 필터링해요.
-- Find email integrations
SHOW NOTIFICATION INTEGRATIONS ->> SELECT * FROM $1 WHERE "type" = 'EMAIL';
-- Find webhook integrations
SHOW NOTIFICATION INTEGRATIONS ->> SELECT * FROM $1 WHERE "type" = 'WEBHOOK';
- 새 이메일 알림 통합을 만들려면 이메일 알림 보내기를 참고해요.
- 새 웹훅 알림 통합을 만들려면 CREATE NOTIFICATION INTEGRATION(웹훅)을 참고해요.
Snowsight에서 알림에 접근하기 위한 역할 생성
계정 관리자 외의 사용자가 Snowsight에서 알림에 접근할 수 있게 하려면 알림을 만들고, 관리하고, 모니터링하는 데 필요한 모든 권한이 부여된 커스텀 역할을 만들 수 있어요. 이 역할을 Snowsight에서 알림을 사용해야 하는 사용자와 다른 역할에 부여할 수 있어요.
예를 들어 이 목적으로 my_alert_center_role이라는 역할을 만들고 싶다고 가정해 봐요. 이 역할을 만들려면 다음 단계를 완료해요.
- 커스텀 역할을 만들 수 있는 역할(예: ACCOUNTADMIN 역할)로 전환해요.
USE ROLE ACCOUNTADMIN;
- 커스텀 역할을 만들어요.
CREATE OR REPLACE ROLE my_alert_center_role;
- Snowsight에서 알림에 접근할 때 사용할 웨어하우스에 대한 USAGE 권한을 부여해요. 일부 기능은 활성 웨어하우스를 필요로 하므로 이 권한을 부여해야 해요.
GRANT USAGE ON WAREHOUSE my_warehouse TO ROLE my_alert_center_role;
- 역할에 알림 실행 권한을 부여해요.
- 특정 웨어하우스를 사용해 실행하는 알림을 만들 계획이라면 그 역할에 다음 권한을 부여해요.
- 계정에 대한 EXECUTE ALERT 권한
- 알림에 사용하려는 웨어하우스에 대한 USAGE 권한
- 특정 웨어하우스를 사용해 실행하는 알림을 만들 계획이라면 그 역할에 다음 권한을 부여해요.
예를 들어:
GRANT EXECUTE ALERT ON ACCOUNT TO ROLE my_alert_center_role;
GRANT USAGE ON WAREHOUSE my_warehouse TO ROLE my_alert_center_role;
- 서버리스 알림을 만들 계획이라면 계정에 EXECUTE MANAGED ALERT 권한을 부여해요.
GRANT EXECUTE MANAGED ALERT ON ACCOUNT TO ROLE my_alert_center_role;
- 데이터베이스와 스키마에서 알림을 만드는 데 필요한 권한을 부여해요.
- 예를 들어
my_alerts_database라는 데이터베이스와my_alert_schema라는 스키마에 알림을 만들 계획이라면 그 데이터베이스와 스키마에 USAGE 권한을 부여하고 스키마에 CREATE ALERT 권한을 부여해요.
- 예를 들어
GRANT USAGE ON DATABASE my_alerts_database TO ROLE my_alert_center_role;
GRANT USAGE ON SCHEMA my_alerts_schema TO ROLE my_alert_center_role;
GRANT CREATE ALERT ON SCHEMA my_alerts_schema TO ROLE my_alert_center_role;
- 앞서 설정한 이메일 알림 통합에 대한 USAGE 권한을 부여해요.
GRANT USAGE ON INTEGRATION my_email_int TO ROLE my_alert_center_role;
- 기본 이벤트 테이블에 접근을 허용하는 애플리케이션 역할을 부여해요.
GRANT APPLICATION ROLE SNOWFLAKE.EVENTS_VIEWER TO ROLE my_alert_center_role;
- 데이터 품질 모니터링용 알림을 설정할 계획이라면 데이터 품질 모니터링과 데이터 메트릭 함수 실행에 필요한 애플리케이션 역할과 권한을 부여해요.
GRANT APPLICATION ROLE SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER TO ROLE my_alert_center_role;
GRANT EXECUTE DATA METRIC FUNCTION ON ACCOUNT TO ROLE my_alert_center_role;
- 커스텀 역할을 사용자나 다른 역할에 부여해요.
GRANT ROLE my_alert_center_role TO USER my_user;
GRANT ROLE my_alert_center_role TO ROLE my_other_role;
Snowsight에서 알림 접근
Snowsight에서 알림에 접근하려면:
- Snowsight에 로그인해요.
- 내비게이션 메뉴에서 Monitoring » Alerts을 선택해요.
기존 알림 목록을 보고 알림 이름과 상태로 알림을 필터링할 수 있어요. 알림의 최근 실행 상태도 볼 수 있어요.
새 알림 생성
제공된 템플릿 중 하나를 사용해 새 알림을 만들 수 있어요.
참고(Note): CREATE ALERT … FROM TEMPLATE을 사용해 SQL로 템플릿에서 알림을 만들 수도 있어요. SYSTEM$LIST_ALERT_TEMPLATES 및 SYSTEM$GET_ALERT_TEMPLATE을 사용해 사용 가능한 템플릿과 그 변수를 발견할 수 있어요.
Snowsight에서 알림을 만들려면 다음 단계를 완료해요.
- Snowsight에 로그인해요.
- 내비게이션 메뉴에서 Monitoring » Alerts을 선택하고 + Alert을 선택해요.
- Name 필드에 알림의 이름을 입력해요.
- Description 필드에 알림의 목적을 설명해요.
- Location 메뉴에서 알림을 만들 데이터베이스와 스키마를 선택해요.
- Compute Type 메뉴에서 다음 옵션 중 하나를 선택해요.
- 서버리스 알림을 만들려면 Serverless를 선택해요.
- 알림에 사용하려는 웨어하우스를 지정하려면 Warehouse를 선택해요. 이 옵션을 선택했다면 Warehouse 메뉴에서 웨어하우스를 선택해요.
- 알림이 생성된 후 활성화하려면 Activate alert upon creation을 선택해요. 이 옵션을 선택하지 않으면 새로 생성된 알림은 일시 중단돼요. 알림을 활성 암호로 만들려면 알림을 재개해야 해요.
- Next를 선택해요.
- Select warehouse 메뉴에서 알림에 사용하려는 웨어하우스를 선택해요.
- Alert template 메뉴에서 Snowflake 기능의 템플릿 그룹 중 하나를 선택하고, 알림을 만드는 데 사용할 템플릿을 선택해요.
다음 표는 선택할 수 있는 템플릿 그룹과 템플릿을 나열해요.
| 템플릿 그룹 | 템플릿 | 설명 |
|---|---|---|
| DATA_QUALITY | 이상 탐지 알림 | 데이터 품질 메트릭에서 감지된 이상을 모니터링하며, 특이한 패턴이나 이상치가 식별되면 알림을 트리거해요. |
| 기대치 위반 알림 | 데이터 품질 기대치 위반을 모니터링하며, 정의된 기대치가 위반되면 알림을 트리거해요. | |
| DYNAMIC_TABLES | 새로고침 실패 알림 | 동적 테이블 새로고침 실패를 모니터링하며, 동적 테이블 자체의 새로고침이 실패하면 알림을 트리거해요. |
| 업스트림 실패 알림 | 동적 테이블 업스트림 실패를 모니터링하며, 업스트림 종속성 때문에 새로고침이 실패하면 알림을 트리거해요. | |
| ICEBERG | 새로고침 상태 알림 | 카탈로그 연결 데이터베이스의 테이블에 대한 자동 새로고침 상태 변경을 모니터링하며, 새로고침이 정상 상태를 벗어나면 알림을 트리거해요. |
| 발견 실패 알림 | 카탈로그 연결 데이터베이스에 대한 발견·동기화 실패를 모니터링하며, 카탈로그 객체가 동기화에 실패하면 알림을 트리거해요. | |
| OPENFLOW | 커넥터 역압(객체 수) | 커넥터 큐 수를 모니터링해 역압 임계값을 초과하는지 판단하며, 다운스트림 시스템이 데이터 흐름 속도를 따라잡지 못함을 나타낼 수 있어요. |
| 커넥터 역압(바이트) | 커넥터 대기 바이트를 모니터링해 역압 임계값을 초과하는지 판단하며, 데이터 파이프라인에 메모리 압박이 있음을 나타낼 수 있어요. | |
| 높은 대기 바이트 알림 | 커넥터 큐 바이트를 모니터링해 역압 임계값(>80%)에 근접하는지 판단하며, 역압 발생 전 초기 경고를 제공할 수 있어요. | |
| 높은 대기 수 알림 | 커넥터 큐 객체 수를 모니터링해 역압 임계값(>80%)에 근접하는지 판단하며, 역압 발생 전 초기 경고를 제공할 수 있어요. | |
| 무데이터 알림 | 활성 처리 시간이 있지만 데이터를 받거나 보내지 않는 커넥터를 모니터링하며, 잠재적 데이터 흐름 문제를 나타낼 수 있어요. | |
| 런타임 높은 오류율 알림 | Openflow 런타임 프로세서가 ERROR 수준 로그를 많이 생성하는지 모니터링하며, 처리 실패를 나타낼 수 있어요. | |
| 테이블 복제 실패 알림 | 테이블 복제가 FAILED 상태로 전환되는 것을 모니터링하며, 중대한 데이터 동기화 문제를 나타낼 수 있어요. | |
| TASKS | 오류율 알림 | 누적 태스크 오류율이 지정된 임계값을 초과하면 알림을 트리거해요. |
- 알림의 구성 필드를 작성해요. 필드는 선택한 템플릿에 따라 달라져요.
- 모니터링할 범위를 선택해요. 범위는 알림이 모니터링하는 객체를 결정해요. 예를 들어 계정의 모든 객체를 모니터링하려면 Scope 메뉴에서 Account를 선택해요.
- Schedule 메뉴에서 알림을 실행하는 데 사용할 일정 유형을 선택해요.
- 새 객체가 추가될 때만 알림을 실행하려면(예: 모니터링하는 테이블에 새 행이 삽입될 때) When new events are detected를 선택해요.
- 정기 일정으로 알림을 실행하고 실행 빈도를 선택하려면(예: 10분마다) On a schedule을 선택해요.
- Notification integration 메뉴에서 앞서 만든 알림 통합을 선택해요. 이메일 통합 또는 웹훅 통합을 사용할 수 있어요.
- 이메일 통합을 선택했다면 Email recipients 메뉴에서 알림이 트리거될 때 알릴 사람들의 이메일 주소를 선택해요.
- Create을 선택해요.
참고(Note):
- 템플릿 위저드는 알림 생성을 위한 SQL 문을 생성해요. 알림을 더 커스터마이즈해야 한다면 그 문을 직접 수정할 수 있어요.
- 알림은 현재 역할이 알림에 MONITOR 또는 OWNERSHIP 권한이 있는 경우에만 표시돼요.
알림 세부정보 보기
특정 알림의 세부정보를 보려면 알림 목록에서 알림의 행을 선택해요. Snowsight가 알림 세부정보 페이지를 열고 다음 정보를 보여줘요.
- 최근 실행 이력(Recent execution history): 알림의 최근 실행 테이블로서 완료 시간, 상태(예: Triggered 또는 Condition not met), 실행된 조건·동작 SQL, 해당 쿼리 ID를 포함해요. 시간 범위와 상태로 필터링하고 추가 실행을 로드할 수 있어요.
- 설명(Description): 알림에 설정된 코멘트 또는 설명
- 세부정보(Details): 알림 이름, 상태(Started 또는 Suspended), 소유 역할, 데이터베이스, 스키마, 웨어하우스, 일정을 포함한 알림 메타데이터
- 조건(Condition): 알림의 조건을 나타내는 SQL 문. 알림의
IF(EXISTS(...))블록이에요. - 동작(Action): 조건이 충족될 때 알림이 실행하는 SQL 문. 알림의
THEN블록이에요.
알림 실행 모니터링
알림 세부정보 페이지의 최근 실행 이력 테이블에서 Status 열은 각 실행의 상태를 보여줘요. 가능한 상태는 다음과 같아요.
- Triggered: 조건이 TRUE로 평가되고 동작이 실행됐어요.
- Condition not met: 조건이 FALSE로 평가되고 어떤 동작도 취해지지 않았어요.
가능한 상태의 전체 목록과 그 의미는 ALERT_HISTORY의 STATE 열을 참고해요.
실패한 실행을 조사하려면 Condition query ID 및 Action query ID 열을 확인해요. 이 쿼리 ID를 사용해 ALERT_HISTORY에서 실행의 SQL_ERROR_CODE와 SQL_ERROR_MESSAGE를 조회할 수 있으며, 이는 특정 오류 코드와 무엇이 잘못되었는지에 대한 설명을 제공해요.
알림 편집
알림 세부정보 페이지에서 오른쪽 위의 을 선택하고 Edit를 선택해 알림을 편집해요. Snowsight가 General과 Config 두 탭이 있는 편집 대화상자를 열어요.
일반 알림 속성 편집
General 탭에서 알림의 다음 속성을 수정할 수 있어요.
- Name: 알림의 이름. 이 필드는 기존 알림에 대해 읽기 전용이에요.
- Comment: 알림이 모니터링하는 내용에 대한 설명. 이는 ALTER ALERT의 COMMENT 속성에 매핑돼요.
- Compute Type: 알림이 서버리스 컴퓨팅 모델을 사용하는지 지정된 웨어하우스를 사용하는지. Warehouse를 선택하면 Warehouse 메뉴에서 웨어하우스를 선택해요.
- Schedule: 알림이 실행되는 빈도. On a schedule을 선택하고 빈도를 설정해요(예: 30분마다).
Save를 선택해 변경 사항을 적용해요.
알림 구성 편집
Config 탭에서 알림의 구성(configuration)(CONFIG)을 편집할 수 있어요. 알림이 템플릿에서 생성되면 템플릿은 알림의 조정 가능한 파라미터(예: 임계값, 알림 대상, 모니터링 범위)를 포함하는 구성을 설정해요. 알림의 조건·동작 SQL은 런타임에 SYSTEM$GET_ALERT_CONFIG을 통해 이 값을 읽어요.
구성을 편집하면 기본 SQL 문을 수정하지 않고 알림의 비즈니스 로직을 변경할 수 있어요.
구성의 구조에 따라 Snowsight는 두 가지 편집 경험 중 하나를 표시해요.
템플릿 구성 편집
알림이 템플릿에서 생성되었고 구성이 템플릿이 기대하는 구조를 유지한다면 Snowsight는 풍부한 편집 양식을 표시해요. 구성의 각 필드는 사람이 읽을 수 있는 라벨과 예상 값의 설명과 함께 표시돼요. 구체적인 필드는 템플릿에 따라 다르지만 일반적인 예시는 다음과 같아요.
- 알림을 트리거하는 threshold 값(예: 0.0~1.0 사이의 오류율)
- EMAIL 또는 WEBHOOK 같은 notification method와 관련 통합·수신자 필드
- 알림이 모니터링하는 객체를 통제하는 scope(예: ACCOUNT, DATABASE, SCHEMA)와 범위를 더 좁히는 선택적 필터
이 필드를 변경하고 Save를 선택하면 Snowsight가 알림의 CONFIG JSON을 업데이트해요. 알림의 조건·동작 SQL은 다음에 알림이 실행될 때 새 값을 사용해요.
플랫 키-값 구성 편집
구성이 템플릿이 기대하는 구조와 일치하지 않으면(예: SQL로 CONFIG를 수정해 그 스키마를 변경한 경우) Snowsight는 플랫 키-값 편집기로 폴백해요.
이 뷰에서 구성은 키-값 쌍 목록으로 표시돼요. 다음 두 모드 사이를 전환할 수 있어요.
- 키-값(Key-value): 각 키-값 쌍을 개별적으로 편집
- JSON: 원시 JSON 구성을 직접 보고 편집
주의(Caution): 구성 값은 알림의 조건·동작 로직에 영향을 주지만, Snowflake와 깊은 계약을 가진 관리 파라미터는 아니에요. CONFIG는 알림의 SQL이 런타임에 읽는 JSON 문자열이며, 템플릿의 SQL이 이 값을 해석할 책임이 있어요.
구성 값을 변경하면 알림 SQL의 런타임 동작이 변경돼요. 잘못된 값(예: 임계값에 대한 비숫자 값 또는 잘못된 이메일 주소)은 알림이 오작동하거나 예기치 않은 결과를 낼 수 있어요. 구성 값을 수정하기 전에 템플릿의 문서나 알림의 SQL을 검토해요.
CONFIG 파라미터가 SQL 수준에서 어떻게 작동하는지에 대한 자세한 내용은 알림에 구성 전달을 참고해요.
더 알아보기 (Learn more)
- 알림(Alerts) — 알림 개요와 SQL
- 이메일 알림 — 이메일 알림 통합
- CREATE ALERT — 알림 생성 명령