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
본문
구문
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);
더 알아보기
- System functions (System Information) — 시스템 함수 모음
- Publishing and accessing container logs — 컨테이너 로그 게시 및 접근