Значение%HOSTNAME% равно "неизвестно" в rsyslog

Суть

Где rsyslog получает значение%HOSTNAME%?
Почему приложение, обслуживаемое Tomcat, имеет правильный%HOSTNAME%, а консольное приложение с такой же конфигурацией имеет "неизвестное" в качестве имени хоста?

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

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

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

Где rsyslog получает значение%HOSTNAME%? Почему приложение, обслуживаемое Tomcat, имеет правильный%HOSTNAME%, а консольное приложение с такой же конфигурацией имеет "неизвестное" в качестве имени хоста?

2 ответа

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

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

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

Если в rsyslog.conf нет этой строки, добавьте ее и перезапустите rsyslog $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

Другие вопросы по тегам