原始网页:https://www.cockroachlabs.com/docs/stable/debug-and-error-logs.html


如果需要对集群进行问题定位,用户可以查看包含了节点级别和Range级别的事件信息(例如异常错误)的节点日志。如果CockroachDB崩溃,通常在日志文件里会输出导致异常发生时候堆栈调用的日志信息。

TIPS: 关于系统正在执行的查询的更多细节信息,可以查看SQL审计日志

细节内容

当一个节点执行cockroach命令的时候,它会流式输出关于命令活动的消息。每条消息体描述了活动的内容,消息头包含了元数据,例如消息的严重等级。

在命令生成信息的时候,CockroachDB使用cockroach命令的日志相关的Flag和消息的严重等级来决定存放消息的合适位置。

每个节点日志信息只记录当前节点的内部活动,无法看见集群中其他节点的行为。在问题定位的时候,这意味着用户需要检查问题发生的节点,或是收集集群中所有活动节点的日志

命令

所有cockroach命令支持日志功能,用户需要注意:

严重等级

CockroachDB对于每条消息都会标识了严重等级,使得操作者能够判断是否需要处理:

  1. INFO(最低等级,没有其他必要的操作)
  2. WARNING
  3. ERROR
  4. FATAL(最高等级,需要操作者注意)

各严重等级的默认行为:

命令 INFO消息 WARNING及以上的消息
cockcroach start 写入文件 写入文件
所有其他命令 丢弃 输出到stderr

输出位置

基于命令的Flag和消息的安全等级,CockroachDB会进行如下操作之一:

输出到文件

CockroachDB会将消息输出到日志文件。日志文件以如下的格式命名:

cockroach.[host].[user].[start timestamp in UTC].[process ID].log

例如:

cockroach.richards-mbp.rloveland.2018-03-15T15_24_10Z.024338.log

NOTE: 所有日志文件的时间戳是UTC时间,因为CockroachDB就是为了分布式部署集群而设计的。节点可能位于不同的时区,使用UTC时间能够方便地关联这些节点的日志信息,不管节点位于哪个位置。

属性 cockroach start 所有其他命令
开启方式 默认开启 显式使用--log-dirFlag 声明
默认文件位置 [第一个store的数据文件夹]/logs N/A
变更文件位置 --log-dir=[destination] --log-dir=[destination]
默认严重等级输出阈值 INFO N/A
变更严重等级输出阈值 --log-file-verbosity=[severity level] --log-file-verbosity=[severity level]
关闭方式 --log-dir="" 默认关闭

NOTE: 如果cockroach进程没有对应存储设备的访问权限,则cockroach start命令不会输出日志到日志文件当中,而是输出到stderr

输出到stderr

CockroachDB能够输出消息到stderr,即将消息输出到运行cockroach进程的机器终端,不会存储消息。

属性 cockroach start 所有其他命令
开启方式 显示使用--logtostderrFlag 默认开启
默认严重等级输出阈值 N/A WARNING
变更严重等级输出阈值 --logtostderr=[severity level] --logtostderr=[severity level]
关闭方式 默认关闭 --logtostderr=NONE

NOTE: cockroach start命令默认不会输出任何消息到stderr,除非cockroach进程没有对应存储设备的访问权限。此时将以--logtostderr=INFO的情况输出所有消息到stderr

丢弃消息

严重等级低于--logtostderr--log-file-verbosityFlag指定值的消息,既不会输出到文件,也不会输出到stderr,所以会被丢弃处理。

默认情况下除了cockroach start的其他命令,会丢弃INFO严重等级的消息。

Flags

Flag 简介
--log-dir 启动日志功能,并在指定的目录下记录日志。--log-dir配置为空字符串(--log-dir="")时,则关闭日志功能。
--log-dir-max-size 所有日志文件大小达到一定阈值以后,CockroachDB将删除最老的日志。该Flag使用标准文件大小,例如--log-dir-max-size=1GiB

Default:100MiB
--log-file-max-size 单个日志文件大小达到一定阈值以后,CockroachDB将开启新的日志文件并输出日志到新文件当中。该Flag使用标准文件大小,例如--log-file-max-size=2MiB

Default:10MiB
--log-file-verbosity 只有指定严重级别及以上的日志才输出到日志文件当中,例如--log-file-verbosity=WARNING。需要开启文件的日志输出。

Default:INFO
--logtostderr 将指定严重级别及以上的日志输出到stderr,例如--logtostderr=ERROR

若使用该Flag时不指定配置值(cockroach start --logtostderr),则CockroachDB将所有严重级别的日志输出到stderr

若配置为--logtostderr=NONE,则禁止日志输出到stderr
--no-color 是否对stderr着色,值为truefalse
值为false时,输出到stderr将基于自身严重级别进行着色。

Default: false
--sql-audit-dir (New in v2.0)
该Flag的值非空时,在指定文件夹中记录SQL审计日志。默认情况下,SQL审计日志与其他日志一样输出到同一个文件夹中。详见SQL审计日志

--log-backtrace-at--verbosity--vFlag则提供给CockroachDB开发者,用于内部DEBUG。