추적 데이터 보기

Snowsight 를 통해 또는 추적 데이터가 저장된 이벤트 테이블을 쿼리하여 추적 데이터를 볼 수 있습니다.

참고

추적 데이터 사용을 시작하려면 먼저 원격 분석 데이터 수집을 활성화 해야 합니다.

Snowsight 의 추적 항목 보기

참고

로깅 및 추적에 대한 Snowsight 지원은 모든 계정에서 미리 보기 기능으로 제공됩니다.

Snowsight 를 사용하여 이벤트 테이블에 캡처된 추적 데이터를 볼 수 있습니다.

  1. Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 Monitoring » Traces and Logs 를 선택합니다.

  3. Traces & Logs 페이지에서 다음 열을 통해 추적 항목을 볼 수 있습니다.

    설명

    날짜

    항목이 기록된 날짜입니다.

    지속 시간

    추적이 시작해서 끝날 때까지의 시간입니다.

    추적 이름

    이벤트를 생성하는 실행 파일의 이름입니다. RESOURCE_ATTRIBUTES 열 snow.executable.name 값에서 검색됩니다.

    상태

    추적이 오류를 보고한 경우 Error 이고, 그렇지 않은 경우 Success 입니다.

    범위

    추적에서 범위의 수입니다.

  4. Traces & Logs 페이지에서 수행할 수 있는 작업은 다음과 같습니다.

    • 표시되는 행을 필터링하려면 페이지 상단의 드롭다운 메뉴를 사용합니다. 다음을 기준으로 필터링할 수 있습니다.

      • 항목이 기록된 날짜 범위

      • 추적 상태(예: Success 또는 Error)

      • 추적이 실행된 데이터베이스

    • 행을 정렬하려면 정렬 기준으로 사용할 열의 이름을 선택합니다.

  5. Trace Details 페이지에서 항목에 대한 자세한 내용을 보려면 해당 항목의 행을 선택합니다.

  6. Traces Details 페이지에서 범위 목록을 볼 수 있습니다.

    범위 오브젝트에는 추적 이벤트가 포함되어 있습니다. 자세한 내용은 Snowflake가 추적 이벤트를 표시하는 방법 섹션을 참조하십시오.

    • 표시된 행을 필터링하려면 페이지 상단의 드롭다운 메뉴를 사용합니다. Span Type: UDF, 프로시저 또는 Streamlit으로 필터링할 수 있습니다.

    • 행에 표시된 데이터를 설명하는 범례를 보려면 Legend 드롭다운을 선택한 다음 보려는 범례를 선택합니다.

    • 항목에 대한 더 자세한 정보를 보려면 해당 항목의 행을 선택합니다.

      이 패널에서는 이벤트 테이블에 저장된 자세한 정보를 볼 수 있습니다. 다음 테이블에서는 패널의 값을 설명합니다.

      세부 정보 탭

      세부 정보

      설명

      추적 ID

      쿼리에서 이루어진 호출의 고유 식별자입니다. TRACE 열 trace_id 값에서 검색됩니다. 자세한 내용은 추적 값 섹션을 참조하십시오.

      범위 ID

      스레딩 모델에 연결된 고유 식별자입니다. TRACE 열 span_id 값에서 검색됩니다. 자세한 내용은 추적 값 섹션을 참조하십시오.

      범위

      이벤트를 내보내는 코드의 네임스페이스입니다. SCOPE 열 에서 검색됩니다.

      지속 시간

      범위의 시작부터 끝까지 지속 시간입니다. 자세한 내용은 SPAN RECORD_TYPE의 경우 섹션을 참조하십시오.

      이름

      범위의 이름입니다. RECORD 열 name 값에서 검색됩니다.

      상위 항목 범위 ID

      선택한 범위가 포함된 범위의 고유 ID입니다.

      상태 코드

      범위의 상태 코드입니다. RECORD 열 status 값에서 검색됩니다.

      기타 특성

      사용자 코드에 의해 추가된 특성 및 값.

      쿼리 ID

      추적을 시작한 쿼리의 ID. RESOURCE_ATTRIBUTES 열 snow.query.id 값에서 검색됩니다.

      이름

      이벤트를 생성하는 실행 파일의 이름입니다. RESOURCE_ATTRIBUTES 열 snow.executable.name 값에서 검색됩니다.

      타입

      이벤트를 생성한 실행 파일의 유형입니다. RESOURCE_ATTRIBUTES 열 snow.executable.type 값에서 검색됩니다.

      사용자

      함수 또는 프로시저를 실행하는 사용자의 이름입니다. Streamlit 앱의 경우 특정 이벤트 동안 앱을 보고 있던 사용자의 이름입니다. RESOURCE_ATTRIBUTES 열 db.user 값에서 검색됩니다.

      소유자

      실행 파일에 대한 OWNERSHIP 권한이 있는 역할의 이름입니다. RESOURCE_ATTRIBUTES 열 snow.owner.name 값에서 검색됩니다.

      역할

      세션에서 기본 역할의 이름입니다. RESOURCE_ATTRIBUTES 열 snow.session.role.primary.name 값에서 검색됩니다.

      웨어하우스

      이벤트를 생성하는 쿼리를 실행하는 웨어하우스의 이름입니다. RESOURCE_ATTRIBUTES 열 snow.warehouse.name 값에서 검색됩니다.

      데이터베이스

      실행 파일이 포함된 데이터베이스의 이름입니다. RESOURCE_ATTRIBUTES 열 snow.database.name 값에서 검색됩니다.

      스키마

      실행 파일을 포함하는 스키마의 이름입니다. RESOURCE_ATTRIBUTES 열 snow.schema.name 값에서 검색됩니다.

      범위 이벤트 탭

      추적 이벤트에 대해 기록된 데이터를 표시합니다. 자세한 내용은 기록된 이벤트 데이터 섹션을 참조하십시오.

      관련 메트릭 탭

      Snowpark Python 저장 프로시저와 UDFs의 리소스 소비에 대한 CPU 및 메모리 메트릭을 보여주는 차트를 표시합니다. UDF와 관련된 메트릭은 특정 쿼리에 대한 것입니다. 목록에서 UDF 범위를 선택하면 메트릭은 동일한 쿼리에 대해 하나 이상의 UDF 범위와 연관됩니다. 목록에서 프로시저를 선택하면 단일 범위에 대한 프로시저 메트릭이 표시됩니다.

      로그 탭

      이벤트에 의해 기록된 값을 표시합니다. VALUE 열 에서 검색됩니다.

이벤트 테이블에서 추적 항목에 대해 쿼리하기

이벤트 테이블에는 다음을 포함하여 로깅된 메시지에 대한 정보를 캡처하는 미리 정의된 열 세트가 있습니다.

  • 범위가 시작된 시점의 타임스탬프.

  • 이벤트가 생성된 시점의 타임스탬프.

  • 데이터가 범위 또는 범위 이벤트에 대한 것인지 여부와 같이, 기록된 데이터의 타입.

  • 범위 또는 이벤트의 이름.

  • 범위 또는 이벤트와 연결된 특성(있는 경우).

이벤트 테이블 열에 대한 참조 정보는 이벤트 테이블 열 섹션을 참조하십시오.

추적 데이터 쿼리의 예

다음 섹션에서는 예제 데이터를 사용하여 이벤트 테이블에서 추적 데이터를 쿼리하는 방법을 설명합니다.

수집된 데이터

다음 예제의 출력은 Python으로 작성된 세 개의 개별 처리기에 대해 추적 데이터를 캡처한 후 이벤트 테이블에서 선택한 열 하위 세트의 내용을 보여줍니다.

추적 데이터를 수집하는 이벤트 테이블 열에 대한 참조 정보는 추적 이벤트의 데이터 섹션을 참조하십시오.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| TIMESTAMP          | START_TIMESTAMP    | RESOURCE_ATTRIBUTES   | RECORD_TYPE | RECORD                                                                                                  | RECORD_ATTRIBUTES                                                           |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | 2023-04-20 0:45:49 | **See excerpt below** | SPAN        | { "kind": "SPAN_KIND_INTERNAL", "name": "digits_of_number", "status": { "code": "STATUS_CODE_UNSET" } } |                                                                             |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 |                    |                       | SPAN_EVENT  | { "name": "test_udtf_init" }                                                                            |                                                                             |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 |                    |                       | SPAN_EVENT  | { "name": "test_udtf_process" }                                                                         | { "input": "42" }                                                           |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 |                    |                       | SPAN_EVENT  | { "name": "test_udtf_end_partition" }                                                                   |                                                                             |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 | 2023-04-20 0:46:00 |                       | SPAN        | { "kind": "SPAN_KIND_INTERNAL", "name": "times_two", "status": { "code": "STATUS_CODE_UNSET" } }        | { "example.func.times_two": "begin", "example.func.times_two.response": 8 } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 |                    |                       | SPAN_EVENT  | { "name": "event_without_attributes" }                                                                  |                                                                             |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 |                    |                       | SPAN_EVENT  | { "name": "event_with_attributes" }                                                                     | { "example.key1": "value1", "example.key2": "value2" }                      |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:08 | 2023-04-20 0:46:08 |                       | SPAN        | { "kind": "SPAN_KIND_INTERNAL", "name": "do_tracing", "status": { "code": "STATUS_CODE_UNSET" } }       | { "example.proc.do_tracing": "begin" }                                      |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:08 |                    |                       | SPAN_EVENT  | { "name": "event_with_attributes" }                                                                     | { "example.key1": "value1", "example.key2": "value2" }                      |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

RESOURCE_ATTRIBUTES 발췌

다음 JSON 발췌 내용에는 이전 출력에 데이터가 포함된 세 처리기 각각에 대한 RESOURCE_ATTRIBUTES 열에 포함된 특성 중 2개가 포함되어 있습니다. 이 발췌 내용 다음에 나오는 SELECT 문은 이러한 특성에서 값을 선택합니다.

RESOURCE_ATTRIBUTES 열에는 이벤트 원본에 대한 데이터가 있습니다. 참조 정보는 RESOURCE_ATTRIBUTES 열 섹션을 참조하십시오.

{
  ...
  "snow.executable.name": "DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER)",
  "snow.executable.type": "FUNCTION",
  ...
}

{
  ...
  "snow.executable.name": "TIMES_TWO(X NUMBER):NUMBER(38,0)",
  "snow.executable.type": "FUNCTION",
  ...
}

{
  ...
  "snow.executable.name": "DO_TRACING():VARIANT",
  "snow.executable.type": "PROCEDURE",
  ...
}
Copy

SELECT 문을 사용한 쿼리

데이터를 쿼리할 때 다음 형식에서처럼 대괄호 표기법 을 사용하여 열 내의 특성 값을 선택할 수 있습니다.

COLUMN_NAME['attribute_name']
Copy

아래 예제의 코드는 DIGITS_OF_NUMBER 함수와 관련된 데이터를 분리하려는 의도로 선행 테이블을 쿼리합니다.

SET EVENT_TABLE_NAME='my_db.public.my_events';

SELECT
  TIMESTAMP as time,
  RESOURCE_ATTRIBUTES['snow.executable.name'] as handler_name,
  RESOURCE_ATTRIBUTES['snow.executable.type'] as handler_type,
  RECORD['name'] as event_name,
  RECORD_ATTRIBUTES as attributes
FROM
  IDENTIFIER($event_table_name)
WHERE
  RECORD_TYPE = 'SPAN_EVENT'
  AND HANDLER_NAME LIKE 'DIGITS_OF_NUMBER%';
Copy

쿼리 결과

다음 예제의 출력은 쿼리 결과를 보여줍니다.

-------------------------------------------------------------------------------------------------------------------------------------------
| TIME               | HANDLER_NAME                                          | HANDLER_TYPE | EVENT_NAME              | ATTRIBUTES        |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION     | test_udtf_init          |                   |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION     | test_udtf_process       | { "input": "42" } |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION     | test_udtf_end_partition |                   |
-------------------------------------------------------------------------------------------------------------------------------------------