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