Logstash 获取grok筛选器转换为的正则表达式?

Logstash 获取grok筛选器转换为的正则表达式?,logstash,logstash-grok,Logstash,Logstash Grok,我有一个复杂的grok过滤器表达式。。。是否可以获取此筛选器转换为的正则表达式?您可以使用一个简单的Perl脚本来读取模式文件,并将%{PATTERN}内容替换为它所基于的实际正则表达式--您需要对其进行一些自定义,但它显示了如何执行此操作: #!/usr/bin/perl # this is the path to your grok-patterns file open(F,"patterns/grok-patterns"); while (<F>) { chomp;

我有一个复杂的grok过滤器表达式。。。是否可以获取此筛选器转换为的正则表达式?

您可以使用一个简单的Perl脚本来读取模式文件,并将
%{PATTERN}
内容替换为它所基于的实际正则表达式--您需要对其进行一些自定义,但它显示了如何执行此操作:

#!/usr/bin/perl

# this is the path to your grok-patterns file
open(F,"patterns/grok-patterns");
while (<F>) {
  chomp;
  if (/^(\S+) (.*)/) {
    $pattern{$1} = $2;
  }
}
close(F);

# this is the grok pattern I want to expand
$pattern='%{IP:junk} %{COMBINEDAPACHELOG:junk2}';

while ($pattern =~ /(%\{([^:\}]+):?[^\}]*\})/) {
    $name = $2;
    substr($pattern,$-[0],$+[0]) = $pattern{$name};
}
print $pattern,"\n";
#/usr/bin/perl
#这是指向grok patterns文件的路径
开放式(F,“模式/grok模式”);
而(){
咀嚼;
如果(/^(\S+)(.*)/){
$pattern{$1}=$2;
}
}
关闭(F);
#这就是我想扩展的grok模式
$pattern='{IP:junk}%{COMBINEDAPACHELOG:junk2}';
而($pattern=~/(\{([^:\}]+):?[^\}]*\})/){
$name=$2;
substr($pattern,$-[0],$+[0])=$pattern{$name};
}
打印$pattern“\n”;