작업 실행에 대한 이벤트 모니터링하기¶
작업 실행 상태에 대한 정보를 제공하는 이벤트를 기록하도록 Snowflake를 구성할 수 있습니다. 이벤트는 작업과 연결된 활성 이벤트 테이블 에 기록됩니다.
예를 들어, 이벤트 테이블을 데이터베이스에 연결 했다고 가정해 보겠습니다. 해당 데이터베이스의 작업이 실행되면 Snowflake는 해당 이벤트 테이블에 이벤트를 기록합니다.
새로운 데이터에 경고 를 설정하여 이벤트 테이블을 모니터링할 수 있습니다. 작업 실행에 실패하면 알림을 보내도록 경고를 구성할 수 있습니다.
다음 섹션에서는 이벤트를 캡처하기 위해 이벤트 로그를 설정하는 방법, 경고를 설정하는 방법, 이벤트 테이블에 기록된 이벤트를 해석하는 방법에 대해 설명합니다.
참고
작업에 대한 이벤트를 로그 기록하면 비용이 발생합니다. 원격 분석 데이터 수집 비용 섹션을 참조하십시오.
제한 사항¶
작업 이벤트는 Snowflake Native Apps에서 지원되지 않습니다.
캡처할 이벤트의 심각도 수준을 설정합니다¶
이벤트 테이블에 기록할 작업 이벤트를 설정하려면 이벤트 테이블에 캡처할 이벤트의 심각도 수준 을 설정하십시오.
ERROR
: 작업 실행 실패에 대한 이벤트.INFO
: 작업 실행 성공 및 실패에 대한 이벤트.
레벨을 설정하려면 계정 또는 오브젝트에 대해 LOG_LEVEL 매개 변수를 설정합니다. 다음에 대한 수준을 설정할 수 있습니다.
계정의 모든 오브젝트,
데이터베이스 또는 스키마의 모든 오브젝트.
특정 작업.
참고
계정 또는 오브젝트에 심각도 수준이 설정되어 있지 않으면 이벤트가 캡처되지 않습니다.
예:
계정의 모든 오브젝트에 대한 ERROR 레벨 이벤트 및 메시지를 캡처하려면 ALTER ACCOUNT SET LOG_LEVEL 를 실행합니다.
ALTER ACCOUNT SET LOG_LEVEL = ERROR;
이 수준은 UDFs, 저장 프로시저, 동적 테이블 및 작업을 포함하여 계정의 모든 유형의 오브젝트에 영향을 줍니다.
my_db
데이터베이스의 모든 오브젝트에 대한 INFO 레벨 이벤트 및 메시지를 캡처하려면 ALTER DATABASE … SET LOG_LEVEL 을 실행합니다.ALTER DATABASE my_db SET LOG_LEVEL = INFO;
계정에서 수준을 설정하는 경우와 마찬가지로 데이터베이스에서 수준을 설정하면 UDFs, 저장 프로시저, 동적 테이블 및 작업을 포함한 데이터베이스의 모든 유형의 오브젝트에 영향을 줍니다.
my_task
작업에 대한 ERROR 수준 이벤트를 캡처하려면 ALTER TASK … SET LOG_LEVEL 을 실행합니다.ALTER TASK my_task SET LOG_LEVEL = ERROR;
작업 완료 이벤트에 대한 새로운 데이터에 대한 경고 설정하기¶
로깅 이벤트에 대한 심각도 수준을 설정한 후에는 새로운 데이터에 대한 경고를 설정하여 작업 완료 실패를 나타내는 새 이벤트가 있는지 이벤트 테이블을 모니터링할 수 있습니다. 이벤트 테이블에 새 행이 삽입되고 경고에 지정된 조건을 충족하면 새로운 데이터에 대한 경고가 트리거됩니다.
참고
새 데이터에 대한 경고를 만들려면 이벤트 테이블을 쿼리하는 데 필요한 권한이 부여된 역할을 사용해야 합니다.
경고 조건이 기본 이벤트 테이블(SNOWFLAKE.TELEMETRY.EVENTS) 또는 미리 정의된 뷰(SNOWFLAKE.TELEMETRY.EVENTS_VIEW 뷰)를 쿼리하는 경우 기본 이벤트 테이블 및 EVENTS_VIEW에 액세스할 수 있는 역할 섹션을 참조하십시오.
EVENTS_VIEW 뷰에 대한 액세스를 관리하려면 EVENTS_VIEW 뷰에 대한 액세스 관리하기 섹션을 참조하십시오.
경고 조건이 사용자 지정 이벤트 테이블을 쿼리하는 경우 이벤트 테이블에 대한 액세스 제어 권한 섹션을 참조하십시오.
사용자 지정 이벤트 테이블에 대한 액세스 권한을 관리하려면 이벤트 테이블 데이터에 대한 액세스 관리하기 섹션을 참조하십시오.
경고 조건에서 작업 완료 이벤트를 쿼리하려면 resource_attributes:"snow.executable.type" = 'TASK'
에서 행을 선택합니다. 이벤트 목록의 범위를 좁히려면 다음 열을 필터링하면 됩니다.
결과를 특정 데이터베이스의 작업으로 제한하려면
resource_attributes:"snow.database.name"
을 사용합니다.작업 실행에 실패한 이벤트를 반환하려면
value:state = 'FAILED'
를 사용합니다.
작업 실행 이벤트에 대해 기록된 값에 대한 자세한 내용은 작업 이벤트에 대해 기록된 정보 섹션을 참조하십시오.
예를 들어, 다음 문은 my_db
데이터베이스의 작업에 대해 작업 완료가 실패할 때 작업을 수행하는 새로운 데이터에 대한 경고를 생성합니다. 이 예제에서는 다음을 가정합니다.
활동 중인 이벤트 테이블은 기본 이벤트 테이블 (SNOWFLAKE.TELEMETRY.EVENTS)입니다.
해당 Slack 채널에 대한 웹훅 알림 통합을 설정 했습니다.
CREATE ALERT my_alert_on_task_failures
IF( EXISTS(
SELECT * FROM SNOWFLAKE.TELEMETRY.EVENT_TABLE
WHERE resource_attributes:"snow.executable.type" = 'task'
AND resource_attributes:"snow.database.name" = 'my_db'
AND record:"severity_text" = 'ERROR'
AND value:"state" = 'FAILED'))
THEN
BEGIN
LET result_str VARCHAR;
(SELECT ARRAY_TO_STRING(ARRAY_ARG(name)::ARRAY, ',') INTO :result_str
FROM (
SELECT resource_attributes:"snow.executable.name"::VARCHAR name
FROM TABLE(RESULT_SCAN(SNOWFLAKE.ALERT.GET_CONDITION_QUERY_UUID()))
LIMIT 10
)
);
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
SNOWFLAKE.NOTIFICATION.TEXT_PLAIN(:result_str),
'{"my_slack_integration": {}}'
);
END;
이벤트 테이블에서 작업 완료 이벤트 쿼리하기¶
이벤트 테이블에서 작업 완료가 실패했음을 나타내는 이벤트를 쿼리할 수도 있습니다.
이벤트 테이블을 쿼리하는 데 필요한 역할과 결과를 필터링하는 데 사용할 수 있는 조건에 대한 자세한 내용은 작업 완료 이벤트에 대한 새로운 데이터에 대한 경고 설정하기 섹션을 참조하십시오.
예를 들어, 타임스탬프, 작업 이름, 쿼리 ID, my_db
데이터베이스의 작업 오류에 대한 오류 메시지를 가져오려면:
SELECT
timestamp,
resource_attributes:"snow.executable.name"::VARCHAR AS task_name,
resource_attributes:"snow.query.id"::VARCHAR AS query_id,
value:message::VARCHAR AS error
FROM my_event_table
WHERE
resource_attributes:"snow.executable.type" = 'TASK' AND
resource_attributes:"snow.database.name" = 'MY_DB' AND
value:state = 'FAILED'
ORDER BY timestamp DESC;
+-------------------------+-----------+--------------------------------------+------------------------------------------------------+
| TIMESTAMP | TASK_NAME | QUERY_ID | ERROR |
|-------------------------+-----------+--------------------------------------+------------------------------------------------------|
| 2025-02-18 00:21:19.461 | T1 | 01ba76b5-0107-e56d-0000-a995024f4222 | 002003: SQL compilation error: |
| | | | Object 'MY_TABLE' does not exist or not authorized. |
+-------------------------+-----------+--------------------------------------+------------------------------------------------------+
다음 예제는 스키마 my_schema
에서 작업 오류에 대한 모든 열을 검색합니다.
SELECT *
FROM my_event_table
WHERE
resource_attributes:"snow.executable.type" = 'FAILED' AND
resource_attributes:"snow.schema.name" = 'MY_SCHEMA' AND
value:state = 'FAILED'
ORDER BY timestamp DESC;
+-------------------------+-----------------+-------------------------+-------+----------+------------------------------------------------------------+-------+------------------+-------------+-------------------------------+-------------------+------------------------------------------------------------------------------------------------------+-----------+
| TIMESTAMP | START_TIMESTAMP | OBSERVED_TIMESTAMP | TRACE | RESOURCE | RESOURCE_ATTRIBUTES | SCOPE | SCOPE_ATTRIBUTES | RECORD_TYPE | RECORD | RECORD_ATTRIBUTES | VALUE | EXEMPLARS |
|-------------------------+-----------------+-------------------------+-------+----------+------------------------------------------------------------+-------+------------------+-------------+-------------------------------+-------------------+------------------------------------------------------------------------------------------------------+-----------|
| 2025-02-18 00:21:19.461 | NULL | 2025-02-18 00:21:19.461 | NULL | NULL | { | NULL | NULL | EVENT | { | NULL | { | NULL |
| | | | | | "snow.database.id": 49, | | | | "name": "execution.status", | | "message": "002003: SQL compilation error:\nObject 'EMP_TABLE' does not exist or not authorized.", | |
| | | | | | "snow.database.name": "MY_DB", | | | | "severity_text": "ERROR" | | "state": "FAILED" | |
| | | | | | "snow.executable.id": 518, | | | | } | | } | |
| | | | | | "snow.executable.name": "T1", | | | | | | | |
| | | | | | "snow.executable.type": "TASK", | | | | | | | |
| | | | | | "snow.owner.id": 2601, | | | | | | | |
| | | | | | "snow.owner.name": "DATA_ADMIN", | | | | | | | |
| | | | | | "snow.owner.type": "ROLE", | | | | | | | |
| | | | | | "snow.query.id": "01ba76b5-0107-e56d-0000-a995024f4222", | | | | | | | |
| | | | | | "snow.schema.id": 411, | | | | | | | |
| | | | | | "snow.schema.name": "MY_SCHEMA", | | | | | | | |
| | | | | | "snow.warehouse.id": 41, | | | | | | | |
| | | | | | "snow.warehouse.name": "INTAKE_WAREHOUSE" | | | | | | | |
| | | | | | } | | | | | | | |
+-------------------------+-----------------+-------------------------+-------+----------+------------------------------------------------------------+-------+------------------+-------------+-------------------------------+-------------------+------------------------------------------------------------------------------------------------------+-----------+
작업 이벤트에 대해 기록된 정보¶
작업이 실행되면 이벤트가 이벤트 테이블에 기록됩니다. 다음 섹션에서는 이벤트를 나타내는 이벤트 테이블 행에 대해 설명합니다.
이벤트 테이블 열 값¶
작업이 완료되거나 실패하면 다음 값을 가진 행이 이벤트 테이블에 삽입됩니다.
참고
열이 아래에 목록에 없는 경우 해당 이벤트의 열 값은 NULL 입니다.
열 |
데이터 타입 |
설명 |
---|---|---|
|
TIMESTAMP_NTZ |
이벤트가 생성된 UTC 타임스탬프입니다. |
|
TIMESTAMP_NTZ |
로그에 사용되는 UTC 시간입니다. 현재 이 값은 |
|
OBJECT |
실행된 작업을 식별하는 특성. |
|
STRING |
이벤트 유형으로, 작업 실행에 대한 |
|
OBJECT |
작업 실행 상태에 대한 자세한 내용. |
|
VARIANT |
작업 실행의 상태 및 실행에 실패한 경우 실패에 대한 오류 메시지를 표시합니다. |
resource_attributes
열의 키-값 페어¶
resource_attributes
열에는 다음 키-값 페어와 함께 OBJECT 값이 포함됩니다.
속성 이름 |
특성 유형 |
설명 |
예 |
---|---|---|---|
|
INTEGER |
작업이 포함된 데이터베이스의 내부/시스템 생성 식별자입니다. |
|
|
VARCHAR |
작업이 포함된 데이터베이스의 이름입니다. |
|
|
INTEGER |
실행된 작업의 내부/시스템 생성 식별자입니다. |
|
|
VARCHAR |
실행된 작업의 이름입니다. |
|
|
VARCHAR |
오브젝트의 유형입니다. 작업 이벤트의 경우 값은 |
|
|
INTEGER |
작업에 대한 OWNERSHIP 권한이 있는 역할의 내부/시스템 생성 식별자입니다. |
|
|
VARCHAR |
작업에 대한 OWNERSHIP 권한이 있는 역할의 이름입니다. |
|
|
VARCHAR |
오브젝트를 소유하는 역할 유형(예: |
|
|
VARCHAR |
작업을 실행한 쿼리의 ID 입니다. |
|
|
INTEGER |
작업을 포함하는 스키마의 내부/시스템 생성 식별자입니다. |
|
|
VARCHAR |
작업을 포함하는 스키마의 이름입니다. |
|
|
INTEGER |
작업을 실행하는 데 사용되는 웨어하우스의 내부/시스템 생성 식별자입니다. |
|
|
VARCHAR |
작업을 실행하는 데 사용되는 웨어하우스의 이름입니다. |
|
record
열의 키-값 페어¶
record
열에는 다음 키-값 페어와 함께 OBJECT 값이 포함됩니다.
키 |
타입 |
설명 |
예 |
---|---|---|---|
|
VARCHAR |
이벤트 이름입니다. 작업 실행의 경우 값은 |
|
|
VARCHAR |
이벤트의 심각도 수준(다음 값 중 하나)입니다.
|
|
value
열의 키-값 페어¶
value
열에는 다음 키-값 페어와 함께 VARIANT 값이 포함됩니다.
키 |
타입 |
설명 |
예 |
---|---|---|---|
|
VARCHAR |
작업 실행 상태이며, 다음 값 중 하나가 될 수 있습니다.
|
|
|
VARCHAR |
|