ฉันมีไฟล์กำหนดค่า 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_... %>
มีวิธีแก้ไขเรื่องนี้หรือไม่? ฉันได้ลองใช้วิธี Escape ของ <%%{POSINT:seqnum1}>%{POSINT:seqnum2}:%>
แล้ว ดูที่นี่ แต่ยังคงใส่การปิด %>
ไว้ มีวิธีอื่นในการหลีกเลี่ยงอักขระ/สตริงใน ERB หรือไม่
ขอบคุณ! จอช