동적 테이블에 대한 이벤트 테이블 모니터링 및 경고¶
이 도움말 항목에서는 새로 고침 상태에 대한 정보를 제공하는 이벤트 테이블을 쿼리하는 방법과 이벤트 테이블의 새로운 데이터에 대한 경고를 설정하는 방법에 대해 설명합니다.
이벤트 테이블을 쿼리하여 새로 고침 모니터링하기¶
동적 테이블이 새로 고쳐질 때 새로 고침 작업 상태에 대한 정보를 제공하는 이벤트를 기록하도록 Snowflake를 구성할 수 있습니다. 이벤트는 동적 테이블과 연결된 활성 이벤트 테이블 에 기록됩니다.
예를 들어, 이벤트 테이블을 데이터베이스에 연결 했다고 가정해 보겠습니다. 해당 데이터베이스의 동적 테이블이 새로 고쳐지면 Snowflake는 해당 이벤트 테이블에 이벤트를 기록합니다.
이 활성 이벤트 테이블에 기록된 이벤트를 쿼리하여 동적 테이블 새로 고침을 모니터링할 수 있습니다.
예를 들어, 데이터베이스 my_db 에 있는 동적 테이블의 타임스탬프, 동적 테이블 이름, 쿼리 ID 및 오류 메시지를 가져오려면 다음을 수행합니다.
다음 예제는 my_schema 스키마에서 동적 테이블을 사용하여 업스트림 오류에 대한 모든 열을 검색합니다.
이벤트 테이블을 쿼리하는 데 필요한 역할과 결과를 필터링하는 데 사용할 수 있는 조건에 대한 자세한 내용은 새로운 데이터에 대한 경고 설정하기 섹션을 참조하십시오.
새로 고침을 모니터링하기 위해 새로운 데이터에 대한 경고를 설정합니다¶
앞서 언급했듯이, 동적 테이블이 새로 고쳐지면 이벤트 테이블에 새로 고침 성공 또는 실패 여부를 나타내는 이벤트가 기록됩니다. 새로운 데이터에 경고 를 설정하여 이벤트 테이블을 모니터링할 수 있습니다. 새로 고침에 실패하면 알림을 보내도록 경고를 구성할 수 있습니다.
다음 섹션에서는 이벤트를 캡처하기 위해 이벤트 로그를 설정하는 방법, 경고를 설정하는 방법, 이벤트 테이블에 기록된 이벤트를 해석하는 방법에 대해 설명합니다.
참고
동적 테이블에 대한 이벤트 로깅에는 비용이 발생합니다. 원격 분석 데이터 수집 비용 섹션을 참조하십시오.
캡처할 이벤트의 심각도 수준을 설정합니다¶
참고
심각도 수준을 설정하지 않으면 이벤트가 캡처되지 않습니다.
이벤트 테이블에 기록할 동적 테이블 이벤트를 설정하려면 이벤트 테이블에 캡처할 이벤트의 심각도 수준을 설정 하십시오. 이벤트는 다음 수준에서 캡처됩니다.
ERROR: 새로 고침 실패 이벤트.WARN: 업스트림 동적 테이블 새로 고침 실패 및 새로 고침 실패 이벤트.INFO: 새로 고침 이벤트 성공, 업스트림 동적 테이블 새로 고침 실패 및 새로 고침 실패 이벤트.
심각도 수준을 설정하려면 계정 또는 오브젝트에 대해 LOG_EVENT_LEVEL 매개 변수를 설정합니다. 다음에 대한 수준을 설정할 수 있습니다.
계정의 모든 오브젝트.
데이터베이스 또는 스키마의 모든 오브젝트.
특정 동적 테이블.
예:
계정에서 지원되는 모든 오브젝트에 대한 ERROR 수준 동적 테이블 이벤트를 캡처하려면 ALTER ACCOUNT SET LOG_EVENT_LEVEL 을 실행합니다.
계정 수준에서
LOG_EVENT_LEVEL을 설정하면 동적 테이블을 포함하여 계정에서 지원되는 워크로드에 대한 로그 이벤트(레코드 유형 EVENT)에 적용됩니다. 이는 로깅 APIs에서 생성되는 로그 메시지의 LOG_LEVEL 을 대체하지 않습니다. 자세한 내용은 매개 변수 섹션을 참조하십시오.my_db데이터베이스에서 지원되는 모든 오브젝트에 대한 INFO 수준 이벤트를 캡처하려면 ALTER DATABASE … SET LOG_EVENT_LEVEL 을 실행합니다.계정에서 수준을 설정하는 경우와 유사하게, 데이터베이스에서 수준을 설정하면 데이터베이스에서 지원되는 오브젝트 유형에 대한 로그 이벤트에 영향을 줍니다.
동적 테이블 WARN 에 대한
my_dynamic_table레벨 이벤트를 캡처하려면 ALTER DYNAMIC TABLE … SET LOG_EVENT_LEVEL 을 실행합니다.
새로운 데이터에 대한 경고 설정하기¶
이벤트 로깅에 대한 심각도 수준을 설정한 후에는 새로운 데이터에 대한 경고를 설정하여 동적 테이블 새로 고침의 실패를 나타내는 새 이벤트가 있는지 이벤트 테이블을 모니터링할 수 있습니다. 이벤트 테이블에 새 행이 삽입되고 경고에 지정된 조건을 충족하면 새로운 데이터에 대한 경고가 트리거됩니다.
참고
새 데이터에 대한 경고를 만들려면 이벤트 테이블을 쿼리하는 데 필요한 권한이 부여된 역할을 사용해야 합니다.
경고 조건이 기본 이벤트 테이블(SNOWFLAKE.TELEMETRY.EVENTS) 또는 미리 정의된 뷰(SNOWFLAKE.TELEMETRY.EVENTS_VIEW 뷰)를 쿼리하는 경우 기본 이벤트 테이블 및 EVENTS_VIEW에 액세스할 수 있는 역할 섹션을 참조하십시오.
EVENTS_VIEW 뷰에 대한 액세스를 관리하려면 EVENTS_VIEW 뷰에 대한 액세스 관리하기 섹션을 참조하십시오.
경고 조건이 사용자 지정 이벤트 테이블을 쿼리하는 경우 이벤트 테이블에 대한 액세스 제어 권한 섹션을 참조하십시오.
사용자 지정 이벤트 테이블에 대한 액세스 권한을 관리하려면 이벤트 테이블 데이터에 대한 액세스 관리하기 섹션을 참조하십시오.
경고 조건에서 동적 테이블 이벤트를 쿼리하려면 resource_attributes:"snow.executable.type" = 'DYNAMIC_TABLE' 에서 행을 선택합니다. 이벤트 목록의 범위를 좁히려면 다음 열을 필터링하면 됩니다.
결과를 특정 데이터베이스의 동적 테이블로 제한하려면
resource_attributes:"snow.database.name"을 사용합니다.동적 테이블의 오류로 인해 새로 고침이 실패한 이벤트를 반환하려면
value:state = 'FAILED'를 사용합니다.업스트림 동적 테이블의 오류로 인해 새로 고침이 실패한 이벤트를 반환하려면
value:state = 'UPSTREAM_FAILURE'를 사용합니다.
동적 테이블 이벤트에 대해 기록된 값에 대한 자세한 내용은 동적 테이블 이벤트에 대해 기록된 정보 섹션을 참조하십시오.
참고
이벤트 테이블의 timestamp 열은 UTC에 값을 저장합니다. 타임스탬프 필터(예: timestamp > DATEADD('minute', -5, CURRENT_TIMESTAMP()))로 예약된 경고를 사용하는 경우 정확한 비교를 위해 현재 타임스탬프를 UTC로 변환합니다.
예를 들어, 다음 문은 데이터베이스 :code:`my_db`의 동적 테이블에 대한 새로 고침이 실패할 때 작업을 수행하는 새 데이터에 대한 경고를 생성합니다. 이 예제에서는 다음을 가정합니다.
활동 중인 이벤트 테이블은 기본 이벤트 테이블 (SNOWFLAKE.TELEMETRY.EVENTS)입니다.
해당 Slack 채널에 대한 웹훅 알림 통합을 설정 했습니다.
동적 테이블 이벤트에 대해 기록된 정보¶
동적 테이블이 새로 고쳐지면 이벤트가 이벤트 테이블에 기록됩니다. 다음 섹션에서는 이벤트를 나타내는 이벤트 테이블 행에 대해 설명합니다.
이벤트 테이블 열 값¶
동적 테이블이 새로 고쳐지면 다음 값을 가진 행이 이벤트 테이블에 삽입됩니다.
참고
열이 아래에 목록에 없는 경우 해당 이벤트의 열 값은 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 |
|
|
파이프라인 스팬을 쿼리하여 새로 고침 추적¶
이벤트 외에도, Snowflake는 동적 테이블 새로 고침을 위한 파이프라인 스팬을 기록할 수 있습니다. 이벤트와 스팬은 별개의 두 가지 가시성 메커니즘입니다.
이벤트 (LOG_LEVEL 로 제어됨)는 동적 테이블을 새로 고칠 때마다 로그를 제공하여 각 새로 고침의 성공 또는 실패를 나타냅니다.
스팬 (TRACE_LEVEL 로 제어됨)은 파이프라인 전반에 걸친 상호 연결된 추적 IDs, 건너뛰는 이유, 종속성 토폴로지를 포함하여 파이프라인 수준의 더욱 풍부한 가시성을 제공합니다.
스팬은 이벤트가 발생하지 않는 추가 상태를 캡처합니다. 여기에는 업스트림 건너뛰기 또는 동적 테이블과 해당 컨슈머의 지연을 최소화하기 위해 스케줄러가 새로 고침을 건너뛰는 새로 고침 주기로 인한 SKIPPED 상태의 새로 고침이 포함됩니다.
참고
동적 테이블의 스팬 기록에는 비용이 발생합니다. 원격 분석 데이터 수집 비용 섹션을 참조하세요.
파이프라인 스팬 활성화¶
동적 테이블 새로 고침을 위해 파이프라인 스팬을 활성화하려면 데이터베이스 또는 스키마 수준에서 TRACE_LEVEL 매개 변수를 ALWAYS 로 설정합니다.
데이터베이스 수준에서 이를 설정하여 데이터베이스의 모든 동적 테이블에 대한 스팬을 캡처할 수도 있습니다.
스팬 데이터 쿼리¶
동적 테이블 새로 고침을 위해 파이프라인 스팬을 쿼리하려면 record_type = 'SPAN' 및 record:"name" = 'table_refresh' 인 행을 필터링합니다.
스팬 특성(record_attributes)¶
각 스팬 행의 record_attributes 열에는 동적 테이블 새로 고침과 관련된 다음 특성이 포함됩니다.
속성 이름 |
타입 |
설명 |
|---|---|---|
|
STRING |
새로 고침 상태는 |
|
STRING |
동적 테이블을 건너뛰거나 실패한 이유입니다. 성공 시 NULL입니다. 가능한 값은 다음과 같습니다.
|
|
STRING |
새로 고침이 평가된 시점의 트랜잭션 타임스탬프입니다. (이는 실제 새로 고침 시간보다 약간 이전 시점일 수 있습니다.) 이 타임스탬프 이전에 도달한 기본 오브젝트의 모든 데이터는 동적 테이블에 포함되어 있습니다. |
참고
스팬은 이벤트가 발생하지 않는 SKIPPED 상태(이유: UPSTREAM_SKIP 및 NOT_EFFECTIVE_TICK_TO_REFRESH 포함)를 포함합니다. 건너뛴 새로 고침을 확인해야 하는 경우 이벤트 대신 스팬을 사용합니다.
추적 IDs 및 스팬 링크를 포함한 파이프라인 상관관계¶
스팬의 고유한 기능 중 하나는 파이프라인 수준 상관관계입니다. 새로 고침 주기에 여러 동적 테이블에 대한 새로 고침 작업이 포함된 경우 모든 결과 스팬이 동일한 trace:"trace_id" 를 공유합니다. 이를 통해 단일 새로 고침 주기에서 발생한 전체 새로 고침 작업 세트를 재구성할 수 있습니다.
각 스팬에는 각 업스트림 종속성의 span_id 를 나열하는 record:"links" 배열도 포함됩니다. 예를 들어, DT_B 가 DT_A 에 의존하는 경우 DT_A 의 span_id 는 DT_B 의 record:"links" 에 나타납니다.
record:"status":"code" 필드는 성공 및 건너뛰기한 경우 STATUS_CODE_OK 이고 실패한 경우 STATUS_CODE_ERROR 입니다.
예를 들어, 단일 새로 고침 주기에서 모든 동적 테이블 새로 고침 작업의 상관관계를 지정하려면 동일한 trace_id 가 있는 스팬을 쿼리합니다.
파이프라인 새로 고침 추적¶
이 섹션에서는 파이프라인 스팬을 사용하여 새로 고침 주기를 처음부터 끝까지 추적하는 방법(관련 스팬 찾기, 전체 파이프라인 검색, 실패 또는 건너뛰기 진단)을 안내합니다.
파이프라인 시나리오 예제¶
4개의 동적 테이블로 구성된 선형 파이프라인을 생각해 보세요.
이 예제에서 DT1 및 DT2 새로 고침은 성공하지만 DT3 은 쿼리 오류로 인해 실패합니다. DT3 가 실패했으므로 DT4 는 UPSTREAM_FAILURE 이유와 함께 자동으로 건너뜁니다.
다음 단계에서는 이 시나리오에 대한 파이프라인 스팬을 검색하고 해석하는 방법을 보여줍니다.
1단계: 동적 테이블의 스팬 찾기¶
특정 동적 테이블의 새로 고침을 조사하려면 이벤트 테이블의 가장 최근 스팬을 쿼리합니다. 데이터베이스, 스키마 및 동적 테이블 이름을 기준으로 필터링하여 올바른 오브젝트와 일치하는지 확인합니다.
trace_id 값은 새로 고침 주기를 식별합니다. 단일 파이프라인 새로 고침 내의 모든 동적 테이블 스팬은 동일한 trace_id 를 공유합니다. 다음 단계에서 이 값을 사용하여 동일한 새로 고침 주기의 모든 스팬을 검색합니다.
2단계: 전체 파이프라인 검색¶
동일한 trace_id 를 공유하는 모든 스팬을 쿼리하여 새로 고침 주기의 모든 동적 테이블을 확인합니다. record:"links" 를 포함하여 종속성 그래프를 캡처하고 DATEDIFF 를 포함하여 각 새로 고침 작업의 지속 시간을 계산합니다.
이 결과에서 새로 고침 주기의 전체 그림을 볼 수 있습니다.
DT1및DT2는 성공했습니다(각각 30초 및 29초).DT3은 쿼리 실패로 인해 19초 후에 실패했습니다.DT4는 업스트림 종속성이 실패했으므로 바로 건너뛰었습니다(기간이 0인 스팬으로 표시됨).UPSTREAM_LINKS열은 각 동적 테이블의 직접 종속성을span_id기준으로 보여줍니다.
3단계: 실패의 근본 원인 식별 또는 건너뛰기¶
동적 테이블 건너뛰기 또는 실패가 발생하면 스팬 링크를 통해 업스트림 종속성을 추적하여 근본 원인을 찾을 수 있습니다. 이 쿼리는 특정 동적 테이블의 스팬 링크를 파이프라인의 다른 스팬으로 다시 확인합니다.
이 예제에서 DT4 는 업스트림 종속성 DT3 이 QUERY_FAILURE 로 실패했으므로 건너뛰었습니다. query_id 를 사용하여 실패한 쿼리를 추가로 조사할 수 있습니다(예: GET_QUERY_OPERATOR_STATS 호출 또는 쿼리 기록 확인).
더 긴 종속성 체인의 경우 동일한 패턴을 반복합니다. 대상 동적 테이블 이름을 바꿔서 근본 원인이 state = 'FAILED' 및 state_reason = 'QUERY_FAILURE' 인 스팬에 도달할 때까지 조금 더 업스트림으로 이동합니다.
오류의 다운스트림 영향 찾기¶
특정 오류의 영향을 받은 동적 테이블을 찾으려면 스팬 링크 조회를 반대로 수행합니다. 이 쿼리는 record:"links" 가 실패한 동적 테이블의 span_id 를 참조하는 모든 동적 테이블을 찾습니다.
이는 실패한 동적 테이블의 직접 종속 항목을 반환합니다. 전이적으로 영향을 받는 모든 동적 테이블을 찾으려면 각 종속 항목의 span_id 로 쿼리를 반복하여 더 아래로 이동합니다.
OpenTelemetry 호환 도구 사용¶
동적 테이블 파이프라인 스팬은 표준 OpenTelemetry 데이터 모델을 따릅니다. 새로 고침 주기의 모든 스팬은 동일한 trace:"trace_id" 를 공유하므로, 이벤트 테이블에서 시각화를 위한 OpenTelemetry 호환 도구로 내보낼 수 있습니다.
이러한 도구는 파이프라인을 추적 타임라인으로 렌더링하여 각 동적 테이블 새로 고침 작업의 기간 및 상태와 스팬 링크에 인코딩된 종속성 관계를 표시할 수 있습니다.