单机日志

Nebula Graph 使用 glog 打印日志,使用 gflag 控制日志级别,并提供 HTTP 接口在运行时动态改变日志级别,以方便追踪问题。

日志位置

日志默认存放在 /usr/local/nebula/logs/ 下。

注意: 如果在运行时删除了日志目录,会导致运行时的日志不继续输出,但不会影响服务。程序重启后可恢复正常。

参数说明

glog 中的两个主要参数

  • minloglevel:范围为 0-4。其中 0-3 对应的日志级别分别为 INFO(DEBUG)、WARNING、ERROR、FATAL。通常在调试环境设置为 0,生产环境设置为 1,设置为 4 不打印任何日志。
  • v:范围为 0-3。当 minloglevel 设置为 0 时,可以进一步设置调试日志的详细程度,值越大越详细。

配置文件

在配置文件中(通常在 /usr/local/nebula/etc/ 下)可以找到 metad、graphd 和 storaged 的默认日志配置级别。

动态查看和修改日志级别

通过如下命令来查看当前所有的 gflags 参数(包括日志参数)。curl 仅在 local_config 设置为 true 时可用。

> curl ${ws_ip}:${ws_port}/get_flags

其中,

  • ws_ip 为 HTTP 服务的 IP,可以在上述配置文件中找到。默认 IP 为 127.0.0.1。
  • ws_port 为 HTTP 服务的端口号。metad 默认为 11000, storaged 默认为 12000,graphd 默认为 13000。

例如,查看 storaged 服务的 minloglevel 级别:

> curl 127.0.0.1:12000/get_flags | grep minloglevel  # storage
> curl 127.0.0.1:13000/get_flags                     # metad

也可以通过如下命令将日志级别更改为最详细

> curl "http://127.0.0.1:12000/set_flags?flag=v&value=3"
> curl "http://127.0.0.1:12000/set_flags?flag=minloglevel&value=0"

在 console 中,使用如下命令获取当前日志级别并将日志级别设置为最详细

nebula> GET CONFIGS graph:minloglevel;
nebula> UPDATE CONFIGS graph:minloglevel=0;

如需更改 storage 日志级别,将上述命令中的 graph 更换为 storage 即可。

注意: Nebula Graph 仅支持通过 console 修改 graph 和 storage 日志级别,meta 日志级别必须使用 curl 命令更改。

使用以下命令关闭所有的日志打印(仅保留 FATAL)。

> curl "http://127.0.0.1:12000/set_flags?flag=minloglevel&value=3"