gs_collector

背景信息

当openGauss发生故障时,使用此工具收集OS信息、日志信息以及配置文件等信息,来定位问题。可以使用-C参数,指定收集不同的信息内容,具体支持收集的内容信息如表1所示。

表 1 gs_collector内容收集对照表

TypeName Content 描述 是否默认收集
System HardWareInfo RunTimeInfo 收集现在操作系统的状态信息: - HardWareInfo - Cpu(cat /proc/cpuinfo) - 内存(cat /proc/meminfo) - 磁盘(df -h) - RunTimeInfo: - topStatus(ps ux) - ioStat(iostat -xm 2 3) - 网络状态(cat /proc/net/dev) - 内存使用情况(free -m) 是
Database 具体列表见表1。 收集系统视图或者系统表的内容。 是,默认收集pg_locks、pg_stat_activity和 pg_thread_wait_status三个视图的信息。
Log DataNode ClusterManager - 收集DataNode的pg_log和gs_profile - 收集ClusterManager的日志信息包括: - om - gs_ctl - gs_guc - gs_initdb 是
Config DataNode - 收集DataNode的配置信息: - postgresql.conf - gaussdb.state - pg_hba.conf - pg_control - pg_replslot - pg_ident.conf 是
Gstack DataNode 利用gstack命令得到DataNode的当前堆栈信息。 否
CoreDump gs_ctl、gaussdb、GaussMaster、AioWorker、AlarmChecker、Archiver、Auditor、AutoVacLauncher、AutoVacWorker、AuxMain、BackendMode、BgWriter、BootStrap、Catchup、CBMWriter、Checkpointer、CommAuxStream、CommPoolCleane、CommRcvStream、CommRcvWorker、CommSendStream、CpMonitor、DataRcvWriter、DataReceiver、DataSender、ExtremeRTO、FencedUDFMaster、Heartbeater、JobExecutor、JobScheduler、LWLockMonitor、PageWriter、ParallelRecov、PercentileJob、Reaper、RemoteSrv、StartupProcess、StatCollector、Stream、SysLogger、ThdPoolListener、TwoPhaseCleaner、WalRcvWriter、WalReceiver、WalSender、WalWriter、WDRSnapshot、WlmArbiter、WlmCollector、WlmMonitor 通过时间筛选gaussdb进程的core文件。 注意: 关于Core的配置和方式请按照如下要求:在/proc/sys/opengauss/core_pattern文件中添加core文件的格式:core-%e-%p-%t。 否
XLog DataNode 通过时间筛选收集xlog。 否
Plan 收集计划复现信息: - 用户输入表示收集所有数据库上的计划复现信息。 - 用户输入具体的数据库名称表示收集指定数据库上的计划复现信息。 否

前提条件

日志收集工具依赖操作系统工具,例如gstack为其中一种,如果未安装该工具,则提示错误后,跳过该收集项。

语法

  • 日志收集(非root用户)

1. gs_collector --begin-time="BEGINTIME" --end-time="ENDTIME" [-h HOSTNAME | -f HOSTFILE] [--keyword=KEYWORD] [--speed-limit=SPEED] [-o OUTPUT] [-l LOGFILE] [-C CONFIGFILE] - 显示帮助信息

1. gs_collector -? | --help - 显示版本号信息

1. gs_collector -V | --version

参数说明

  • -h

收集信息的主机名称。

取值范围:主机名称,如果不指定则默认收集所有主机的信息。 - -f

主机名称列表文件。该文件为纯文本格式。

gs_collector - 图1 说明: -f和-h参数不能同时使用。

取值范围:主机名称列表。 - -o

将收集日志以压缩包形式输出到指定的文件夹。

不指定则将检查结果以压缩包形式输出到配置文件中tmpMppdbPath选项所指定的目录中。

若配置文件中未配置tmpMppdbPath选项,则默认将检查结果以压缩包形式输出到“/tmp/用户名_mppdb/”目录中。 - -l

指定的日志文件以及存放路径。 - -C

指定待收集内容的配置文件,利用TypeName指定需要收集的信息类型,利用Content指定每一类信息的具体内容,利用Count指定此类信息收集的次数,利用Interval指定收集间隔,单位为秒。

TypeName和Content不允许缺失或者内容为空。

Interval和Count可以不指定,如果没有指定Count,则默认收集一次。如果没有指定Interval则表示间隔为0秒,Interval和Count的值不能小于0。

如果不指定则使用默认的配置文件。

配置文件格式采用json格式,模板如下:

1. { 2. "Collect": 3. [ 4. {"TypeName": "name", "Content":"value","Interval":"seconds", "Count":"count"} 5. ] 6. }

gs_collector - 图2 说明:

TypeName和对应的Content取值范围见表1gs_collector内容收集对照表。 对于Log、CoreDump、Config和XLog四种类型,Interval和Count参数不生效。

默认配置文件内容如下:

1. { 2. "Collect": 3. [ 4. {"TypeName": "System", "Content":"RunTimeInfo, HardWareInfo","Interval":"0", "Count":"1"}, 5. {"TypeName": "Log", "Content" : "DataNode,ClusterManager", "Interval":"0", "Count":"1"}, 6. {"TypeName": "Database", "Content": "pg_locks,pg_stat_activity,pg_thread_wait_status","Interval":"0", "Count":"1"}, 7. {"TypeName": "Config", "Content": "DataNode", "Interval":"0", "Count":"1"} 8. ] 9. } - –keyword=KEYWORD

包含关键字KEYWORD的日志文件。

若关键字KEYWORD中含有空格,需要使用双引号包围。

gs_collector - 图3 说明:

性能日志为二进制日志,关键字搜集功能不支持该日志的搜集。 - –begin-time

日志的开始时间。输入格式为“yyyymmdd hh:mm”。 - –end-time

日志的结束时间。输入格式为“yyyymmdd hh:mm”。 - –speed-limit

日志收集时的收集速率,输入格式为非负整数,单位为MB/s。

该参数主要是为了防止日志收集过程中产生过高的磁盘或网络IO,导致数据库节点故障(如果它们与$GAUSSLOG/$PGHOST部署在同一个磁盘上)。该值应当不超过openGauss内上述磁盘IO与网络IO速率的最小值的1/3。 - -?, –help

显示帮助信息。 - -V, –version

显示版本号信息。

示例

执行如下命令收集OS信息和日志信息。

1. gs_collector --begin-time="20180131 23:00" --end-time="20180201 20:00" -h plat1
2. Successfully parsed the configuration file.
3. create Dir.
4. Successfully create dir.
5. do system check interval 0 : count 1
6. Collecting OS information.
7. Successfully collected OS information.
8. do database check interval 0 : count 1
9. Collecting catalog statistics.
10. Successfully collected catalog statistics.
11. do log check interval 0 : count 1
12. Collecting Log files.
13. Successfully collected Log files.
14. do Config check 0:1
15. Collecting Config files.
16. Successfully collected Config files.
17. Collecting files.
18. Successfully collected files.
19. All results are stored in $PGHOST/collector_20200624_134541.tar.gz.

查看收集到的统计信息。

1. tar -zxvf $PGHOST/collector_20200624_134541.tar.gz
2. collector_20200624_134541/
3. collector_20200624_134541/plat1.tar.gz
4. collector_20200624_134541/Detail.log
5. collector_20200624_134541/Summary.log
6. cd collector_20200624_134541
7. tar -zxvf plat1.tar.gz
8. plat1/
9. plat1/catalogfiles/
10. plat1/catalogfiles/gs_clean_20200624_134548283647.txt
11. plat1/catalogfiles/dn_6001_pg_locks_20200624_134547746215.csv
12. plat1/catalogfiles/dn_6001_pg_thread_wait_status_20200624_134548068716.csv
13. plat1/catalogfiles/dn_6001_pg_stat_activity_20200624_134547851117.csv
14. plat1/configfiles/
15. plat1/logfiles/
16. plat1/logfiles/log_20200624_134548540916.tar.gz
17. plat1/coreDumpfiles/
18. plat1/gstackfiles/
19. plat1/systemfiles/
20. plat1/systemfiles/OS_information_20200624_134542218134.txt
21. plat1/systemfiles/database_system_info_20200624_134546282006.txt
22. plat1/planSimulatorfiles/
23. plat1/xlogfiles/
24. cd plat1/logfiles/
25. tar -zxvf log_20200624_134548540916.tar.gz
26. ./
27. ./om/
28. ./om/gs_preinstall-2020-06-24_113654.log
29. ./om/gs_local-2020-06-24_113710.log
30. ./om/gs_install-2020-06-24_113911.log
31. ./om/gs_checkperf-2020-06-24_114311.log
32. ./om/gs_collector-2020-06-24_114240.log
33. ./om/gs_backup-2020-06-24_114101.log
34. ./om/gs_om-2020-06-24_114052.log
35. ./bin/
36. ./bin/gs_initdb/
37. ./bin/gs_initdb/gs_initdb-2020-06-24_114010-current.log
38. ./bin/gs_guc/
39. ./bin/gs_guc/gs_guc-2020-06-24_114033-current.log
40. ./bin/gs_ctl/
41. ./bin/gs_ctl/gs_ctl-2020-06-24_114041-current.log
42. ./pg_log/
43. ./pg_log/dn_6001/
44. ./pg_log/dn_6001/postgresql-2020-06-24_114043.log
45. ./pg_log/dn_6001/postgresql-2020-06-24_114330.log
46. ./pg_log/dn_6001/postgresql-2020-06-24_114316.log
47. ./gs_profile/
48. ./gs_profile/dn_6001_6002/
49. ./gs_profile/dn_6001_6002/postgresql-2020-06-24_114330.prf
50. ./gs_profile/dn_6001_6002/postgresql-2020-06-24_114316.prf
51. ./gs_profile/dn_6001_6002/postgresql-2020-06-24_114043.prf