mxpacklogs

本文档介绍了日志采集及打包工具 mxpacklogs。

1 描述

  • 功能
    • mxpacklogs 工具支持一键式采集分布式集群的所有日志并打包。
    • 支持采集执行命令当下到前 3 天范围内的日志信息。
  • 限制
    • 所有指定服务器的 log 会汇总到当前执行 mxpacklogs 命令的主机上,以 *.tar.gz 包的形式在 /tmp 下暂存。mxpacklogs 会自动选取用户可以读写的,剩余空间最大的磁盘存放这些包。
    • 如遇集群的所有节点全部宕机的极端情况,需通过指定 --hosts--base-data-dirs 获取日志信息。

2 命令行参数信息

以下是详细的命令行参数信息介绍:

参数名 描述
--base-data-dirs 可选。默认访问数据库元信息中的数据目录。仅当数据库不可访问时,才需要提供此参数。提供到 mxdata_xxxx 目录层级即可,后面部分 mxpacklogs 会自动补齐。例如:mxpacklogs --base-data-dirs /data/mxdata_20230324145536
--hosts --host 表示默认采集集群内所有主机的日志。-- hosts 则可以收集特定 Segment 的主机的日志,避免过大的空间、时间开销。例如:mxpacklogs --hosts sdw1,sdw2mxpacklogs --hosts sdw1 --hosts sdw2
-h / --dbhost 数据库服务器主机,默认 "127.0.0.1"
-p / --dbport 数据库服务器端口,默认 "5432"
--debug 开启调试日志输出
--help 打印帮助信息
--host 安装 supervisor/mxgate 服务的主机,默认 "127.0.0.1"
--mode 输出格式,api 或 cli,默认 “api”
-W / --password 数据库用户密码
--path supervisor 主机上的 matrixdb 安装路径,默认 "/opt/ymatrix/matrixdb5"
--port supervisor 服务器端口,默认 "4617"
-U / --username 数据库用户名,默认 "mxadmin"
--validate 验证模式 - 试运行
--verbose 开启详细日志输出
-v / --version 显示工具版本

3 示例

mxpacklogs 可在主节点(Master)或非 Master 上执行。具体如下:

  • 在 Master 上执行,推荐使用 mxadmin 用户;如使用其他用户需配置 pg_hba 信任。
  • 在非 Master 上远程执行,需满足以下条件:
    • 数据库服务器和执行此命令的服务器都需安装新版本(4.8.0 及以上)的 YMatrix;
    • 通过指定相关参数连接到 Master 即可。

根据上述描述,我们推荐如下三种使用方式。示例中 mdw 为 Master,sdw 为非 Master:

  1. 直接运行 mxpacklogs 命令表示默认当前主机为 Master,会连接数据库获取所有的 Segment 日志。
    [mxadmin@mdw ~]$ mxpacklogs
    [INFO]:-Preparing temp directory...
    [INFO]:-Starting transport server...
    [INFO]:-Gathering logs from 4 hosts...
    [INFO]:-Creating the tarball...
    [INFO]:-All logs packed to: /tmp/gather_logs_2143246856.tar.gz
  2. 在任一服务器上执行以下命令来指定访问 Master 的连接信息,从而实现所有的 Segment 日志获取(结果同 1)。
    [<用户名称>@<服务器名> ~]$ mxpacklogs --dbhost 172.31.33.128 --dbport 5432 --username mxadmin --password 123
    [INFO]:-Preparing temp directory...
    [INFO]:-Starting transport server...
    [INFO]:-Gathering logs from 4 hosts...
    [INFO]:-Creating the tarball...
    [INFO]:-All logs packed to: /tmp/gather_logs_340918649.tar.gz

注意!
1,2 均通过连接 Master 获取信息,因此集群 Master 需要处于健康状态。

  1. 在任一服务器上执行以下命令,只收集指定主机(必需)和数据目录(可选)下的日志信息。
    [<用户名称>@sdw ~]$ mxpacklogs --hosts sdw1,sdw2 --base-data-dirs /mxdata_20221229075012

    此命令表示收集 sdw1,sdw2 的日志信息,并且这两台机器的 base-data-dirs 都是 /mxdata_20221229075012

    [<用户名称>@sdw ~]$ mxpacklogs --hosts sdw1,sdw2 --base-data-dirs /mxdata_20221229075012,/data1/mxdata_20221229075012

    此命令表示表示收集 sdw1,sdw2 的日志信息,并且这两台机器的 base-data-dirs 不一样,一个是 /mxdata_20221229075012,另一个是 /data1/mxdata_20221229075012

注意!
更多日志内容相关信息请见日志