FE 配置 - 日志、服务器和元数据
FE 参数分为动态参数和静态参数。
-
动态参数可通过 SQL 命令进行在线配置和调整,方便快捷。需要注意通过 SQL 命令所做的动态设置在重启 FE 后会失效。如果想让设置长期生效,建议同时修改 fe.conf 文件。
-
静态参数必须在 FE 配置文件 fe.conf 中进行配置和调整。调 整完成后,需要重启 FE 使变更生效。
参数是否为动态参数可通过 ADMIN SHOW CONFIG 返回结果中的 IsMutable 列查看。TRUE 表示动态参数。
静态和动态参数均可通过 fe.conf 文件进行修改。
查看 FE 配置项
FE 启动后,您可以在 MySQL 客户端运行 ADMIN SHOW FRONTEND CONFIG 命令查看参数配置。如果要查询特定参数的配置,请运行以下命令:
ADMIN SHOW FRONTEND CONFIG [LIKE "pattern"];
有关返回字段的详细说明,请参阅 ADMIN SHOW CONFIG。
备注
您必须具有管理员权限才能运行集群管理相关命令。
配置 FE 参数
配置 FE 动态参数
您可以使用 ADMIN SET FRONTEND CONFIG 命令配置或修改 FE 动态参数。
ADMIN SET FRONTEND CONFIG ("key" = "value");
备注
动态设置的配置项,在 FE 重启之后会恢复成 fe.conf 文件中的配置或者默认值。如果需要让配置长期生效,建议设置完之后同时修改 fe.conf 文件,防止重启后修改失效。
配置 FE 静态参数
备注
FE 静态参数不支持在线修改,您需要在 fe.conf 中修改并重启 FE 以使修改生效。
当前主题包含以下类型的 FE 配置:
日志
audit_log_delete_age
- 默认值: 30d
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 审计日志文件的保留期限。默认值
30d指定每个审计日志文件可以保留 30 天。StarRocks 会检查每个审计日志文件,并删除 30 天前生成的那些。 - 引入版本: -
audit_log_dir
- 默认值:
StarRocksFE.STARROCKS_HOME_DIR+ "/log" - 类型: String
- 单位: -
- 是否可变: No
- 描述: 存储审计日志文件的目录。
- 引入版本: -
audit_log_enable_compress
- 默认值: false
- 类型: Boolean
- 单位: N/A
- 是否可变: No
- 描述: 当为 true 时,生成的 Log4j2 配置会将 ".gz" 后缀附加到轮转的审计日志文件名 (fe.audit.log.*) 中,以便 Log4j2 在轮转时生成压缩的 (.gz) 归档审计日志文件。此设置在 FE 启动期间在 Log4jConfig.initLogging 中读取,并应用于审计日志的 RollingFile appender;它仅影响轮转/归档文件,而不影响活动审计日志。由于该值在启动时初始化,因此更改它需要重启 FE 才能生效。与审计日志轮转设置 (
audit_log_dir、audit_log_roll_interval、audit_roll_maxsize、audit_log_roll_num) 一起使用。 - 引入版本: 3.2.12
audit_log_json_format
- 默认值: false
- 类型: Boolean
- 单位: N/A
- 是否可变: Yes
- 描述: 当为 true 时,FE 审计事件将以结构化 JSON (Jackson ObjectMapper 序列化带注解的 AuditEvent 字段的 Map) 的形式发出,而不是默认的管道分隔的 "key=value" 字符串。此设置会影响 AuditLogBuilder 处理的所有内置审计接收器:连接审计、查询审计、大查询审计(当事件符合条件时,大查询阈值字段会添加到 JSON 中)和慢审计输出。用于大查询阈值的字段和 "features" 字段会进行特殊处理(从普通审计条目中排除;根据适用情况包含在大查询或功能日志中)。启用此功能可使日志可供日志收集器或 SIEM 机器解析;请注意,它会更改日志格式,可能需要更新任何期望旧版管道分隔格式的现有解析器。
- 引入版本: 3.2.7
audit_log_modules
- 默认值:
slow_query, query - 类型: String[]
- 单位: -
- 是否可变: No
- 描述: StarRocks 为其生成审计日志条目的模块。默认情况下,StarRocks 为
slow_query模块和query模块生成审计日志。connection模块从 v3.0 版本开始支持。模块名称用逗号 (,) 和空格分隔。 - 引入版本: -
audit_log_roll_interval
- 默认值: DAY
- 类型: String
- 单位: -
- 是否可变: No
- 描述: StarRocks 轮转审计日志条目的时间间隔。有效值:
DAY和HOUR。- 如果此参数设置为
DAY,则在审计日志文件名称中添加yyyyMMdd格式的后缀。 - 如果此参数设置为
HOUR,则在审计日志文件名称中添加yyyyMMddHH格式的后缀。
- 如果此参数设置为
- 引入版本: -
audit_log_roll_num
- 默认值: 90
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: 在
audit_log_roll_interval参数指定的每个保留期内,可以保留的审计日志文件的最大数量。 - 引入版本: -
bdbje_log_level
- 默认值: INFO
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 控制 StarRocks 中 Berkeley DB Java Edition (BDB JE) 使用的日志级别。在 BDB 环境初始化 BDBEnvironment.initConfigs() 期间,此值将应用于
com.sleepycat.je包的 Java 日志记录器和 BDB JE 环境文件日志记录级别 (EnvironmentConfig.FILE_LOGGING_LEVEL)。接受标准的 java.util.logging.Level 名称,例如 SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST、ALL、OFF。设置为 ALL 可启用所有日志消息。增加详细程度将提高日志量,并可能影响磁盘 I/O 和性能;该值在 BDB 环境初始化时读取,因此仅在环境(重新)初始化后生效。 - 引入版本: v3.2.0
big_query_log_delete_age
- 默认值: 7d
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 控制 FE 大查询日志文件 (
fe.big_query.log.*) 在自动删除前的保留时间。该值作为 IfLastModified age 传递给 Log4j 的删除策略 — 任何最后修改时间早于此值的轮转大查询日志都将被删除。支持的后缀包括d(天)、h(小时)、m(分钟)和s(秒)。示例:7d(7 天)、10h(10 小时)、60m(60 分钟)和120s(120 秒)。此项与big_query_log_roll_interval和big_query_log_roll_num共同决定哪些文件被保留或清除。 - 引入版本: v3.2.0
big_query_log_dir
- 默认值:
Config.STARROCKS_HOME_DIR + "/log" - 类型: String
- 单位: -
- 是否可变: No
- 描述: FE 写入大查询 dump 日志 (
fe.big_query.log.*) 的目录。Log4j 配置使用此路径为fe.big_query.log及其轮转文件创建 RollingFile appender。轮转和保留由big_query_log_roll_interval(基于时间的后缀)、log_roll_size_mb(大小触发器)、big_query_log_roll_num(最大文件数)和big_query_log_delete_age(基于年龄的删除)控制。对于超过用户定义阈值(例如big_query_log_cpu_second_threshold、big_query_log_scan_rows_threshold或big_query_log_scan_bytes_threshold)的查询,会记录大查询记录。使用big_query_log_modules控制哪些模块记录到此文件中。 - 引入版本: v3.2.0
big_query_log_modules
- 默认值:
{"query"} - 类型: String[]
- 单位: -
- 是否可变: No
- 描述: 启用每个模块大查询日志记录的模块名称后缀列表。典型值是逻辑组件名称。例如,默认的
query会生成big_query.query。 - 引入版本: v3.2.0
big_query_log_roll_interval
- 默认值:
"DAY" - 类型: String
- 单位: -
- 是否可变: No
- 描述: 指定用于构建
big_query日志 appender 滚动文件名称日期部分的时间间隔。有效值(不区分大小写)为DAY(默认)和HOUR。DAY生成每日模式 ("%d{yyyyMMdd}"),HOUR生成每小时模式 ("%d{yyyyMMddHH}")。该值与基于大小的轮转 (big_query_roll_maxsize) 和基于索引的轮转 (big_query_log_roll_num) 结合,形成 RollingFile filePattern。无效值会导致日志配置生成失败 (IOException),并可能阻止日志初始化或重新配置。与big_query_log_dir、big_query_roll_maxsize、big_query_log_roll_num和big_query_log_delete_age一起使用。 - 引入版本: v3.2.0
big_query_log_roll_num
- 默认值: 10
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: 每个
big_query_log_roll_interval保留的轮转 FE 大查询日志文件的最大数量。此值绑定到 RollingFile appender 的 DefaultRolloverStrategymax属性,用于fe.big_query.log;当日志轮转时(按时间或按log_roll_size_mb),StarRocks 最多保留big_query_log_roll_num个索引文件(filePattern 使用时间后缀加索引)。超过此数量的文件可能会被轮转删除,big_query_log_delete_age还可以根据最后修改时间删除文件。 - 引入版本: v3.2.0
dump_log_delete_age
- 默认值: 7d
- 类型: String
- 单位: -
- 是否可变: No
- 描述: dump 日志文件的保留期限。默认值
7d指定每个 dump 日志文件可以保留 7 天。StarRocks 会检查每个 dump 日志文件,并删除 7 天前生成的那些。 - 引入版本: -
dump_log_dir
- 默认值:
StarRocksFE.STARROCKS_HOME_DIR+ "/log" - 类型: String
- 单位: -
- 是否可变: No
- 描述: 存储 dump 日志文件的目录。
- 引入版本: -
dump_log_modules
- 默认值: query
- 类型: String[]
- 单位: -
- 是否可变: No
- 描述: StarRocks 为其生成 dump 日志条目的模块。默认情况下,StarRocks 为 query 模块生成 dump 日志。模块名称用逗号 (,) 和空格分隔。
- 引入版本: -
dump_log_roll_interval
- 默认值: DAY
- 类型: String
- 单位: -
- 是否可变: No
- 描述: StarRocks 轮转 dump 日志条目的时间间隔。有效值:
DAY和HOUR。- 如果此参数设置为
DAY,则在 dump 日志文件名称中添加yyyyMMdd格式的后缀。 - 如果此参数设置为
HOUR,则在 dump 日志文件名称中添加yyyyMMddHH格式的后缀。
- 如果此参数设置为
- 引入版本: -
dump_log_roll_num
- 默认值: 10
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: 在
dump_log_roll_interval参数指定的每个保留期内,可以保留的 dump 日志文件的最大数量。 - 引入版本: -
edit_log_write_slow_log_threshold_ms
- 默认值: 2000
- 类型: Int
- 单位: 毫秒
- 是否可变: Yes
- 描述: JournalWriter 用于检测和记录慢速 edit-log 批量写入的阈值(单位为毫秒)。批量提交后,如果批量持续时间超过此值,JournalWriter 将发出 WARN 日志,其中包含批量大小、持续时间和当前 Journal 队列大小(以每约 2 秒一次的速率限制)。此设置仅控制 FE Leader 上潜在 IO 或复制延迟的日志记录/警报;它不改变提交或轮转行为(请参阅
edit_log_roll_num和与提交相关的设置)。无论此阈值如何,指标更新仍会发生。 - 引入版本: v3.2.3
enable_audit_sql
- 默认值: true
- 类型: Boolean
- 单位: -
- 是否可变: No
- 描述: 当此项设置为
true时,FE 审计子系统会将 ConnectProcessor 处理的 SQL 语句文本记录到 FE 审计日志 (fe.audit.log) 中。存储的语句遵循其他控制:加密语句将被 redacted (AuditEncryptionChecker),如果设置了enable_sql_desensitize_in_log,敏感凭据可能会被 redacted 或脱敏,并且 digest 记录由enable_sql_digest控制。当设置为false时,ConnectProcessor 会在审计事件中将语句文本替换为 "?" — 其他审计字段(用户、主机、持续时间、状态、通过qe_slow_log_ms进行的慢查询检测以及指标)仍会记录。启用 SQL 审计会增加取证和故障排除的可见性,但可能会暴露敏感的 SQL 内容并增加日志量和 I/O;禁用它会提高隐私性,但代价是审计日志中会丢失完整的语句可见性。 - 引入版本: -
enable_profile_log
- 默认值: true
- 类型: Boolean
- 单位: -
- 是否可变: No
- 描述: 是否启用 profile 日志。启用此功能后,FE 会将每个查询的 profile 日志(由
ProfileManager生成的序列化queryDetailJSON)写入 profile 日志接收器。此日志记录仅在enable_collect_query_detail_info也启用时执行;当enable_profile_log_compress启用时,JSON 可能会在日志记录前进行 gzip 压缩。Profile 日志文件由profile_log_dir、profile_log_roll_num、profile_log_roll_interval管理,并根据profile_log_delete_age进行轮转/删除(支持7d、10h、60m、120s等格式)。禁用此功能会停止写入 profile 日志(减少磁盘 I/O、压缩 CPU 和存储使用)。 - 引入版本: v3.2.5
enable_qe_slow_log
- 默认值: true
- 类型: Boolean
- 单位: N/A
- 是否可变: Yes
- 描述: 当启用时,FE 内置审计插件 (AuditLogBuilder) 将把其测量执行时间("Time" 字段)超过
qe_slow_log_ms配置阈值的查询事件写入慢查询审计日志 (AuditLog.getSlowAudit)。如果禁用,这些慢查询条目将被抑制(常规查询和连接审计日志不受影响)。慢审计条目遵循全局audit_log_json_format设置(JSON 与纯字符串)。使用此标志可以独立于常规审计日志记录控制慢查询审计生成量;当qe_slow_log_ms较低或工作负载产生许多长时间运行的查询时,关闭它可能会减少日志 I/O。 - 引入版本: 3.2.11
enable_sql_desensitize_in_log
- 默认值: false
- 类型: Boolean
- 单位: -
- 是否可变: No
- 描述: 当此项设置为
true时,系统会在将敏感 SQL 内容写入日志和查询详细记录之前替换或隐藏这些内容。遵循此配置的代码路径包括 ConnectProcessor.formatStmt(审计日志)、StmtExecutor.addRunningQueryDetail(查询详细信息)和 SimpleExecutor.formatSQL(内部执行器日志)。启用此功能后,无效的 SQL 可能会被替换为固定的脱敏消息,凭据(用户/密码)将被隐藏,并且 SQL 格式化程序必须生成 sanitized 表示(它还可以启用摘要式输出)。这减少了审计/内部日志中敏感文字和凭据的泄露,但也意味着日志和查询详细信息不再包含原始完整 SQL 文本(这可能会影响回放或调试)。 - 引入版本: -
internal_log_delete_age
- 默认值: 7d
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 指定 FE 内部日志文件(写入
internal_log_dir)的保留期限。该值是一个持续时间字符串。支持的后缀:d(天)、h(小时)、m(分钟)、s(秒)。示例:7d(7 天)、10h(10 小时)、60m(60 分钟)、120s(120 秒)。此项作为<IfLastModified age="..."/>谓词替换到 Log4j 配置中,该谓词由 RollingFile Delete 策略使用。最后修改时间早于此持续时间的文件将在日志轮转期间删除。增加 此值可更快释放磁盘空间,或减少此值可更长时间保留内部物化视图或统计信息日志。 - 引入版本: v3.2.4
internal_log_dir
- 默认值:
Config.STARROCKS_HOME_DIR+ "/log" - 类型: String
- 单位: -
- 是否可变: No
- 描述: FE 日志记录子系统用于存储内部日志 (
fe.internal.log) 的目录。此配置将替换到 Log4j 配置中,并决定 InternalFile appender 在何处写入内部/物化视图/统计信息日志,以及internal.<module>下的每个模块日志记录器在何处放置其文件。确保目录存在、可写并具有足够的磁盘空间。此目录中文件的日志轮转和保留由log_roll_size_mb、internal_log_roll_num、internal_log_delete_age和internal_log_roll_interval控制。如果sys_log_to_console启用,内部日志可能会写入控制台而不是此目录。 - 引入版本: v3.2.4
internal_log_json_format
- 默认值: false
- 类型: Boolean
- 单位: -
- 是否可变: Yes
- 描述: 当此项设置为
true时,内部统计/审计条目将作为紧凑的 JSON 对象写入统计审计日志记录器。JSON 包含键 "executeType" (Internal类型: QUERY 或 DML)、"queryId"、"sql" 和 "time"(已用毫秒)。当设置为false时,相同的信息将记录为单个格式化文本行("statistic execute: ... | QueryId: [...] | SQL: ...")。启用 JSON 可改进机器解析并与日志处理器集成,但也会导致原始 SQL 文本包含在日志中,这可能会暴露敏感信息并增加日志大小。 - 引入版本: -
internal_log_modules
- 默认值:
{"base", "statistic"} - 类型: String[]
- 单位: -
- 是否可变: No
- 描述: 将接收专用内部日志记录的模块标识符列表。对于每个条目 X,Log4j 将创建一个名为
internal.<X>的日志记录器,其级别为 INFO,并且 additivity="false"。这些日志记录器被路由到内部 appender(写入fe.internal.log),或者在sys_log_to_console启用时路由到控制台。根据需要使用短名称或包片段 — 确切的日志记录器名称变为internal.+ 配置的字符串。内部日志文件轮转和保留遵循internal_log_dir、internal_log_roll_num、internal_log_delete_age、internal_log_roll_interval和log_roll_size_mb。添加模块会导致其运行时消息分离到内部日志记录器流中,以便于调试和审计。 - 引入版本: v3.2.4