У меня есть файл конфигурации 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?
Спасибо! Джош