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]]指定要搜索的日志项的结束日期和时间。
如果指定一个时间,日期和时间必须被封闭在单引号或者双引号中。这个例子将日期和时间封闭在单引号中:
gplogfilter -e '2013-05-23 14:33' 
-d time | --duration=time
以格式指定要搜索的日志项所在的时间长度。如果指定这个选项但没有指定-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