У меня есть конфигурация Logstash, которую я использовал для пересылки сообщений журнала в сообщениях электронной почты. Он использует json
и json_encode
для анализа и повторного кодирования сообщений журнала JSON.Как я могу печатать JSON для тела электронной почты в logstash?
json_encode
используется для красивой печати JSON, которая предназначена для очень приятных писем. К сожалению, с недавними обновлениями в Logstash это уже не очень печатает.
Есть ли способ получить красивую форму события в поле, которое я могу использовать для тел электронной почты? Я в порядке с JSON, Ruby debug или большинством других читаемых пользователем форматов.
filter {
if [type] == "bunyan" {
# Save a copy of the message, in case we need to pretty-print later
mutate {
add_field => { "@orig_message" => "%{message}" }
}
json {
source => "message"
add_tag => "json"
}
}
// other filters that might add an "email" tag
if "email" in [tags] {
# pretty-print JSON for the email
if "json" in [tags] {
# re-parse the message into a field we can encode
json {
source => "@orig_message"
target => "body"
}
# encode the message, but pretty this time
json_encode {
source => "body"
target => "body"
}
}
# escape the body for HTML output
mutate {
add_field => { htmlbody => "%{body}" }
}
mutate {
gsub => [
'htmlbody', '&', '&',
'htmlbody', '<', '<'
]
}
}
}
output {
if "email" in [tags] and "throttled" not in [tags] {
email {
options => {
# config stuff...
}
body => "%{body}"
htmlbody => "
<table>
<tr><td>host:</td><td>%{host}</td></tr>
<tr><td>when:</td><td>%{@timestamp}</td></tr>
</table>
<pre>%{htmlbody}</pre>
"
}
}
}
json_encode плагин изменяет JSON парсер, и [ довольно-печатная версия должна быть добавлена назад] (https://github.com/logstash-plugins/logstash-filter-json_encode/issues/3). – approxiblue