我有一个logstash 配置文件,我需要将其转换为chef erb 模板(主要是过滤器部分)。但是,由于 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}"]
这是问题所在。此后不久,我需要在 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}:%>
看到的逃生方法。但它仍然会关闭。还有其他方法可以在 ERB 中转义字符/字符串吗?%>
谢谢!乔什