system.session_log 시스템 테이블
system.session_log 시스템 테이블
system.session_log 는 성공·실패한 모든 로그인과 로그아웃 이벤트에 대한 정보를 담고 있어요. 이 테이블은 서버 구성에 session_log 섹션이 있는 경우에만 생성돼요.
출처: 문서
본문
ClickHouse Cloud에서의 조회 — 이 시스템 테이블의 데이터는 ClickHouse Cloud에서 각 노드에 로컬로 저장돼요. 따라서 모든 데이터의 완전한 뷰를 얻으려면 clusterAllReplicas 함수가 필요해요. 자세한 내용은 여기 를 참고하세요.
Description
성공·실패한 모든 로그인과 로그아웃 이벤트에 대한 정보를 포함해요.
가용성(Availability)
system.session_log 는 서버 구성에 session_log 섹션을 포함하는 경우에만 생성돼요. 이 섹션은 기본 구성에서 주석 처리되어 있어서, 활성화하기 전까지는 테이블에 대한 쿼리가 UNKNOWN_TABLE 오류로 실패해요. 예를 들어:
system
session_log
toYYYYMM(event_date)
7500
업그레이드 후 로테이션된 테이블 읽기
interface 열거형에 새 값이 추가되면 디스크에 이미 저장된 테이블은 더 오래된 Enum8 정의를 유지해요. 새 버전을 처음 시작할 때 system.session_log 는 system.session_log_<N> 으로 이름이 변경되고 그 자리에 현재 스키마를 가진 새 테이블이 생성돼요. 로테이션된 테이블의 스키마는 변경되지 않아요.
로그인이 그 버전의 열거형에 없는 인터페이스를 통해 기록된 경우 — 예를 들어 interface 열거형에 ArrowFlight 가 없던 버전에서의 ArrowFlight 로그인 — 로테이션된 테이블에는 그 자체 열거형이 정의하지 않는 원시 값이 들어 있으며, 그 테이블에서 SELECT 하면 Unexpected value 10 in enum 이 발생해요. 이 테이블을 읽으려면 열거형을 확장해 주세요. 이는 데이터를 다시 쓰지 않는 메타데이터 전용 작업이에요:
ALTER TABLE system.session_log_1
MODIFY COLUMN interface Enum8('TCP' = 1, 'HTTP' = 2, 'gRPC' = 3, 'MySQL' = 4, 'PostgreSQL' = 5, 'Local' = 6, 'TCP_Interserver' = 7, 'Prometheus' = 8, 'Background' = 9, 'ArrowFlight' = 10);
이 테이블은 언제든지 안전하게 truncate 하거나 drop 할 수 있어요.
Columns
-
hostname(LowCardinality(String)) — 쿼리를 실행한 서버의 호스트 이름이에요. -
clickhouse_version(LowCardinality(String)) — 이 행을 만든 ClickHouse 서버의 버전이에요. -
system_processor(LowCardinality(String)) — 이 행을 만든 ClickHouse 서버의 CPU 아키텍처예요. -
type(Enum8(‘LoginFailure’ = 0, ‘LoginSuccess’ = 1, ‘Logout’ = 2)) — 로그인/로그아웃 결과예요. 가능한 값: LoginFailure — 로그인 오류. LoginSuccess — 성공적인 로그인. Logout — 시스템에서 로그아웃. -
auth_id(UUID) — 인증 ID로, 사용자가 로그인할 때마다 자동으로 생성되는 UUID예요. -
session_id(String) — 클라이언트가 HTTP 인터페이스를 통해 전달하는 세션 ID예요. -
event_date(Date) — 로그인/로그아웃 날짜예요. -
event_time(DateTime) — 로그인/로그아웃 시간이에요. -
event_time_microseconds(DateTime64(6)) — 마이크로초 정밀도의 로그인/로그아웃 시작 시간이에요. -
user(Nullable(String)) — 사용자 이름이에요. -
profiles(Array(LowCardinality(String))) — 모든 역할 및/또는 사용자에 대해 설정된 프로필 목록이에요. -
roles(Array(LowCardinality(String))) — 프로필이 적용되는 역할 목록이에요. -
settings(Array(Tuple(LowCardinality(String), String))) — 클라이언트가 로그인/로그아웃할 때 변경된 설정이에요. -
client_address(IPv6) — 로그인/로그아웃에 사용된 IP 주소예요. -
client_port(UInt16) — 로그인/로그아웃에 사용된 클라이언트 포트예요. -
interface(Enum8(‘TCP’ = 1, ‘HTTP’ = 2, ‘gRPC’ = 3, ‘MySQL’ = 4, ‘PostgreSQL’ = 5, ‘Local’ = 6, ‘TCP_Interserver’ = 7, ‘Prometheus’ = 8, ‘Background’ = 9, ‘ArrowFlight’ = 10)) — 로그인이 시작된 인터페이스예요. -
client_hostname(String) — clickhouse-client 또는 다른 TCP 클라이언트가 실행되는 클라이언트 머신의 호스트 이름이에요. -
client_name(String) — clickhouse-client 또는 다른 TCP 클라이언트 이름이에요. -
client_revision(UInt32) — clickhouse-client 또는 다른 TCP 클라이언트의 리비전이에요. -
client_version_major(UInt32) — clickhouse-client 또는 다른 TCP 클라이언트의 메이저 버전이에요. -
client_version_minor(UInt32) — clickhouse-client 또는 다른 TCP 클라이언트의 마이너 버전이에요. -
client_version_patch(UInt32) — clickhouse-client 또는 다른 TCP 클라이언트 버전의 패치 구성 요소예요. -
failure_reason(String) — 로그인/로그아웃 실패 이유를 담은 예외 메시지예요. -
certificate_subjects(Array(LowCardinality(String))) — 연결 시 제시된 TLS 클라이언트 인증서의 subject(Common Name과 Subject Alternative Names) 목록으로, ‘CN:…’ / ‘SAN:…’ 형태예요. 인증서가 제시되지 않았으면 비어 있어요. -
certificate_serial(LowCardinality(String)) — TLS 클라이언트 인증서의 일련번호예요. 인증서가 제시되지 않았으면 비어 있어요. -
certificate_issuer(LowCardinality(String)) — TLS 클라이언트 인증서의 발급자(issuer)예요. 인증서가 제시되지 않았으면 비어 있어요. -
certificate_not_before(Nullable(DateTime64(0, ‘UTC’))) — TLS 클라이언트 인증서가 유효한 시작 시각이에요. 인증서가 제시되지 않았으면 NULL이에요. -
certificate_not_after(Nullable(DateTime64(0, ‘UTC’))) — TLS 클라이언트 인증서가 만료되는 시각이에요. 인증서가 제시되지 않았으면 NULL이에요.
Example
Query
SELECT * FROM system.session_log LIMIT 1 FORMAT Vertical;
Response
Row 1:
──────
hostname: clickhouse.eu-central1.internal
type: LoginSuccess
auth_id: 45e6bd83-b4aa-4a23-85e6-bd83b4aa1a23
session_id:
event_date: 2021-10-14
event_time: 2021-10-14 20:33:52
event_time_microseconds: 2021-10-14 20:33:52.104247
user: default
auth_type: PLAINTEXT_PASSWORD
profiles: ['default']
roles: []
settings: [('load_balancing','random'),('max_memory_usage','10000000000')]
client_address: ::ffff:127.0.0.1
client_port: 38490
interface: TCP
client_hostname:
client_name: ClickHouse client
client_revision: 54449
client_version_major: 21
client_version_minor: 10
client_version_patch: 0
failure_reason:
certificate_subjects: []
certificate_serial:
certificate_issuer:
certificate_not_before: ᴺᵁᴸᴸ
certificate_not_after: ᴺᵁᴸᴸ
더 알아보기 (Learn more)
- system.query_log — 실행된 쿼리 정보