앱에 대한 이벤트 추적 설정하기

이 항목에서는 앱에서 내보내는 로그 메시지와 추적 이벤트를 캡처하기 위해 이벤트 추적을 설정하고 사용하는 방법을 설명합니다. 또한 이벤트 공유를 사용하여 로그 메시지를 공유하고 공급자를 통해 이벤트를 추적하는 방법도 설명합니다.

Snowflake Native App Framework 에서의 이벤트 추적 정보

이벤트 추적을 사용하면 앱이 성능 및 동작과 관련된 정보를 내보낼 수 있습니다. Snowflake Native App Framework 에서는 Snowflake 로깅 및 추적 기능을 사용하여 이 정보를 수집할 수 있습니다. 앱은 다음을 내보낼 수 있습니다.

  • 앱 내에서 특정 기능의 상태에 대한 정보가 포함된 독립적이고 자세한 로그 메시지.

  • 앱의 여러 부분에 걸쳐 정보를 가져오고 그룹화하는 데 사용할 수 있는 정형 데이터를 사용하는 추적 이벤트.

앱의 로그 메시지 및 이벤트 보기

앱에서 내보내는 로그 메시지와 추적 이벤트를 보려면 컨슈머는 자신의 계정에 이벤트 테이블을 설정하여 이 정보를 수집해야 합니다. 자세한 내용은 이벤트 테이블 설정하기 섹션을 참조하십시오.

이벤트 공유 정보

컨슈머는 이벤트 공유를 사용하여 이벤트 데이터를 공급자와 공유할 수도 있습니다. 공급자가 이벤트 공유를 사용하는 경우 컨슈머 계정의 이벤트 테이블에 삽입된 로그 메시지와 추적 이벤트가 공급자 계정의 이벤트 테이블에도 삽입됩니다.

공급자는 이벤트 공유를 통해 앱의 성능과 동작에 대한 정보를 수집할 수 있습니다. 자세한 내용은 앱의 이벤트 공유 정보 섹션을 참조하십시오.

이벤트 정의 정보

이벤트 정의는 앱이 로그 메시지와 추적 이벤트를 공급자와 공유하는 방법을 지정합니다. 이벤트 정의는 공급자가 설정한 로그 메시지 및 추적 이벤트 수준에 대한 필터 역할을 합니다. 공급자는 새로운 버전이나 패치가 게시될 때 앱에 대한 이벤트 정의를 지정합니다.

참고

이벤트 정의는 필요하지 않습니다. 공급자가 앱에 대한 이벤트 정의를 지정하지 않을 경우 컨슈머는 필요에 따라 이벤트 공유를 활성화하거나 비활성화할 수 있습니다.

공급자는 이벤트 정의를 필수 사항 또는 선택 사항으로 설정할 수 있습니다.

  • 필수 이벤트 정의는 앱이 설치될 때 자동으로 활성화됩니다. 앱에서 내보내는 이벤트 정의를 수집하려면 컨슈머가 이벤트 테이블을 만들고 이를 자신의 계정에 대한 활성 이벤트 테이블로 설정해야 합니다.

  • 선택적 이벤트 정의는 컨슈머가 필요에 따라 활성화하거나 비활성화할 수 있습니다. 선택적 이벤트 정의에는 활성 이벤트 테이블이 필요하지만, 앱을 설치하거나 사용하는 데 필수적인 것은 아닙니다.

조심

이벤트 정의는 공급자가 설정한 로그 및 추적 수준과 동일하지 않습니다. 로그 및 추적 수준에 따라 컨슈머 이벤트 테이블에 삽입되는 정보가 결정됩니다.

이벤트 정의는 로그 메시지와 추적 이벤트에 적용되는 필터입니다. 이벤트 정의에 따라 이벤트 공유가 활성화될 경우 공급자 이벤트 테이블에 삽입되는 정보가 결정됩니다.

지원되는 이벤트 정의

다음 표에는 현재 지원되는 이벤트 정의가 나열되어 있습니다.

타입

이름

설명

필터

All

SNOWFLAKE$ALL

앱에서 내보내는 모든 로그 메시지와 추적 이벤트를 공유합니다.

*

Errors and warnings

SNOWFLAKE$ERRORS_AND_WARNINGS

오류, 경고 및 치명적인 이벤트와 관련된 로그를 공유합니다.

RECORD_TYPE = ‘LOG’ AND RECORD:severity_text in (‘FATAL’, ‘ERROR’, ‘WARN’)

Traces

SNOWFLAKE$TRACES

애플리케이션에서 사용자 활동과 여정에 대한 자세한 추적 정보를 공유합니다.

RECORD_TYPE in (‘SPAN’, ‘SPAN_EVENT’)

Usage logs

SNOWFLAKE$USAGE_LOGS

사용자 작업 및 앱 이벤트와 관련된 상위 수준 로그를 공유합니다.

RECORD_TYPE = LOG AND RECORD:severity_text = ‘INFO’

Debug logs

SNOWFLAKE$DEBUG_LOGS

앱의 문제 해결에 사용된 기술 로그를 공유합니다.

RECORD_TYPE = ‘LOG’ AND RECORD:severity_text in (‘DEBUG’, ‘TRACE’)

참고

공급자가 앱이 이벤트 정의를 사용하도록 구성하지 않은 경우 Snowsight 는 All 유형만 표시합니다.

이벤트 정의를 사용할 때 컨슈머를 위한 고려 사항

컨슈머는 기존 SHARE_EVENTS_WITH_PROVIDER 속성을 계속 사용할 수 있지만, 다음과 같은 제한 사항이 있습니다.

  • 앱에서 OPTIONAL ALL 이벤트 정의만 사용하는 경우 SHARE_EVENTS_WITH_PROVIDER 속성을 true 로 설정하면 이벤트 공유가 활성화되고 false 로 설정하면 이벤트 공유가 비활성화됩니다.

    이는 공급자가 매니페스트 파일에 OPTIONAL ALL 이벤트 정의를 명시적으로 추가하거나 앱이 기존 이벤트 공유 기능에서 마이그레이션된 경우에 적용할 수 있습니다.

  • 공급자가 매니페스트 파일에 필수 및 선택적 이벤트 정의를 추가하는 경우 SHARE_EVENTS_WITH_PROVIDER 속성을 true 로 설정하면 모든 이벤트 정의가 활성화됩니다. 반대로, 공급자가 선택적 이벤트 정의만 추가하는 경우에만 SHARE_EVENTS_WITH_PROVIDER 속성을 false 로 설정할 수 있습니다.

    모든 이벤트 정의가 활성화된 경우에만 SHARE_EVENTS_WITH_PROVIDER가 TRUE이고, 그렇지 않은 경우에는 FALSE입니다.

앱에 대한 이벤트 추적을 설정하는 워크플로

다음 워크플로에서는 앱에 대한 이벤트 추적을 설정하는 방법을 설명합니다.

  1. 로깅 및 이벤트 추적 사용을 위한 고려 사항을 검토합니다.

  2. 이벤트 테이블을 설정합니다.

  3. 앱에 대해 구성된 로깅 및 추적 이벤트 수준을 확인합니다.

  4. 이벤트 테이블에 있는 이벤트를 봅니다.

  5. 앱에서 이벤트 공유를 활성화합니다.

이벤트 추적 사용 시 고려 사항

앱에 대한 이벤트 추적을 설정하기 전에 다음 사항을 고려해야 합니다.

  • 이 기능을 사용하려면 자신의 계정에서 이벤트 테이블을 설정 해야 합니다.

  • 이벤트 공유를 활성화하면 추적 이벤트 및 로그 메시지의 마스크 처리되고 삭제된 복사본이 지정된 공급자 계정의 이벤트 테이블에 자동으로 삽입됩니다.

  • Snowflake에서는 이벤트 공유 활성화 요금을 청구하지 않습니다. 하지만 이벤트 테이블의 추적 이벤트 및 로그 메시지를 수집하는 비용뿐 아니라 이벤트 테이블의 저장 비용도 사용자가 부담해야 합니다.

  • 공급자와 이벤트 공유를 활성화한 후에는 공유된 추적 이벤트와 로그 메시지에 대한 액세스를 취소할 수 없습니다.

  • 이벤트 공유를 사용하여 과거 이벤트를 공유할 수는 없습니다.

  • Snowflake는 계정과 동일한 리전 내의 지정된 공급자 계정으로 공유 이벤트를 보냅니다. 이 기능에서는 서로 다른 리전 간에 데이터를 공유하지 않습니다.

  • 애플리케이션에 대한 로깅 또는 추적 수준을 변경할 수 없습니다. 앱 공급자가 앱을 게시할 때 이러한 수준을 설정합니다.

  • Snowflake에서는 이벤트 공유를 활성화하기 전에 이벤트 테이블에서 추적 이벤트와 로그 메시지를 검토할 것을 권장합니다.

  • 앱 문제를 해결할 필요가 없는 경우 이벤트 공유를 비활성화하는 것이 좋습니다.

이벤트 테이블 설정하기

앱에서 내보내는 로그 메시지와 추적 이벤트를 수집하려면 컨슈머가 이벤트 테이블을 만들어 정보를 저장해야 합니다.

참고

컨슈머가 이벤트 테이블을 설정하지 않고 앱을 설치하기 전에 이를 활성 이벤트 테이블로 만들지 않을 경우 추적 이벤트 및 로그 데이터가 삭제됩니다.

공급자가 앱에 필요한 이벤트 정의를 포함하면 설치 중에 이벤트 정의가 기본적으로 활성화됩니다. 하지만 컨슈머에게 활성 이벤트 테이블이 없는 경우 앱에서 내보내는 로그 메시지와 추적 이벤트는 삭제됩니다.

한 계정에 여러 이벤트 테이블이 있을 수 있지만, 한 번에 그중 하나만 Snowflake 계정의 활성 이벤트 테이블로 설정할 수 있습니다. 활성 이벤트 테이블이 없으면 앱에서 내보내는 로그 메시지와 추적 이벤트가 캡처되지 않습니다. 이는 앱의 함수와 프로시저가 로깅 및 추적 이벤트 API를 직접 호출하는 경우에도 마찬가지입니다.

이벤트 테이블을 생성하려면 다음 예에 표시된 것처럼 CREATE EVENT TABLE 명령을 실행하십시오.

CREATE EVENT TABLE event_db.event_schema.my_event_table;
Copy

이 명령은 이벤트 테이블이 포함된 데이터베이스와 스키마를 지정합니다.

이벤트 테이블을 생성한 후 ALTER ACCOUNT 명령을 사용하여 이벤트 테이블이 계정의 활성 테이블임을 지정합니다.

ALTER ACCOUNT SET EVENT_TABLE=event_db.event_schema.my_event_table;
Copy

앱에 대한 이벤트 공유 활성화하기

Snowflake Native App Framework 는 컨슈머 이벤트 테이블에 저장된 로그 메시지와 추적 이벤트를 앱 공급자와 공유할 수 있도록 지원합니다. 로그 및 이벤트 정보를 공급자와 공유하려면 컨슈머가 앱에 대해 이벤트 공유를 활성화해야 합니다.

앱의 이벤트 공유 활성화를 위한 전제 조건

앱 인스턴스에 대한 이벤트 공유를 활성화하려면 다음 전제 조건을 충족해야 합니다.

Snowsight 를 사용하여 이벤트 공유 활성화하기

참고

공급자가 앱에 필수 이벤트 정의 를 포함하는 경우, 이벤트 공유 및 필수 이벤트 정의는 설치 중에 활성화되며 나중에 비활성화할 수 없습니다.

앱에 대한 이벤트 공유를 활성화하려면 다음을 수행합니다.

  1. Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 Data Products » Apps 를 선택합니다.

  3. 앱을 선택합니다.

  4. 도구 모음에서 Security 아이콘을 선택합니다.

  5. Events and logs 탭을 선택합니다.

  6. Events and logs sharing 영역에서 Enable 을 선택합니다.

  7. 공급자가 앱의 이벤트 정의를 정의한 경우 다음을 수행합니다.

    1. 슬라이더를 사용하여 선택적 이벤트 정의를 활성화합니다.

    2. Review 를 선택합니다.

  8. 현재 이벤트 테이블이 선택되어 있지 않은 경우 Event table location 아래의 목록에서 이벤트 테이블을 선택합니다.

    조심

    Snowsight 에서 이벤트 테이블을 변경할 때는 주의해야 합니다. 각 Snowflake 계정은 계정 내에서 생성된 모든 이벤트에 대해 단일 이벤트 테이블을 사용합니다. 이벤트 테이블을 변경하면 계정에서 생성된 모든 이벤트가 새 위치에 저장됩니다.

SQL을 사용하여 이벤트 공유 활성화하기

SQL을 사용하여 앱에 대한 이벤트 공유를 활성화하려면 다음을 수행합니다.

  1. SHOW TELEMETRY EVENT DEFINITIONS 명령을 사용하여 앱의 이벤트 정의를 확인합니다.

    SHOW TELEMETRY EVENT DEFINITIONS IN APPLICATION hello_snowflake;
    
    Copy

    공급자가 이벤트 정의를 사용하도록 앱을 구성하지 않은 경우 type 열에 ALL 이 표시됩니다. 그렇지 않은 경우, 이 명령은 앱에 지정된 선택적 이벤트 정의를 나열합니다.

  2. 앱에 필수 이벤트 정의가 포함된 경우 ALTER APPLICATION 명령을 사용하여 이벤트 정의를 활성화합니다.

    ALTER APPLICATION hello_snowflake SET AUTHORIZE_TELEMETRY_EVENT_SHARING=true
    
    Copy

    이 명령은 모든 필수 이벤트 정의를 활성화하지만, 선택적 이벤트 정의는 활성화하지 않습니다.

    참고

    앱에 필요한 이벤트 정의를 활성화하면 이벤트 공유를 비활성화할 수 없습니다.

  3. 앱에 옵션 이벤트 정의가 포함된 경우 다음 예와 같이 ALTER APPLICATION 을 사용하여 이를 활성화합니다.

    ALTER APPLICATION hello_snowflake SET SHARED TELEMETRY EVENTS ('SNOWFLAKE$TRACES', 'SNOWFLAKE$DEBUG_LOGS');
    
    Copy

    이 예에서는 SHOW TELEMETRY EVENT DEFINITIONS 명령의 출력에 따라 SNOWFLAKE$TRACESSNOWFLAKE$DEBUG_LOGS 를 활성화합니다.

  4. 이벤트 추적 및 로깅이 활성화되었는지 확인하려면 DESC APPLICATION 명령을 사용합니다.

    DESC APPLICATION hello_snowflake;
    
    Copy

    출력의 authorize_telemetry_event_sharingshare_events_with_provider 행은 이벤트 공유가 활성화되어 있는지 여부를 나타냅니다.

SQL을 사용하여 이벤트 공유 활성화하기(이전 기능)

조심

이 섹션에 설명된 SQL을 사용하여 이벤트 공유를 활성화하는 메서드는 향후 릴리스에서는 더 이상 지원되지 않습니다. Snowflake에서는 SQL을 사용하여 이벤트 공유를 활성화하려면 SQL을 사용하여 로그 및 이벤트 공유 활성화하기 에서 설명한 메서드를 사용할 것을 권장합니다.

앱에 대한 이벤트 공유를 활성화하려면 ALTER APPLICATION 명령을 실행하여 SHARE_EVENTS_WITH_PROVIDER를 TRUE 로 설정하십시오. 예:

ALTER APPLICATION HelloSnowflake SET SHARE_EVENTS_WITH_PROVIDER = TRUE;
Copy

앱의 이벤트 공유 상태를 표시하려면 다음 예와 같이 DESC APPLICATION 명령을 사용하십시오.

DESC APPLICATION HelloSnowflake;
Copy

SHARE_EVENTS_WITH_PROVIDER 는 앱의 이벤트 공유 상태를 보여줍니다.

업그레이드 중 이벤트 정의 활성화하기

업그레이드하는 동안 이벤트 정의는 다음과 같이 작동합니다.

이벤트 정의 변경

업그레이드 중의 동작

이벤트 정의가 변경되지 않음

이벤트 정의는 이전 버전이나 패치와 동일한 상태를 유지합니다.

새로운 이벤트 정의

자동으로 활성화되지 않습니다. 이는 필수적 이벤트 정의와 선택적 이벤트 정의에 모두 해당됩니다. 컨슈머는 새로운 이벤트 정의를 수동으로 활성화해야 합니다.

필수 사항에서 선택 사항으로 또는 선택 사항에서 필수 사항으로 변경

이벤트 정의는 이전 버전이나 패치와 동일한 상태를 유지합니다.

삭제된 이벤트 정의

이전 버전이나 패치에서 로그 메시지나 추적 이벤트 필터에 대한 업그레이드 후에는 이벤트 공유가 중지됩니다.

업그레이드하는 동안 컨슈머에게는 이전 패치나 버전의 이벤트 정의에 대한 변경 사항을 검토하라는 메시지가 표시됩니다.

이벤트 테이블에서 로그 메시지와 추적 이벤트 확인하기

이벤트 테이블이 활성화되는 경우 컨슈머는 이벤트 테이블을 쿼리하여 앱에서 내보내는 로그 메시지와 추적 이벤트를 확인할 수 있습니다. 예를 들어 SELECT 명령을 사용하여 이벤트 테이블을 쿼리합니다.

SELECT * FROM event_db.event_schema.my_event_table;
Copy

이 명령은 이벤트 테이블에 저장된 모든 로그 메시지와 추적 이벤트를 반환합니다.

로그 메시지 또는 추적 이벤트가 공급자와 공유되는지 확인하기

RECORD_ATTRIBUTES 열에는 snow.application.shared 필드가 포함됩니다. 이 필드의 값이 TRUE인 경우 로그 메시지 또는 추적 이벤트가 공급자와 공유됩니다. 그렇지 않으면 로그 메시지나 이벤트가 공유되지 않습니다.

앱의 로그 및 추적 수준 확인하기

앱의 로그 및 추적 수준은 앱을 게시하기 전에 공급자가 정의합니다. 컨슈머는 앱의 로그 및 추적 수준을 변경할 수 없습니다.

하지만 앱에 대한 이벤트 추적을 설정하거나 이벤트 공유를 활성화하기 전에 로그 수준을 확인하여 수집되어 공급자와 공유된 정보 유형을 파악하는 것이 좋습니다.

앱의 로그 및 추적 수준을 확인하려면 다음 명령을 실행하십시오.

DESC APPLICATION HelloSnowflake;
Copy

이 명령은 앱에 대해 설정된 로그 및 추적 수준에 대한 다음 정보를 포함하여 HelloSnowflake 앱에 대한 정보를 표시합니다.

  • log_level: 공급자가 매니페스트 파일에 정의한 로그 수준입니다.

  • trace_level: 공급자가 매니페스트 파일에 정의한 추적 수준입니다.

  • effective_log_level: 앱에 대해 활성화된 로그 수준입니다.

  • effective_trace_level: 앱에 대해 활성화된 추적 수준입니다.

효과적인 로그 및 추적 수준은 컨슈머가 앱에 대해 활성화하는 이벤트 정의에 따라 결정됩니다.

예를 들어, 공급자가 로그 수준을 OFF로 정의하지만 컨슈머가 ERROR_AND_WARNING 이벤트 정의를 활성화하는 경우 앱은 ERROR_AND_WARNING 이벤트를 수집할 수 있도록 로그 수준을 WARN으로 동적으로 변경합니다. 앱은 WARN보다 짧거나 같은 수준의 정보를 표시하는 이벤트를 내보내고 해당 오류 및 경고 이벤트를 공급자와 공유합니다. log_level의 값은 OFF이고 effective_log_level의 값은 WARN입니다.

반면, 공급자가 로그 수준을 TRACE로 정의하지만 컨슈머가 ERROR_AND_WARNING 이벤트 정의를 활성화하는 경우 앱은 추적보다 짧거나 같은 수준의 정보를 표시하는 이벤트를 내보내지만, 오류 및 경고 메시지만 공급자와 공유됩니다. log_level과 effective_log_level의 값은 모두 TRACE가 됩니다.