Я использую переменные rsyslog для составления имен файлов журналов. Переменные% HOSTNAME% и% fromhost-ip%. Все в порядке, но вопрос: как я могу добавить / добавить эти переменные в каждую строку журнала для журналов, поступающих с удаленных хостов?
1 ответ
Решением является использование пользовательских шаблонов rsyslog. Сначала вы создаете шаблон сообщения журнала.
Следующий шаблон напоминает формат системного журнала по умолчанию, но с %fromhost-ip%
вы можете добавить другие переменные таким же образом
$template tplremote,"%timegenerated% %HOSTNAME% %fromhost-ip% %syslogtag%%msg:::drop-last-lf%\n"
Затем мы создаем шаблон имени файла:
$template RemoteHost,"/var/log/remote/%HOSTNAME%.log"
И наконец, мы говорим rsyslog использовать созданные шаблоны:
if ($hostname != 'localhost') then ?RemoteHost;tplremote
& ~
Обратите внимание, что последние строки должны быть добавлены непосредственно перед строкой, содержащей.
*.info;mail.none;authpriv.none;cron.none
Также обратите внимание, что это было проверено и работало в свежем rsyslog из репозитория epel на redhat (rsyslog-7.6.7-1.el6.x86_64
). Поведение может отличаться в других дистрибутивах.