logs
在部署和操作StarRocks时,理解并正确使用日志系统对于故障排除、性能分析和系统调优至关重要。本文详细介绍了StarRocks的Frontend(FE)和Backend(BE或CN)组件的日志文件类型、典型内容、配置方法以及日志滚动和保留策略。
本文档中的信息基于StarRocks版本3.5.x。
FE日志详解
fe.log
主要的FE日志包括启动过程、集群状态变化、DML/DQL请求和调度相关信息。这些日志主要记录FE在运行时的行为。
配置
sys_log_dir: 日志存储目录。默认是${STARROCKS_HOME}/logsys_log_level: 日志级别。默认是INFOsys_log_roll_num: 控制保留的日志文件数量,以防止无限增长消耗过多磁盘空间。默认是10sys_log_roll_interval: 指定轮换频率。默认是DAY,意味着日志每天轮换sys_log_delete_age: 控制旧日志文件在删除前保留的时间。默认是7天sys_log_roll_mode: 日志轮换模式。默认是SIZE-MB-1024,意味着当前日志文件达到1024 MB时将创建新文件。与sys_log_roll_interval结合使用,表示FE日志可以按天或文件大小轮换sys_log_enable_compress: 控制是否启用日志压缩。默认是false,意味着压缩未启用
fe.warn.log
fe.warn.log是用于系统监控和故障排除的重要日志文件:
- 操作监控——监控系统健康状态
- 故障诊断——快速定位关键问题
- 性能分析——识别系统瓶颈和异常
- 安全审计——记录权限和访问错误
与记录所有级别日志的
fe.log相比,fe.warn.log专注于需要注意的警告和错误,帮助运维人员快速识别和解决系统问题。
fe.gc.log
fe.gc.log是StarRocks FE的Java垃圾回收日志,用于监控和分析JVM垃圾回收行为。
需要注意的是,该日志文件使用本机JVM日志轮换机制。例如,可以通过以下配置启用基于文件大小和文件数量的自动轮换:
-Xlog:gc*:${LOG_DIR}/fe.gc.log:time,tags:filecount=7,filesize=100M
fe.out
fe.out是StarRocks FE的标准输出日志文件。它记录了FE进程运行期间打印到标准输出(stdout)和标准错误(stderr)的内容。主要内容包括:
- FE启动期间的控制台输出
- JVM启动信息(例如,堆设置,GC参数)
- FE模块初始化顺序(Catalog, Scheduler, RPC, HTTP Server等)
- 来自stderr的错误堆栈跟踪
- Java异常(Exception/StackTrace)
- 未捕获的错误,如ClassNotFound, NullPointerException等
- 未被 其他日志系统捕获的输出
- 一些使用
System.out.println()或e.printStackTrace()的第三方库
- 一些使用
在以下场景中应检查fe.out:
- FE启动失败:检查
fe.out中的Java异常或无效参数消息。 - FE意外崩溃:查找未捕获的异常堆栈跟踪。
- 日志系统不确定性:如果
fe.out是FE日志目录中唯一有输出的日志文件,则可能是log4j初始化失败或配置不正确。 默认情况下,fe.out不支持自动日志轮换。
fe.profile.log
fe.profile.log的目的是记录详细的查询执行信息以进行性能分析。其主要功能包括:
- 查询性能分析:记录每个查询的详细执行数据,包括:
- 查询ID、用户、数据库、SQL语句
- 执行时间(startTime, endTime, latency)
- 资源使用情况(CPU、内存、扫描行数/大小)
- 执行状态(RUNNING, FINISHED, FAILED, CANCELLED)
- 运行时指标跟踪:通过QueryDetail类捕获关键指标:
scanRows / scanBytes: 扫描的数据量returnRows: 返回的结果行数cpuCostNs: 消耗的CPU时间(纳秒)memCostBytes: 内存使用量spillBytes: 溢出到磁盘的数据量
- 错误诊断:记录失败查询的错误消息和堆栈跟踪
- 资源组监控:跟踪不同资源组的查询执行指标
fe.profile.log以JSON格式存储。
配置
enable_profile_log: 是否启用profile日志profile_log_dir: 存储profile日志的目录profile_log_roll_size_mb: 日志轮换大小(MB)profile_log_roll_num: 控制保留的profile日志文件数量,以防止无限增长和过多磁盘使用。默认是5profile_log_roll_interval: 指定轮换频率。默认是DAY,意味着每天轮换。当满足轮换条件时,保留最新的5个文件,删除旧文件profile_log_delete_age: 控制旧文件在删除前保留的时间。默认是1天
fe.internal.log
fe.internal.log的目的是记录专用于FE(Frontend)内部操作的日志,主要用于系统级审计和调试。其主要功能包括:
- 内部操作审计:将系统发起的内部SQL执行与用户查询分开记录
- 统计跟踪:专门记录与统计收集相关的操作
- 调试支持:提供详细日志以支持内部操作问题的故障排除 日志记录包括以下条目:
- 统计模块(internal.statistic)
- 核心系统模块(internal.base)
此日志特别有助于分析StarRocks的内部统计收集过程和诊断与内部操作相关的问题。