1
我有一个logstash配置文件,我需要转换为厨师erb模板(主要是过滤器部分)。不过,由于格罗克模式的格式,我仍然遇到问题。 下面是grok模式的一个例子。厨师ERB模板与Logstash 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}"]
这是问题。在此之后不久,我需要在IP地址中插入一些插值等。但它不会因为<%
开始自己的插值。
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 %>"
}
}
因此,上述所有值均作为字符串<%= @sentry_... %>
进行处理。
有没有办法解决这个问题?我试过<%%{POSINT:seqnum1}>%{POSINT:seqnum2}:%>
的逃生方法,看到here。但它仍然把关闭%>
in。任何其他方式来转义ERB中的字符/字符串?
谢谢! Josh
感谢这么快是这个!但是,如果我执行了<%%,它将不会插入任何内容,直到“@sentry_host [:ipaddress]”之后关闭/结束“%>”“[@metadata] [sentry] [host]”=>“<% = @sentry_host [:ipaddress]%>“ ”[@metadata] [sentry] [pid]“=>”<%= @sentry_host [:ipaddress]%>“'结束为'\t”[@metadata] [哨兵] [主机]“=>”<%= @sentry_host [:ipaddress]%>“ \t”[@metadata] [sentry] [pid]“=>”10.100.100.100“' –
这有点难这在一个评论中,但你总是可以将Erb的代码片段传递给'erb -x'来查看生成的Ruby代码,这应该让你知道发生了什么事情:) – coderanger