
Суть
Откуда 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 всегда было правильным именем хоста.