Я использую Amazon Linux AMI версии 2015.03, я пытаюсь настроить rsyslog для перенаправления журналов на удаленный сервер журналов (в данном случае logstash), удалив файл conf в /etc/rsyslog.d.
Конфигурация удаленного ведения журнала, похоже, работает нормально, но журналы по-прежнему записываются в / var / log / messages. Это проблема, потому что они заполняют диск.
Мой файл conf выглядит так:
# Log docker generated log messages to logstash
:syslogtag, startswith, "docker" @x.x.x.x:5000
& ~
После некоторого исследования с некоторыми другими системами я обнаружил, что файл rsyslog.conf, существующий по умолчанию в Amazon Linux, включает эту директиву в самый конец файла conf:
$IncludeConfig /etc/rsyslog.d/*.conf
В других системах, которые я использовал, эта директива находится выше в файле конфигурации ... определенно перед конфигурациями журнала по умолчанию. Мне кажется, что из-за этого значения по умолчанию не могут быть отменены. Я что-то упускаю?
Мне кажется, что из-за этого значения по умолчанию не могут быть отменены. Я что-то упускаю?
Не думайте об этом как об отмене значений по умолчанию, но в остальном вы правы. В вашем файле & ~
отбрасывает сообщение журнала, предотвращая дальнейшую обработку. Если это происходит выше встроенной обработки для /var/log/messages
, сообщение журнала будет удалено и, таким образом, исключено из этого файла. Поскольку ваш $IncludeConfig
происходит после, и ваша инструкция drop.
У вас есть два варианта;
$IncludeConfig
заявление вверх.Я лично предпочел бы последнее, потому что мне нравится хранить журналы локально (в течение разумного периода времени), а также пересылать их на удаленный сервер для агрегирования / хранения. Имея сообщения журнала, доступные в /var/log/messages
сделает устранение неполадок более удобным, а также упрощенным для всех, кто использует систему, поскольку это ожидаемое место.