gplogfilter

gplogfilter

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

概要

gplogfilter [timestamp_options] [pattern_options] 
      [output_options] [input_options] [input_file] 
      
      gplogfilter --help 
      
      gplogfilter --version

描述

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

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

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

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

选项

时间戳选项
-b datetime | --begin=datetime
以格式YYYY-MM-DD [hh:mm[:ss]]指定要搜索的日志项的开始日期和时间。
如果指定一个时间,日期和时间必须被封闭在单引号或者双引号中。这个例子将日期和时间封闭在单引号中:
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日志文件中的最后三个错误消息:

gplogfilter -t -n 3

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

gplogfilter -d :10

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

gplogfilter -f '|con6 cmd11|'

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

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

另见

gpsshgpscp