5.Observer的日志

Observer的日志

日志

OBServer 的日志存放在 observer 的安装目录的 log 目录下面,分为四种日志 observer.log、rootservice.log、 election.log 和 trace.log,分别对应 OBServer 日志、RS 日志、选举日志和全链路追踪日志。

对于每一种日志,如 observer.log,按照文件名大致分为以下几种:

  • observer.log
  • observer.log.20210901123456
  • observer.log.wf
  • observer.log.wf.20210901123456

当 observer.log 达到 256M 时,会将其 rename 为第二种日志,后面的数字为时间戳。wf 日志的含义见下文 enable_syslog_wf 配置项。

日志格式

  • 日志格式
    [时间] 日志级别 [所属模块] 文件:行号 [线程 ID] [0] [trace_id] [lt] [丢弃日志数量]

  • 日志参数信息
    image

  • 日志示例

[2021-09-01 11:31:18.605433] INFO  [STORAGE] ob_pg_sstable_garbage_collector.cpp:170 [38715][0][Y0-0000000000000000-0-0] [lt=15] [dc=0] do one gc free sstable by queue(ret=0, free sstable cnt=0)
  • 日志级别
    从低到高有 7 种:DEBUG、TRACE、WDIAG、EDIAG、INFO、WARN、ERROR。
    其中 ERROR 日志比较特殊,会将打日志时所在的堆栈打印出来(需要通过符号表解析)。
    开启 DEBUG 日志将耗费大量资源,在较新版本中,DEBUG 日志在 Release 编译下会自动去掉,即使开启也无法生效。

  • 所属模块
    有很多种,可以大致区分日志所属模块。

  • 线程 ID
    打印日志所在的线程的 ID,可以用于跟踪对应线程的行为,对排查线程 Hang 住、超时等问题比较有用。

  • TRACE_ID
    OceanBase 数据库内部的 SQL 级别的 ID,默认为 Y0-0000000000000000-0-0,可以通过 trace_id 来找到一条 SQL 的执行过程,是排查问题的重要手段。

  • 日志压缩
    通过配置项来配置系统日志的压缩,包括设置压缩算法、磁盘空间上限和每种日志不压缩的文件数量。有关日志压缩的详细信息请参见 日志压缩。

  • 日志解压
    有以下几种方式可以查看压缩后的日志文件:解压后查看、直接查看压缩文件和使用 obdiag 工具进行搜索。有关日志压缩的详细信息请参见 日志解压。

相关配置项

以下所有配置项均为集群级别,需要在系统租户下使用。可以通过以下方法修改。

ALTER SYSTEM SET enable_syslog_recycle = False;

enable_syslog_recycle
用于设置是否打开记录  OBServer节点启动前的旧日志的开关,默认为 False。与 max_syslog_file_count 配合使用,决定回收逻辑是否考虑旧的日志文件。

开启后将会自动删除多余的日志,有关 enable_syslog_recycle 的详细信息请参见 enable_syslog_recycle。

enable_syslog_wf
是否启用 wf 日志,默认为 True。

开启后会每种日志中 WARN 级别以上的日志复制到 wf 日志中,如 observer.log.wf。

enable_async_syslog
是否启用异步写日志功能,默认为 True。

关闭后将使用同步方式写日志,可以保证 observer 宕机前写完所有日志,但性能较差,不建议关闭。

max_syslog_file_count
每种日志的最大日志数量,默认为 0。当且仅当该配置项大于 0 且该值大于等于 syslog_file_uncompressed_count 值,同时 enable_syslog_recycle 为 True 时才生效。

尽管该配置项的范围是 [0, +∞),但 observer 源码中约束了该值不能超过 MAX_LOG_FILE_COUNT,即 10240,超过时依然可以设置成功但实际生效值为 MAX_LOG_FILE_COUNT。

syslog_io_bandwidth_limit
日志限流量,默认为 30M。
当日志打印速度超过限制时,将打印以下信息。
REACH SYSLOG RATE LIMIT

syslog_level
打印的日志的最低级别,日志级别见上文,默认为 WDIAG。

syslog_disk_size
系统日志的磁盘空间上限,默认值为 0M。日志可用空间由 syslog_disk_size 和实际磁盘空间共同决定,为两者中的最小值。当剩余可用磁盘空间少于 2GB 时,最旧的部分日志文件将会被删除。此外如果开启了日志压缩功能,当剩余可用磁盘空间少于 4GB 时,就会开始压缩日志文件。

syslog_compress_func
设置系统日志的压缩算法,默认值为 none,表示关闭压缩功能。可选的压缩算法有 zstd_1.0 和 zstd_1.3.8 算法,设置可用的算法表示开启压缩功能。
压缩功能只会压缩以 .log.{timestamp}为后缀的日志,timestamp 表示创建文件时的时间戳,带有 wf 后缀的文件和没有时间戳的文件则不压缩。

syslog_file_uncompressed_count
设置系统日志不压缩的文件数量。只在 syslog_compress_func 不为 none 时生效,每一种系统日志文件单独计算数量,不包括没有时间戳的日志文件。配置项 syslog_compress_func 与 配置项 syslog_file_uncompressed_count、syslog_disk_size、max_syslog_file_count 之间的关系:

syslog_compress_func =none:
syslog_file_uncompressed_count 取值无效;
syslog_disk_size 和 max_syslog_file_count 共同控制日志文件上限,同时满足数量和大小限制。
syslog_compress_func !=none:

max_syslog_file_count 取值无效;
日志个数超过 syslog_file_uncompressed_count 取值的部分进行压缩,整体接近 syslog_disk_size 取值时开始删除最旧的日志。
posted @ 2026-05-11 14:53  数据库小白(专注)  阅读(10)  评论(0)    收藏  举报