日志管理

客户端日志

审计日志

挂载点的操作审计流水,审计日志存放在客户端本地指定目录,方便接入第三方的日志采集平台。

  • 启动客户端时,可以在客户端配置中修改 enableAudit 参数的值选择开启或者关闭本地审计日志功能

  • 在服务运行时,可以通过 HTTP 发送命令到客户端来主动开启或者关闭日志功能,无需重新挂载

  • 客户端审计日志记录在本地。当日志文件大小超过 200MB 时会进行滚动,滚动后的陈旧日志会在 7 天后进行删除。这意味着审计日志默认保留 7 天的审计流水。每小时会触发一次陈旧日志文件扫描删除。

审计日志格式

[集群名(master域名或者ip),卷名,subdir,mountpoint,时间戳,clientip,client hostname,操作类型op(创建、删除、Rename),源路径,目标路径,错误信息,操作耗时,源文件inode, 目的文件inode]

审计日志格式示例:

192.168.0.121:15010,192.168.0.143:15010,192.168.0.244:15010,192.168.0.183:15010, udbtovol, , /udbto/mountpoint, 2023-04-19 15:12:52 CST, 192.168.0.121, ecs-6a34-0001, Mkdir, /monitor/prometheus/bin/tsdb/01GY2XR1E7QY47WPV5EP47ZC5N, nil, nil, 1695 us, 23492277, 0
192.168.0.121:15010,192.168.0.143:15010,192.168.0.244:15010,192.168.0.183:15010, udbtovol, , /udbto/mountpoint, 2023-04-19 15:12:52 CST, 192.168.0.121, ecs-6a34-0001, Mkdir, /monitor/prometheus/bin/tsdb/01GY2XR1E7QY47WPV5EP47ZC5N/chunks, nil, nil, 1668 us, 40269494, 0
192.168.0.121:15010,192.168.0.143:15010,192.168.0.244:15010,192.168.0.183:15010, udbtovol, , /udbto/mountpoint, 2023-04-19 15:12:52 CST, 192.168.0.121, ecs-6a34-0001, Create, /monitor/prometheus/bin/tsdb/01GY2XR1E7QY47WPV5EP47ZC5N/chunks/000001, nil, nil, 1661 us, 6715115, 0

审计操作类型

目前接入审计的操作如下:

  • Create,创建文件

  • Mkdir,创建目录

  • Remove,删除文件或者目录

  • Rename,mv操作

日志写入方式

审计日志是异步落盘,不会同步阻塞客户端操作。

审计日志接口

启动审计

启用审计日志

curl -v "http://192.168.2.160:15410/auditlog/enable?path=/data/auditlog&prefix=client2&logsize=1024"
参数 类型 描述
path string 审计日志目录
prefix string 制定审计日志的前缀目录,可以是模块名或者“audit”,用来区分流水日志和审计日志的目录
logsize uint32 用来设置日志滚动的size阈值,不设置默认为200MB

响应示例

{"code":200,"data":"audit log is already initialized with params: logDir(/data/udbto/client/log/client/client) logModule(client) logMaxSize(1073741824)","msg":""}

关闭审计日志

关闭审计日志

curl -v "http://192.168.2.160:15410/auditlog/disable"

响应示例

{"code":200,"data":"disable audit log success","msg":""}

服务端日志

日志种类

  1. MetaNode,DataNode,Master都存在两类日志,分别为服务运行日志和raft日志,client由于没用到raft,所以只有进程服务日志

  2. 各个服务日志以及raft日志的日志路径都是可以配置的,具体在启动配置文件的如下字段:

{
    "logDir": "/udbto/log",
    "raftDir": "/udbto/log",
    ......
}
  1. ObjectNode存在一种日志类型,即服务运行日志

  2. 纠删码子系统的各个模块均存在两类日志,分别为服务运行日志与审计日志,审计日志默认关闭,如果开启请参考纠删码基础服务配置

日志设置

  1. 如果您是开发及测试人员,希望进行调试,可以将日志级别设置为Debug或者info

  2. 如果生产环境,可以将日志级别设置为warn或者error,将大大减少日志的量

  3. 支持的 log-level 有 debug、info、warn、error、fatal、critical(纠删码系统不支持critical级别)

日志的设置有2种方式:

  • 在配置文件中设置,具体如下:

"logLevel": "debug"
  • 可以通过命令动态的修改,命令如下

http://127.0.0.1:{profPort}/loglevel/set?level={log-level}

修改udbto-master日志级别

curl -v "http://192.168.2.160:15020/loglevel/set?level=warn"

响应示例

{"code":200,"data":"set log level success","msg":""}

修改udbto-metanode日志级别

curl -v "http://192.168.2.160:15220/loglevel/set?level=warn"

响应示例

{"code":200,"data":"set log level success","msg":""}

修改udbto-datanode日志级别

curl -v "http://192.168.2.160:15320/loglevel/set?level=warn"

响应示例

{"code":200,"data":"set log level success","msg":""}

日志格式

日志格式为如下格式 [时间][日志级别][日志路径及行数][详细信息] 举例说明:

2023/03/08 18:38:06.628192 [ERROR] partition.go:664: action[LaunchRepair] partition(113300) err(no valid master).

纠删码系统日志

纠删码系统的日志设置稍有不同

  • 配置文件中设置,请参考基础服务配置

  • 通过命令修改,请参考纠删码通用管理 API

纠删码系统的日志格式

  • 服务运行日志格式如下 [时间][日志级别][日志路径及行数][TraceID:SpanID][详细信息]

2023/03/15 18:59:10.350557 [DEBUG] scheduler/blob_deleter.go:540 [tBICACl6si0FREwX:522f47d329a9961d] delete shards: location[{Vuid:94489280515 Host:http://127.0.0.1:8889 DiskID:297}]
  • 审计日志格式如下 [请求][服务名][请求时间][请求类型][请求接口][请求头部][请求参数][响应状态码][响应长度][请求耗时,单位微秒]

REQ	SCHEDULER	16793641137770897	POST	/inspect/complete	{"Accept-Encoding":"gzip","Content-Length":"90","Content-Type":"application/json","User-Agent":"blobnode/cm_1.2.0/5616eb3c957a01d189765cf004cd2df50bc618a8 (linux/amd64; go1.16.13)}	{"task_id":"inspect-45800-cgch04ehrnv40jlcqio0","inspect_err_str":"","missed_shards":null}	200	{"Blobstore-Tracer-Traceid":"0c5ebc85d3dba21b","Content-Length":"0","Trace-Log":["SCHEDULER"],"Trace-Tags":["span.kind:server"]}		0	68