tencent cloud

对象存储

动态与公告
产品动态
产品公告
产品简介
产品概述
功能概览
应用场景
产品优势
基本概念
地域和访问域名
规格与限制
产品计费
计费概述
计费方式
计费项
免费额度
计费示例
查看和下载账单
欠费说明
常见问题
快速入门
控制台快速入门
COSBrowser 快速入门
用户指南
创建请求
存储桶
对象
数据管理
批量处理
全球加速
监控与告警
运维中心
数据处理
内容审核
智能工具箱
数据工作流
应用集成
工具指南
工具概览
环境安装与配置
COSBrowser 工具
COSCLI 工具
COSCMD 工具
COS Migration 工具
FTP Server 工具
Hadoop 工具
COSDistCp 工具
HDFS TO COS 工具
GooseFS-Lite 工具
在线辅助工具
自助诊断工具
实践教程
概览
访问控制与权限管理
性能优化
使用 AWS S3 SDK 访问 COS
数据容灾备份
域名管理实践
图片处理实践
COS 音视频播放器实践
工作流实践
数据直传
内容审核实践
数据安全
数据校验
大数据实践
COS 成本优化解决方案
在第三方应用中使用 COS
迁移指南
本地数据迁移至 COS
第三方云存储数据迁移至 COS
以 URL 作为源地址的数据迁移至 COS
COS 之间数据迁移
Hadoop 文件系统与 COS 之间的数据迁移
数据湖存储
云原生数据湖
元数据加速
数据加速器 GooseFS
数据处理
数据处理概述
图片处理
媒体处理
内容审核
文件处理
文档处理
故障处理
获取 RequestId 操作指引
通过外网上传文件至 COS 缓慢
访问 COS 时返回403错误码
资源访问异常
POST Object 常见异常
API 文档
简介
公共请求头部
公共响应头部
错误码
请求签名
操作列表
Service 接口
Bucket 接口
Object 接口
批量处理接口
数据处理接口
任务与工作流
内容审核接口
云查毒接口
SDK 文档
SDK 概览
准备工作
Android SDK
C SDK
C++ SDK
.NET(C#) SDK
Flutter SDK
Go SDK
iOS SDK
Java SDK
JavaScript SDK
Node.js SDK
PHP SDK
Python SDK
React Native SDK
小程序 SDK
错误码
鸿蒙(Harmony) SDK
终端 SDK 质量优化
安全与合规
数据容灾
数据安全
访问管理
常见问题
热门问题
一般性问题
计费计量问题
域名合规问题
存储桶配置问题
域名和 CDN 问题
文件操作问题
日志监控问题
权限管理问题
数据处理问题
数据安全问题
预签名 URL 问题
SDK 类问题
工具类问题
API 类问题
服务协议
Service Level Agreement
隐私政策
数据处理和安全协议
联系我们
词汇表

GooseFS 日志介绍

PDF
聚焦模式
字号
最后更新时间: 2024-01-06 11:17:59
GooseFS 的 Master 和 Worker 节点,以及 Spark 等计算框架通过 GooseFS Client 请求 GooseFS 时,都会记录请求日志,用户可对输出日志进行分析,进行问题排查。GooseFS 日志输出基于 log4j 实现,可以通过修改 log4j.properties 配置文件来调整 GooseFS 的日志输出,例如日志存储路径,日志级别,是否记录 RPC 调用情况等。用户可以到 GooseFS 的配置文件目录下,打开并修改 log4j.properties 文件:
$ cd /usr/local/service/goosefs/conf
$ cat log4j.properties

# May get overridden by System Property

log4j.rootLogger=INFO, ${goosefs.logger.type}, ${goosefs.remote.logger.type}

log4j.category.goosefs.logserver=INFO, ${goosefs.logserver.logger.type}
log4j.additivity.goosefs.logserver=false

log4j.logger.AUDIT_LOG=INFO, ${goosefs.master.audit.logger.type}
log4j.additivity.AUDIT_LOG=false

...
下文将详细介绍 GooseFS 的日志配置:

日志存储位置

GooseFS 采集的日志默认存储在 ${GOOSEFS_HOME}/logs 目录下。其中,Master 采集的日志存储在 logs/master.log 中,Worker 采集的日志存储在 logs/worker.log 中。需要注意的是, 节点进程异常抛出的日志会记录在 master.out 或者 worker.out 中,正常情况下这两类文件均为空文件,系统有异常时会记录异常信息以便追溯。
以 Master 节点的日志存储配置为例,以下为常用的几项配置:
# Appender for Master
log4j.appender.MASTER_LOGGER=org.apache.log4j.RollingFileAppender
log4j.appender.MASTER_LOGGER.File=${goosefs.logs.dir}/master.log
log4j.appender.MASTER_LOGGER.MaxFileSize=10MB
log4j.appender.MASTER_LOGGER.MaxBackupIndex=100
log4j.appender.MASTER_LOGGER.layout=org.apache.log4j.PatternLayout
log4j.appender.MASTER_LOGGER.layout.ConversionPattern=%d{ISO8601} %-5p %c{1} - %m%n
配置参数介绍如下:
MASTER_LOGGER:指定配置 MASTER 的日志输出。
MASTER_LOGGER.File:指定日志存储路径,可以通过修改路径来自定义日志存储位置。
MASTER_LOGGER.MaxFileSize:指定单个日志文件大小的上限。
MASTER_LOGGER.MaxBackupIndex:指定日志文件数上限。
MASTER_LOGGER.layout:指定日志输出格式模板。
MASTER_LOGGER.layout.ConversionPattern:指定日志输出的具体格式。
注意
.log 文件是滚动存储的,您可以将其备份到 UFS,例如对象存储中;.out 文件不滚动存储,如果需要清理 .out 文件需要手动发起删除操作。
更多 log4j 的参数配置可以参考 log4j configuration 文档
GooseFS 仅存储本身产生的日志,上层计算应用产生的日志可以根据计算应用的日志配置,查看日志存储位置。常见计算应用的日志配置信息可见:Apache Hadoop, Apache HBase, Apache Hive, Apache Spark

日志级别

GooseFS 提供了以下5种级别的日志:
TRACE: 详细的调用日志,适用于调试方法和类的调用。
DEBUG: 较详细的调用日志,适用于 DEBUG 过程中排查问题。
INFO: 请求处理过程中的关键信息。
WARN: 警告类信息,任务可以继续执行,但需要注意可能存在问题。
ERROR: 系统报错信息,影响任务进行。
上述5种级别日志的详细程度从高到低,配置高等级的日志级别会一并记录低等级的日志信息。默认情况下 GooseFS 配置 INFO 级别的日志,记录 INFO、WARN、ERROR三个级别的日志。
可以到 GooseFS 的配置文件目录下打开并修改 log4j.properties 文件,如下示例展示了将所有 GooseFS 的日志级别修改为 DEBUG 级别:
log4j.rootLogger=DEBUG, ${goosefs.logger.type}, ${goosefs.remote.logger.type}
如果需要修改指定类的日志级别,可以在配置文件中添加声明,如下示例展示指定 GooseFSFileInStream 这个类的日志级别为 DEBUG:
log4j.logger.com.qcloud.cos.goosefs.client.file.GooseFSFileInStream=DEBUG
一般而言,推荐在日志配置文件中修改日志级别。但在一些特定的场景下,用户可能需要在集群运行过程中修改日志参数,此时可以通过在命令行中输入 goosefs logLevel 指令进行调整。如下为 logLevel 支持的配置选项:
usage: logLevel [--level <arg>] --logName <arg> [--target <arg>]
--level <arg> The log level to be set.
--logName <arg> The logger's name(e.g. com.qcloud.cos.goosefs.master.file.DefaultFileSystemMaster) you want to get or set level.
--target <arg> <master|workers|host:webPort>. A list of targets separated by, can be specified. host:webPort pair must be one of workers. Default target is master and all workers
各项配置的详细说明如下:
level:日志级别,支持 TRACE、DEBUG、INFO、WARN、ERROR 五种级别。
logName:日志输出 logger,如 com.qcloud.cos.goosefs.underfs.hdfs.HdfsUnderFileSystem 等。
target:修改范围,可以设置为指定的 Master 或者 Worker 节点(通过 IP:PORT 方式指定),默认为 Master 和所有 Worker 节点。
用户可以按需在系统运行过程中调整日志级别,以便排查系统运行过程中的问题。如以下示例展示了在运行过程中将所有 Worker 节点上 com.qcloud.cos.goosefs.underfs.hdfs.HdfsUnderFileSystem 这个类的日志级别调整为 DEBUG 级别,并在调试完成后调整回 INFO 级别:
$ goosefs logLevel --logName=com.qcloud.cos.goosefs.underfs.hdfs.HdfsUnderFileSystem --target=workers --level=DEBUG # 调整为 DEBUG 模式

$ goosefs logLevel --logName=com.qcloud.cos.goosefs.underfs.hdfs.HdfsUnderFileSystem --target=workers --level=INFO # 调整为 INFO 模式

高级配置

GooseFS 支持配置 GC 事件日志,FUSE 接口日志,RPC 调用日志,UFS 操作日志,以及进行日志分割和日志筛选等操作。以下介绍部分常用高级配置的使用方式。
GC 事件日志 GooseFS 将 GC 事件日志记录在 .out 文件中, 可以通过在 conf/goosefs-env.sh 中添加如下配置:
GOOSEFS_JAVA_OPTS+=" -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -XX:+PrintGCTimeStamps"
GOOSEFS_JAVA_OPTS 为所有类型 GooseFS 节点的 Java 虚拟机参数,也可以通过指定 GOOSEFS_MASTER_JAVA_OPTS 和 GOOSEFS_WORKER_JAVA_OPTS 分别指定 Master 和 Worker上的虚拟机参数。
FUSE 接口日志 可以在 conf/log4j.properties 文件中配置记录 FUSE 日志级别:
goosefs.logger.com.qcloud.cos.goosefs.fuse.GoosefsFuseFileSystem=DEBUG
启用后 FUSE 接口日志可以在 logs/fuse.log 查看。
启用 RPC 调用日志 GooseFS 支持在 conf/log4j.properties 配置文件中,配置 Client 端或 Master 端的 RPC 调用日志。 可以通过在 log4j.properties 文件中,配置客户端输出 RPC 请求日志:
log4j.logger.com.qcloud.cos.goosefs.client.file.FileSystemMasterClient=DEBUG # Client 与 FileSystemMaster 之间的 RPC 请求日志
log34j.logger.com.qcloud.cos.goosefs.client.block.BlockSystemMasterClient=DEBUG # Client 与 BlockMaster 之间的 RPC 请求日志
可以通过 logLevel 指令来,配置 Master 输出 RPC 请求日志:
$ goosefs logLevel \\--logName=com.qcloud.cos.goosefs.master.file.FileSystemMasterClientServiceHandler \\--target master --level=DEBUG # 文件相关的 RPC 请求日志
$ goosefs logLevel \\--logName=com.qcloud.cos.goosefs.master.block.BlockSystemMasterClientServiceHandler \\--target master --level=DEBUG # 块相关别的 RPC 请求日志
UFS 操作日志 UFS 操作日志输出配置,可以通过在 log4j.properties 文件中添加配置项,或者通过 logLevel 指令进行操作。下面以 logLevel 指令为例:
$ goosefs logLevel \\--logName=com.qcloud.cos.goosefs.underfs.UnderFileSystemWithLogging \\--target master --level=DEBUG # 记录 master 节点对 UFS的操作日志
$ goosefs logLevel \\--logName=com.qcloud.cos.goosefs.underfs.UnderFileSystemWithLogging \\--target workers --level=DEBUG # 记录 worker 节点对 UFS的操作日志
分割日志 GooseFS 支持将指定类型日志存储在指定存储路径,如果将所有日志都记录在 .log 文件,可能产生以下问题:
当集群规模大,吞吐量较多时,master.log 或者 worker.log 文件可能变得异常庞大,或者滚动产生大量日志文件。
日志信息较多,不利于针对性分析的进行日志分析。
大量日志存储在本地节点,占用空间。
因此业务可以根据需要在 log4j.properties 文件中添加配置项,将指定类产生的日志存储至指定文件路径,如下示例展示了将 StateLockManager 类的日志存储在 statelock.log 中:
log4j.category.com.qcloud.cos.goosefs.master.StateLockManager=DEBUG, State_LOCK_LOGGER
log4j.additivity.com.qcloud.cos.goosefs.master.StateLockManager=false
log4j.appender.State_LOCK_LOGGER=org.apache.log4j.RollingFileAppender
log4j.appender.State_LOCK_LOGGER.File=<GOOSEFS_HOME>/logs/statelock.log
log4j.appender.State_LOCK_LOGGER.MaxFileSize=10MB
log4j.appender.State_LOCK_LOGGER.MaxBackupIndex=100
log4j.appender.State_LOCK_LOGGER.layout=org.apache.log4j.PatternLayout
log4j.appender.State_LOCK_LOGGER.layout.ConversionPattern=%d{ISO8601} %-5p %c{1} - %m%
筛选日志 GooseFS 支持按照一定的条件筛选并记录日志,而不是全量记录所有日志。例如在进行性能测试时需要记录 RPC 调用日志,但业务侧并不需要记录所有 RPC 调用日志,只需要记录某些延迟较高的日志即可,此时可以通过在 log4j.properties 文件中添加配置项添加日志筛选条件即可,如下示例分别展示了筛选 RPC 调用延迟超过200ms的请求和 FUSE 调用超过1s的请求:
goosefs.user.logging.threshold=200ms
goosefs.fuse.logging.threshold=1s

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈