У меня есть конфигурация Logstash, которую я использовал для пересылки сообщений журнала в электронных письмах. Он использует json
и json_encode
для анализа и перекодирования сообщений журнала JSON.
json_encode
использовался для красивой печати JSON, что делало электронные письма очень красивыми. К сожалению, с недавними обновлениями Logstash он больше не печатает.
Есть ли способ получить красивую форму события в поле, которое я могу использовать для тела электронной почты? Меня устраивает JSON, отладка Ruby или большинство других удобочитаемых форматов.
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>
"
}
}
}