日志

查看系统操作日志是诊断集群故障的基本手段。

1 YMatrix 日志

YMatrix 有两类日志:

  • 集群管理日志
  • 查询操作日志

1.1 集群管理日志

集群管理日志默认目录为 $HOME/gpAdminLogs,不同工具在目录内有不同日志文件,譬如:mxstart_20210701.log, mxstop_20210701.log 等。

日志文件命名规则为:{管理工具名}_{日期}.log,如下所示:

gpconfig_20210723.log
mxstart_20210701.log
mxstart_20210708.log
mxstop_20210701.log
mxstop_20210723.log
......

日志格式为:日期 + 时间 + 工具名 + 主机名 + 用户名 + 日志等级 + 日志内容。如:

20230308:17:29:32:001644 mxstart:mdw:mxadmin-[INFO]:-Greenplum Catalog Version: '302012031'
20230308:17:29:32:001644 mxstart:mdw:mxadmin-[WARNING]:-postmaster.pid file exists on Master, checking if recovery startup required
......

日志等级分为 INFO、WARNING、FATAL 等。

  • INFO 为正常的输出
  • WARNING 是在执行过程中遇到了异常情况,但仍然可以继续执行
  • FATAL 则是遇到了严重错误,整个流程无法进行,不得不停止

所以,当工具执行失败的时候,可通过查看对应日志的 WARNING 和 FATAL 记录来诊断。

1.2 查询操作日志

查询操作日志位于主节点(Master)和数据节点(Segment)节点数据目录下的 log 目录中,文件名格式为,gpdb-{日期}_{时间}.csv,如:

gpdb-2021-07-01_164653.csv
gpdb-2021-07-01_164655.csv
gpdb-2021-07-02_000000.csv
......

该日志为 PostgreSQL 日志,可以用来定位如下问题:

  • 查询执行错误
  • 节点故障

文件内容包括日志生成的日期、时间、用户名、进程号、连接 ID、日志级别和具体错误信息。

如下日志内容为用户尝试连接一个不存在的数据库的错误日志:

2021-07-26 10:21:34.692106 CST,"mxadmin","postgggg",p10188,th-1455884160,"[local]",,2021-07-26 10:21:34 CST,0,con14,,seg-1,,,,sx1,"FATAL","3D000","database ""postgggg"" does not exist",,,,,,,0,,"postinit.c",1024,

日志各个字段含义如下:

日志内容 含义
2021-07-26 10:21:34.692106 CST 日志时间
mxadmin 连接的用户名
postgggg 连接的数据库名
p10188 连接的进程号
th-1455884160 线程号
[local] 连接方式为本地连接
con14 连接编号
seg-1 节点编号
FATAL 日志级别
database "postgggg" does not exist 错误信息

2. MatrixGate 日志

MatrixGate 的日志同样在 gpAdminLogs 目录下,文件名为 matrixgate.{日期}_{时间}.log,如下所示:

matrixgate.2023-04-10_141001-2369.log

日志格式和其他管理工具类似:

20210726:13:47:17 matrixgate:mxadmin:mdw:010889-[INFO]:-Connected to Database, version PostgreSQL 12 (MatrixDB 5.0.0+enter
prise) (Greenplum Database 7.0.0+dev.20438.g08c3e56457 build commit:08c3e5645733a58360aa681b717293ab9a916968) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9), 64-bit compiled on Mar 23 2023 11:45:21
20210726:13:47:17 matrixgate:mxadmin:mdw:010889-[INFO]:-[Writer.Stream] Initialized with 100ms load interval and 10 prepared insert
20210726:13:47:17 matrixgate:mxadmin:mdw:010889-[INFO]:-[Writer.Stream] Started, listening on :12120
20210726:13:47:17 matrixgate:mxadmin:mdw:010889-[INFO]:-[Trans.Plain] Started, parallel level 8
20210726:13:47:17 matrixgate:mxadmin:mdw:010889-[INFO]:-[Source.HTTP] http listening on :8086

MatrixGate 日志同样可以使用 mxgate log 命令来查看:

[mxadmin@mdw gpAdminLogs]$  mxgate log
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _` | __| '__| \ \/ / |  _ / _` | __/ _ \
| |  | | (_| | |_| |  | |>  <| |_| | (_| | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version: v5.0.0 (git: HEAD 53e21dfa)
  Your Copy is Licensed to: yMatrix.cn; 2023-06-23; any
******************************************************
==> [pid:436] matrixgate.2023-04-10_141001-2369.log <==
github.com/ymatrix-data/matrixgate/src/job.startUpPrepare
    /home/runner/work/matrixdb-ci/matrixdb-ci/src/job/job.go:55
github.com/ymatrix-data/matrixgate/src/server.(*Server).Start
    /home/runner/work/matrixdb-ci/matrixdb-ci/src/server/server.go:84
main.main
    /home/runner/work/matrixdb-ci/matrixdb-ci/src/bin/mxgated/main.go:111
runtime.main
    /opt/hostedtoolcache/go/1.19.7/x64/src/runtime/proc.go:250
runtime.goexit
    /opt/hostedtoolcache/go/1.19.7/x64/src/runtime/asm_amd64.s:1594
==> [pid:2369] matrixgate.2023-04-10_141001-2369.log <==
streaming.go:741:2023-04-10:14:33:46.710 matrixgate:mxadmin:mdw:010889-[INFO]:-[Writer.Stream] Initialized with 100ms load interval and 10 prepared insert
streaming.go:741:2023-04-10:14:33:57.230 matrixgate:mxadmin:mdw:010889-[INFO]:-[Writer.Stream] Started, listening on :12120
streaming.go:741:2023-04-10:14:34:07.729 matrixgate:mxadmin:mdw:010889-[INFO]:-[Trans.Plain] Started, parallel level 8
streaming.go:741:2023-04-10:14:34:18.239 matrixgate:mxadmin:mdw:010889-[INFO]:-[Source.HTTP] http listening on :8086

注意!
使用 mxgate log 命令查看日志的前提是 mxgate 进程必须正在运行,看到的日志内容也是运行进程产生的。