Chef infra 具有Logstash Grok模式问题的厨师ERB模板

Chef infra 具有Logstash Grok模式问题的厨师ERB模板,chef-infra,erb,chef-recipe,chef-template,Chef Infra,Erb,Chef Recipe,Chef Template,我有一个logstash配置文件,需要将其转换为chef erb模板(主要是filters部分)。然而,由于grok模式的格式,我不断遇到问题。 下面是grok模式的一个示例 grok { match => ["message", "<%{POSINT:seqnum1}>%{POSINT:seqnum2}: (\d*: |\.|\*)*%{SYSLOGTIMESTAMP:timestamp} %{WORD:tz}: \%%{WORD:facility_label}-

我有一个logstash配置文件,需要将其转换为chef erb模板(主要是filters部分)。然而,由于grok模式的格式,我不断遇到问题。 下面是grok模式的一个示例

  grok {
    match => ["message", "<%{POSINT:seqnum1}>%{POSINT:seqnum2}: (\d*: |\.|\*)*%{SYSLOGTIMESTAMP:timestamp} %{WORD:tz}: \%%{WORD:facility_label}-(%{WORD:switch_id}-)*%{INT:severity}-%{WORD:program}: %{GREEDYDATA:message}"]
grok{
match=>[“message”,“%{POSINT:seqnum2}:(\d*:\.\.\*)*%{SYSLOGTIMESTAMP:timestamp}%{WORD:tz}:\%{WORD:facility\u label}-({WORD:switch\u id}-*%{INT:severity}-%{WORD program}:%{greeddata:message}]
这就是问题所在。在这之后不久,我需要在IP地址等中进行一些插值填充,但这不会发生,因为
{[@metadata][sentry][msg]=>“%{host}”
“[@metadata][sentry][severity]”=>“%{severity}”
“[@metadata][sentry][host]”=>“”
“[@metadata][sentry][pid]”=>“”
“[@metadata][sentry][key]”=>“”
“[@metadata][sentry][secret]”=>“
}
}
因此,上述所有值都被处理为
字符串

有没有办法绕过这个问题?我已经尝试了
%{POSINT:seqnum2}:%%>
seen的转义方法。但它仍然将结束语
%>
放入。在ERB中还有其他转义字符/字符串的方法吗

谢谢!
Josh

您不想在文本中添加
%>
<代码>您不想在文本中添加
%>
<代码>谢谢你这么快就开始了!然而,如果我使用“[@metadata][sentry][pid][pid][code>作为“[@metadata][sentry][host][pid][pid][10.100.100][pid][10.100.100”`注释中有点难理解,但是你可以通过管道将一段Erb传输到
Erb-x
来查看生成的Ruby代码,这应该会让你知道发生了什么:)谢谢你这么快就来了!然而,如果我使用“[@metadata][sentry][pid][pid][code>作为“[@metadata][sentry][host][pid][pid][10.100.100][pid][10.100.100”`注释中有点难理解,但是你可以通过管道将一段Erb传输到
Erb-x
来查看生成的Ruby代码,这应该会让你了解发生了什么:)
mutate {
  add_field => {"[@metadata][sentry][msg]" => "%{host}"
    "[@metadata][sentry][severity]" => "%{severity}"
    "[@metadata][sentry][host]" => "<%= @sentry_host[:ipaddress] %>"
    "[@metadata][sentry][pid]" => "<%= @sentry_pid %>"
    "[@metadata][sentry][key]" => "<%= @sentry_key %>"
    "[@metadata][sentry][secret]" => "<%= @sentry_secret %>"
  }
}
$ echo '<%% foo <%= asdf %> bar <%= baz %>' | erb -x
#coding:ASCII-8BIT
_erbout = ''; _erbout.concat "<% foo "; _erbout.concat(( asdf ).to_s); _erbout.concat " bar "; _erbout.concat(( baz ).to_s); _erbout.concat "\n"
; _erbout.force_encoding(__ENCODING__)