描述
包含所有成功和失败的登录及登出事件的信息。
列
hostname(LowCardinality(String)) — 执行该查询的服务器主机名。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)) — 用户名。auth_type(Nullable(Enum8('NO_PASSWORD' = 0, 'PLAINTEXT_PASSWORD' = 1, 'SHA256_PASSWORD' = 2, 'DOUBLE_SHA1_PASSWORD' = 3, 'LDAP' = 4, 'KERBEROS' = 5, 'SSL_CERTIFICATE' = 6, 'BCRYPT_PASSWORD' = 7, 'SSH_KEY' = 8, 'HTTP' = 9, 'JWT' = 10, 'SCRAM_SHA256_PASSWORD' = 11, 'NO_AUTHENTICATION' = 12))) — 身份验证类型。profiles(Array(LowCardinality(String))) — 为所有角色和/或用户设置的 profile 列表。roles(Array(LowCardinality(String))) — 应用该 profile 的角色列表。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))) — 此 connection 上提供的 TLS 客户端证书的 subject 列表 (通用名称和主题备用名称) ,格式为 'CN:…' / 'SAN:…'。如果未提供证书,则为空。certificate_serial(LowCardinality(String)) — TLS 客户端证书的序列号。如果未提供证书,则为空。certificate_issuer(LowCardinality(String)) — TLS 客户端证书的签发方。如果未提供证书,则为空。certificate_not_before(Nullable(DateTime64(0, 'UTC'))) — TLS 客户端证书自该时间起有效。如果未提供证书,则为 NULL。certificate_not_after(Nullable(DateTime64(0, 'UTC'))) — TLS 客户端证书在该时间之后失效。如果未提供证书,则为 NULL。
示例
SELECT * FROM system.session_log LIMIT 1 FORMAT Vertical;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: ᴺᵁᴸᴸ升级后读取轮换表
当向 interface 枚举中添加新值时,磁盘上已有的表仍保留旧的 Enum8 定义。首次启动新版本时,system.session_log 会被重命名为 system.session_log_<N>,并在原位置创建一个采用当前 schema 的新表;轮换表的 schema 不会改变。
如果某次登录使用的 interface 不在写入该记录的版本的枚举中——例如,在 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);