Я использую logstash для сбора журналов из группы веб-приложений и отправки их в graylog2 для централизованного просмотра.
У меня есть следующий фильтр для токенизации:
grok {
type => "webapps"
pattern => "^%{TIME:timestamp} \[%{NOTSPACE:thread}\]%{SPACE}%{WORD:loglevel}%{SPACE}%{JAVACLASS:class} - %{GREEDYDATA:short_message}"
drop => false
debug => "true"
add_tag => [ "%{loglevel}" ]
}
Уровень логирования будет таким: TRACE, DEBUG, INFO, NOTICE, ERROR, FATAL.
Первоначально все отображалось как «Alert» (которое имеет числовое значение 5 в ruby / graylog-server и помечено в источниках как «unknown»).
Затем я добавил ряд фильтров изменения, таких как эти:
mutate {
type => "webapps"
tags => "INFO"
add_tag => [ "ll_%{@level}", "mutated" ]
replace => [ "@level", "6" ] # informational
}
Это приблизило меня к правильному уровню логирования / серьезности, отображаемым в веб-интерфейсе, но все сообщения «INFO» отображались как сообщения отладки.
Я написал сценарий, чтобы просмотреть данные elasticsearch и установить поле уровня в зависимости от того, каким оно должно быть.
при этом уровни 0, 1 и 5 не используются, поскольку источники указывают, что они были зарезервированы.
Но этот скрипт дорог с точки зрения ресурсов, и я не думаю, что он будет работать слишком хорошо, когда набор данных, который он пытается обновить, растет со скоростью сотен или тысяч сообщений в секунду.
Еще я заметил, что когда я использую что-то вроде «@source» в теге, появляется правильное значение. Когда я делаю "@level", я получаю это как литерал, который указывает, что это не предопределенное поле было указано.
Я просмотрел источники немного, но не исчерпывающе, так что, возможно, я просто пропустил это.
Вопрос в том, что мне нужно изменить в моем фильтре изменения, чтобы «INFO» отображалось как «Информационное» в интерфейсе graylog2?
Ничего из того, что я пробовал, не сработало, и список рассылки тоже не помог.
В итоге я прекратил использовать для этого logstash и добавил банку logback-gelf и добавил в свою конфигурацию logback.
С тех пор он работал как шарм.