로깅, 메트릭 및 추적을 위한 수준 설정하기¶
이벤트 테이블에서 캡처된 로그, 추적 또는 메트릭 원격 분석 데이터에 대한 임계값 수준을 설정할 수 있습니다.
각 유형의 원격 분석 데이터는 해당 목적에 맞는 고유한 수준 집합을 지원합니다. 이러한 수준은 각각에 대해 Snowflake가 제공하는 매개 변수 를 사용하여 설정할 수 있습니다. 수준 매개 변수를 단순화한 방식으로 나타내는 Snowsight 를 사용하여 일부 수준을 설정할 수도 있습니다.
각 유형의 원격 분석 데이터에 대해 다음을 수행할 수 있습니다.
각 유형의 원격 분석 데이터에 맞는 수준을 설정합니다.
재정의되지 않는 한 적용되는 각 시스템 전체 수준을 설정합니다.
세션 또는 특정 오브젝트(예: 프로시저 및 UDFs)에 대한 수준을 설정하여 시스템 전체 수준을 재정의할 수 있습니다.
수준은 세션 매개 변수 및 오브젝트 매개 변수 모두로 표현됩니다.
참고
처리기 코드를 사용하면 처리기가 Python으로 작성된 경우 이 항목에 설명된 대로 SQL로 설정한 로그 수준을 재정의할 수 있습니다. 자세한 내용은 Python으로 로그 임계값 수준 재정의하기 섹션을 참조하십시오.
범위¶
각 유형의 원격 분석 데이터는 요구 사항을 가장 잘 충족하는 범위에 적용되도록 수준을 설정할 수 있습니다. 많은 경우, :ref:`label-telemetry_level_effective`에 설명된 바와 같이 더 작은 범위에서 수준을 설정하여 더 큰 범위에 설정된 수준을 재정의할 수 있습니다. 예를 들어, 계정 범위에서 기본 수준 세트를 설정하고 나서 특정 데이터베이스의 오브젝트에 서로 다른 수준을 설정할 수 있습니다.
다음과 같은 범위에서 이러한 각 수준을 설정할 수 있습니다.
- 계정:
계정에 설정된 수준은 오브젝트 또는 세션 수준에서 설정하여 재정의된 경우를 제외하고 계정의 모든 곳에 적용됩니다.
- 오브젝트:
다음과 같은 종류의 오브젝트에서 원격 분석 수준을 설정할 수 있습니다.
프로시저와 함수를 포함하는 데이터베이스 또는 스키마
저장 프로시저
사용자 정의 함수(UDF) 또는 사용자 정의 테이블 함수(UDTF)
예를 들어 특정 UDF에 대한 로그 수준을 설정하려면 ALTER FUNCTION 을 사용하여 해당 UDF의 LOG_LEVEL 매개 변수를 설정하십시오. 또 다른 예로, 데이터베이스의 모든 함수와 프로시저에 대한 기본 로그 수준을 설정하려면 ALTER DATABASE 를 사용하여 해당 데이터베이스에 대한 LOG_LEVEL 매개 변수를 설정하십시오.
참고
Streamlit 오브젝트에서는 수준을 설정할 수 없습니다. 대신 오브젝트가 포함된 데이터베이스나 스키마에서 수준을 설정하세요.
- 세션:
현재 세션에서 이루어진 함수 및 프로시저 호출의 원격 분석 수준을 설정할 수 있습니다.
수준¶
각 종류의 원격 분석 데이터에 다음과 같은 수준을 설정할 수 있습니다.
- 로깅:
수준을 설정하면 해당 수준 이상의 심각한 수준에 있는 데이터만 이벤트 테이블에 캡처되고 |sf-web-interface|에 표시됩니다. 예를 들어, LOG_LEVEL 매개 변수를 WARN으로 설정하면 WARN, ERROR, FATAL 수준의 메시지가 이벤트 테이블에 캡처됩니다.
LOG_LEVEL 매개 변수를 설정합니다.
- 메트릭:
현재는 모든 메트릭 데이터를 캡처하거나 아무것도 캡처하지 않을 수 있습니다.
METRIC_LEVEL 매개 변수를 설정합니다.
- 추적:
다음과 같은 특성을 지정할 수 있습니다.
이벤트 테이블에 저장되는 추적 이벤트 데이터의 범위
TRACE_LEVEL 매개 변수를 설정합니다.
추적된 SQL 문에서 SQL 텍스트를 캡처할지 여부
이는 SQL_TRACE_QUERY_TEXT 매개 변수에 의해 결정됩니다. 자세한 내용은 SQL 문 추적 섹션을 참조하십시오.
필요한 권한¶
오브젝트에 수준을 설정하려면 이 섹션에 설명된 권한이 부여되거나 상속되는 역할을 사용해야 합니다.
예를 들어, 다음 예제의 코드는 central_log_admin
역할을 이용하는 사용자에게 계정의 로그 수준을 설정하는 데 필요한 권한을 부여합니다.
GRANT MODIFY LOG LEVEL ON ACCOUNT TO ROLE central_log_admin;
권한에 대한 자세한 내용은 액세스 제어 권한 섹션을 참조하십시오.
수정할 수준 |
설정할 매개 변수 |
필요한 권한 |
---|---|---|
로그 수준 |
계정
오브젝트
세션
|
|
메트릭 수준 |
계정
오브젝트
세션
|
|
추적 수준 |
계정
오브젝트
세션
|
|
SQL 추적의 SQL 텍스트 |
계정
|
원격 분석 수준 설정하기¶
SQL 또는 경우에 따라 |sf-web-interface|를 사용하여 원격 분석 수준을 설정할 수 있습니다. 많은 경우, :ref:`label-telemetry_level_effective`에 설명된 바와 같이 더 작은 범위에서 수준을 설정하여 더 큰 범위에 설정된 수준을 재정의할 수 있습니다.
시작하기 전에 필요한 :ref:`권한을 보유한 역할<label-telemetry_level_privileges>`에 액세스할 수 있는지 확인합니다.
Snowsight 를 사용하여 계정 수준에서 원격 분석 수준을 설정할 수 있습니다.
Snowsight 에 로그인합니다.
탐색 메뉴에서 Monitoring » Traces and Logs 를 선택합니다.
Traces & Logs 페이지에서 Set Event Level 을 선택합니다.
:ui:`Set logging & tracing for`의 경우, 다음 중 하나에서 원하는 범위를 선택합니다.
Account
데이터베이스 및 스키마(선택 사항)
조정할 원격 분석 데이터의 수준을 선택합니다.
All Events
모든 종류의 원격 분석 데이터 수집을 켜려면 On, 모든 종류의 데이터 수집을 켜려면 Off.
Traces
추적 데이터 컬렉션을 ``ALWAYS``로 설정하려면 On, 추적 데이터 컬렉션을 ``OFF``로 설정하려면 Off. 수준에 대한 자세한 내용은 TRACE_LEVEL 섹션을 참조하세요.
Logs
로그 데이터 컬렉션을 ``INFO``로 설정하려면 On. 수준에 대한 자세한 내용은 LOG_LEVEL 섹션을 참조하세요.
Metrics
추적 데이터 컬렉션을 ``ALL``로 설정하려면 On, 추적 데이터 컬렉션을 ``NONE``로 설정하려면 Off. 수준에 대한 자세한 내용은 METRIC_LEVEL 섹션을 참조하세요.
SQL을 사용하여 계정과 오브젝트(예: 데이터베이스, 함수, 프로시저)의 원격 분석 수준을 설정할 수 있습니다.
수집할 원격 분석 데이터에 따라 ALTER ACCOUNT 명령을 사용하여 적절한 매개 변수를 설정합니다.
다음 예제에서는 계정의 로그 수준을 ERROR로 설정합니다.
-- Set the log level on the account
ALTER ACCOUNT SET LOG_LEVEL = ERROR;
오브젝트에서 LOG_LEVEL 매개 변수를 설정하려면 ALTER <오브젝트> 명령을 사용합니다.
다음 예제에서는 데이터베이스 db
의 모든 함수와 프로시저에 대해 로그 수준을 ERROR로 설정합니다. 이 예제에서는 UDF f1(int)
에 대해 이 수준을 WARN으로 재정의합니다.
USE ROLE central_log_admin;
-- Set the log levels on a database and UDF.
ALTER DATABASE db1 SET LOG_LEVEL = ERROR;
ALTER FUNCTION f1(int) SET LOG_LEVEL = WARN;
-- Set the log levels on a Snowpark Container Services service.
ALTER SERVICE test_service SET LOG_LEVEL = ERROR;
LOG LEVEL이 다양한 오브젝트에 설정된 경우 Snowflake가 유효 로그 수준을 결정하는 자세한 방법은 Snowflake에서 효과의 수준을 결정하는 방법 섹션을 참조하십시오.
현재 세션에 대한 LOG_LEVEL 매개 변수를 설정하려면 ALTER SESSION 명령을 사용합니다.
USE ROLE developer_debugging;
-- Set the logging level to DEBUG for the current session.
ALTER SESSION SET LOG_LEVEL = DEBUG;
현재 세션과 해당 세션에서 호출되는 함수 및 프로시저에 대해 레벨 매개 변수가 다른 레벨로 설정되어 있는 경우 Snowflake는 사용할 유효 수준을 결정합니다. Snowflake에서 효과의 수준을 결정하는 방법 섹션을 참조하십시오.
Snowflake에서 효과의 수준을 결정하는 방법¶
수준의 계층 구조:ref:`<label-object-parameters> 를 사용하여 (`오브젝트 :ref:`<label-session-parameters> 및 `세션 :ref:`<label-parameter_hierarchy_and_types> 모두에 대한) ` 매개 변수를 재정의할 수 있습니다.
예를 들어, 계정에 대해 1개의 값을 설정한 다음 계층 구조에서 더 낮은 오브젝트에 대한 수준을 설정하여 해당 수준을 재정의할 수 있습니다.
다음은 세션 및 오브젝트 수준 매개 변수의 계층 구조에 대한 설명입니다.
세션 매개 변수 의 경우 계층 구조는 계정 » 사용자 » 세션입니다.
이는 계정에 대한 매개 변수를 설정하고, 사용자에 대한 계정 수준 매개 변수를 재정의하며, 현재 세션에 대한 사용자 수준 매개 변수를 재정의할 수 있다는 뜻입니다.
오브젝트 매개 변수 의 경우 계층 구조는 계정 » 데이터베이스 » 스키마 » 오브젝트입니다.
이는 계정에 대한 매개 변수를 설정하고, 데이터베이스 또는 스키마에 대한 계정 수준 매개 변수를 재정의하며, 특정 저장 프로시저에 대한 데이터베이스 수준 또는 스키마 수준의 매개 변수와 해당 데이터베이스 또는 스키마의 UDF를 재정의할 수 있다는 뜻입니다.
예를 들어 함수의 LOG_LEVEL은 함수를 포함한 계정의 LOG_LEVEL을 재정의합니다. 계정의 LOG_LEVEL이 FATAL이고 계정에 있는 Java UDF의 LOG_LEVEL이 INFO인 경우 유효 LOG_LEVEL(계정이 아닌 함수의 수준)은 INFO입니다.
ALTER ACCOUNT SET LOG_LEVEL = FATAL;
ALTER FUNCTION MyJavaUDF SET LOG_LEVEL = INFO;
-- The INFO log level is used because the FUNCTION MYJAVAUDF
-- is lower than the ACCOUNT in the hierarchy.
세션 및 오브젝트 매개 변수 계층 구조 모두에 수준이 설정되어 있는 경우 가장 자세한 수준이 사용됩니다.
로그 수준에 대해, 다음 테이블에는 세션과 오브젝트에 설정된 매개 변수가 사용되는 로그 수준에 미치는 영향에 대한 예가 나와 있습니다.
세션의 값
오브젝트, 스키마, 데이터베이스 또는 계정의 값
사용된 로그 수준
(설정되지 않음)
WARN
WARN
DEBUG
(설정되지 않음)
DEBUG
WARN
ERROR
WARN
INFO
DEBUG
DEBUG
(설정되지 않음)
(설정되지 않음)
OFF
메트릭 수준의 경우 —
ALL
은NONE
을 재정의합니다.추적 수준의 경우 —
ALWAYS
는ON_EVENT
및OFF
를 재정의하고,ON_EVENT
는OFF
를 재정의합니다.