SYSTEM$GET_SERVICE_LOGS

SYSTEM$GET_SERVICE_LOGS (서비스 컨테이너 로그 조회)

Snowpark Container Services 서비스 컨테이너에서 로컬 로그를 검색해요.

기능 상태 — 일반 공급(Generally Available)

Snowpark Container Services는 일부 예외를 제외하고 AWS, Microsoft Azure, Google Cloud Platform 상용 리전의 계정에서 사용할 수 있어요. 자세한 내용은 Available regions and considerations를 참고해요.

참조: Publishing and accessing container logs

출처: Snowflake SQL Reference - SYSTEM$GET_SERVICE_LOGS

본문

구문

SYSTEM$GET_SERVICE_LOGS( <service_name>, <instance_id>, <container_name>
   [, <number_of_most_recent_lines> ]
   [, <retrieve_previous_logs> ])

인자

필수:

service_name

서비스 이름이에요.

instance_id

0부터 시작하는 서비스 인스턴스의 ID예요.

container_name

서비스 사양 파일에 지정된 컨테이너 이름이에요.

선택:

number_of_most_recent_lines

검색할 마지막 로그 줄 수예요.

기본값: 가장 최근 로그 줄 최대 100KB까지.

retrieve_previous_logs

TRUE면 함수는 이전에 종료된 컨테이너에서 로그를 검색해요. 이 파라미터는 컨테이너가 적어도 한 번 재시작된 경우에만 지정할 수 있어요.

기본값: false(현재 실행 중인 컨테이너에서 로그를 검색함).

반환 값

지정된 서비스 컨테이너의 새 줄로 구분된 로그 항목들로 구성된 문자열을 반환해요.

사용상 주의사항

  • 컨테이너 로그에 접근하려면 현재 역할이 해당 서비스에 대해 MONITOR 권한을 가져야 해요.
  • 함수는 컨테이너 로그를 문자열로 반환해요. SPLIT_TO_TABLE 함수를 사용해 새 줄로 구분된 각 항목에 대해 한 행씩 포함하는 테이블로 문자열을 변환할 수 있어요.

예시

현재 컨테이너에서 로그 검색

다음 문은 "echo" 컨테이너에서 실행 중인 "echo_service" 서비스의 인스턴스 0에서 마지막 10개 로그 줄을 검색해요:

SELECT SYSTEM$GET_SERVICE_LOGS('TUTORIAL_DB.data_schema.echo_service', 0, 'echo', 10);

서비스를 시작하고 컨테이너에서 서비스 로그를 얻기 위해 위 명령을 실행하려면 Tutorial 1: Create a Snowpark Container Services Service를 따를 수도 있어요.

이 함수는 새 줄로 구분된 로그 항목들로 구성된 문자열을 반환해요. SPLIT_TO_TABLE 함수와 TABLE() 키워드를 사용해 이 문자열을 테이블로 변환할 수 있어요(Table functions 참고).

SELECT value AS log_line
  FROM TABLE(
    SPLIT_TO_TABLE(
      SYSTEM$GET_SERVICE_LOGS('echo_service', 0, 'echo'),
      '\n'
    )
  )

특정 로그 항목만 검색하도록 필터를 더 적용할 수 있어요. 다음 SELECT 문의 WHERE 절은 CONTAINS 함수를 사용해 특정 날짜 문자열을 포함하는 로그 줄만 검색해요:

SELECT value AS log_line
  FROM TABLE(
   SPLIT_TO_TABLE(
    SYSTEM$GET_SERVICE_LOGS('echo_service', '0', 'echo'),
    '\n'
   )
  )
  WHERE (CONTAINS(log_line, '06/Jun/2023 02:44:'))
  ORDER BY log_line;

다음 샘플 출력은 검색된 세 개의 로그 항목 행을 보여줘요:

+-----------------------------------------------------------------------------------------------------+
| LOG_LINE                                                                                            |
|-----------------------------------------------------------------------------------------------------|
| 10.16.9.193 - - [06/Jun/2023 02:44:04] "GET /healthcheck HTTP/1.1" 200 -                            |
| 10.16.9.193 - - [06/Jun/2023 02:44:09] "GET /healthcheck HTTP/1.1" 200 -                            |
| 10.16.9.193 - - [06/Jun/2023 02:44:14] "GET /healthcheck HTTP/1.1" 200 -                            |
+-----------------------------------------------------------------------------------------------------+

이전에 종료된 컨테이너에서 로그 검색

다음 문은 "echo" 컨테이너에서 실행 중인 "echo_service" 서비스의 이전에 종료된 인스턴스에서 마지막 10개 로그 줄을 검색해요. 여기서 컨테이너가 적어도 한 번 재시작되었다고 가정해요:

SELECT SYSTEM$GET_SERVICE_LOGS('TUTORIAL_DB.data_schema.echo_service', 0, 'echo', 10, true);

더 알아보기