Исправление серьезности в веб-интерфейсе graylog2
Я использую 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.
Первоначально все показывалось как "Предупреждение" (которое имеет числовое значение 5 в ruby /graylog-server и помечено в источниках как "неизвестно").
Затем я добавил серию фильтров мутаций, таких как эти:
mutate {
type => "webapps"
tags => "INFO"
add_tag => [ "ll_%{@level}", "mutated" ]
replace => [ "@level", "6" ] # informational
}
Это приблизило меня к правильному уровню логики / серьезности, отображаемому в веб-интерфейсе, но все сообщения "INFO" были показаны как сообщения отладки.
Я написал сценарий для просмотра данных эластичного поиска и установки поля уровня в зависимости от того, каким он должен быть.
- Отладка: 7
- Информационный: 6
- Предупреждение: 4
- Ошибка: 3
- Критический: 2
уровни 0, 1 и 5 не используются, так как источники указали, что они зарезервированы.
Но этот сценарий дорог с точки зрения ресурсов, и я не думаю, что он будет работать слишком хорошо, когда набор данных, который он пытается обновить, растет со скоростью сотен или тысяч сообщений в секунду.
Еще одна вещь, которую я заметил, это то, что когда я использую что-то вроде "@source" в теге, отображается правильное значение. Когда я делаю "@level", я вставляю это как литерал, который указывает, что это не было предопределенным полем, которое было указано.
Я немного посмотрел на источники, но не исчерпывающе, так что, возможно, я просто пропустил это.
Вопрос в том, что мне нужно изменить в моем фильтре мутаций, чтобы "ИНФО" отображался как "Информационный" в интерфейсе graylog2?
1 ответ
Ничто из того, что я пробовал, не сработало, и список рассылки тоже не смог помочь.
В итоге я перестал использовать logstash для этого, добавил jar-файл logback-gelf и добавил в свою конфигурацию logback.
С тех пор это работает как шарм.