Значение %HOSTNAME% в шаблоне rsyslog равно «неизвестно»

Значение %HOSTNAME% в шаблоне rsyslog равно «неизвестно»

Суть

Откуда rsyslog берет значение %HOSTNAME% и при каких условиях ожидаемым значением будет «unknown»?

Мы используем rsyslog на экземпляре EC2 и пытаемся отправить наши журналы в loggly. Если я просматриваю tail -fсообщения журнала, я могу увидеть журнал в формате по умолчанию, включая дату, имя хоста, тег и сообщение.

Если я использую logger "message", то я вижу правильную запись в журнале и в консоли, и в loggly. Однако, если консольное приложение Java регистрирует событие, имя хоста "неизвестно" и в консоли, и в loggly.

Как ни странно, одна и та же конфигурация rsyslog и log4j приводит к правильной записи журнала, если она исходит от веб-приложения, размещенного на tomcat.

Я знаю, что часть этого относится к Java, но у меня такой вопрос: откуда rsyslog берет значение %HOSTNAME% и при каких условиях ожидаемым значением будет «unknown»?

решение1

Я понял это. Чтобы получить имя хоста, мне нужно было сопоставить имя хоста с IP-адресом в файле hosts. На самом деле я думал, что это уже происходит, но в то время, когда скрипт запускался для добавления правильной записи hosts, IP-адрес был неизвестен, и к файлу добавлялось только имя хоста.

Я добавил правильную запись, и имя хоста отображается в rsyslog и loggly так, как и ожидалось.

В то же время я изменил формат журнала с %HOSTNAME% на %$myhostname%. Это отлично сработало для нас, поскольку мы не вели удаленный журнал, поэтому $myhostname всегда было правильным именем хоста.

Связанный контент