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