gplogfilter

在Greenplum数据库日志文件中搜索指定的项。

概要

  1. gplogfilter [timestamp_options] [pattern_options]
  2. [output_options] [input_options] [input_file]
  3. gplogfilter --help
  4. gplogfilter --version

描述

gplogfilter工具可以被用来在一个Greenplum数据库日志文件中搜索匹配指定条件的项。 如果没有提供输入文件,那么gplogfilter将使用环境变量$MASTER_DATA_DIRECTORY 在标准日志位置定位Greenplum的Master日志文件。要从标准输入读取,可用一个破折号(-)作为输入文件名。 输入文件可以被使用gzip压缩。在输入文件中,日志项由其YYYY-MM-DD [hh:mm[:ss]] 格式的时间戳标识。

如果通过gpssh工具运行 gplogfilter,用户还可以用它来一次搜索所有的Segment日志文件。例如,要显示每个Segment 日志文件中的最后三行:

  1. gpssh -f seg_host_file
  2. => source /usr/local/greenplum-db/greenplum_path.sh
  3. => gplogfilter -n 3 /gpdata/*/pg_log/gpdb*.csv

gplogfilter的输出默认被发送到标准输出。可以使用-o选项把输出发送到一个文件或者一个目录。 如果用户提供了一个以.gz结束的输出文件名,该输出文件默认将被以最大压缩率压缩。如果输出目标是一个目录, 输出文件将被命名为输入文件的名字。

选项

时间戳选项

-b datetime | —begin=datetime

以格式YYYY-MM-DD [hh:mm[:ss]]指定要搜索的日志项的开始日期和时间。

如果指定一个时间,日期和时间必须被封闭在单引号或者双引号中。这个例子将日期和时间封闭在单引号中:

  1. gplogfilter -b '2013-05-23 14:33'

-e datetime | —end=datetime

指定一个YYYY-MM-DD [hh:mm[:ss]]格式的结束日期和时间来停止搜索日志信息。

-d time | —duration=time

以[hh][:mm[:ss]]格式指定要搜索的日志项所在的时间长度。如果指定这个选项 但没有指定-b或-e选项,将使用当前时间作为基础。

模式匹配选项

-c i [gnore] | r [espect] | —case=i [gnore] | r [espect]

除非前面放上--case=ignore选项,字母表符号的匹配默认是大小写敏感的。

-C ‘string’ | —columns=’string’

从日志文件中选择特定的列。将想要的列指定为由逗号定界的列编号串,列编号从1开始, 从左到右依次是1、2、3等等。关于日志文件格式的详情以及可用列的列表及其相关编号 请见Greenplum数据库管理员指南中的“查看数据库服务器日志文件”部分。

-f ‘string’ | —find=’string’

查找包含指定字符串的日志项。

-F ‘string’ | —nofind=’string’

拒绝包含指定字符串的日志项。

-m regex | —match=regex

查找匹配指定的Python正则表达式的日志项。Python正则表达式语法请参考 https://docs.python.org/library/re.html

-M regex | —nomatch=regex

拒绝匹配指定Python正则表达式的日志项。Python正则表达式语法请参考 https://docs.python.org/library/re.html

-t | —trouble

只查找在第一行有ERROR:、FATAL:或者 PANIC:的日志项。

输出选项

-n integer | —tail=integer

限制输出为找到的符合条件日志项中的最后integer项。

-s offset [limit] | —slice=offset [limit]

从符合条件的日志项列表中,从offset项处开始返回limit个项, 其中为零(0)的offset指示结果集中的第一项并且任何不超过零的 offset表示从结果集的末尾开始数。

-o output_file | —out=output_file

将输出写到指定的文件或者目录位置而不是STDOUT。

-z 0-9 | —zip=0-9

使用gzip把输出文件压缩到指定的压缩级别,其中0 是不压缩而9是最大压缩。如果用户提供一个以.gz 结束的输出文件名,该输出文件默认将被使用最大压缩级别压缩。

-a | —append

如果输出文件已经存在,会追加到该文件而不是覆盖它。

输入选项

input_file

要在其中搜索的输入日志文件的名称。如果没有提供输入文件,gplogfilter 将使用环境变量$MASTER_DATA_DIRECTORY来定位Greenplum数据库的Master 日志文件。要从标准输入读取,可使用一个破折号(-)作为输入文件名。

-u | —unzip

使用gunzip解压输入文件。如果输入文件名以.gz结束, 它默认将被解压。

--help

显示在线帮助。

--version

显示这个工具的版本。

示例

显示Master日志文件中的最后三个错误消息:

  1. gplogfilter -t -n 3

显示Master日志文件中时间戳位于最后10分钟内的所有日志消息:

  1. gplogfilter -d :10

显示Master日志文件中包含字符串|con6 cmd11|的日志消息:

  1. gplogfilter -f '|con6 cmd11|'

使用gpssh 在Segment主机上运行gplogfilter并且在Segment日志文件中搜索含有字符串 con6的日志消息,把输出保存到一个文件。

  1. gpssh -f seg_hosts_file -e 'source
  2. /usr/local/greenplum-db/greenplum_path.sh ; gplogfilter -f
  3. con6 /gpdata/*/pg_log/gpdb*.csv' > seglog.out

另见

gpsshgpscp