Добавление новых файлов в rsyslogd с подстановочными знаками - PullRequest
0 голосов
/ 16 января 2020

У нас есть уже существующий конфигурационный файл rsyslog, который работает для papertrail, например,

/etc/rsyslog.d/20-papertrail.conf, который имеет

*.*          @logs4.papertrailapp.com:44407

Однако у нас есть пара NGINX веб-сайты на сервере, поэтому хотелось бы, чтобы он также отслеживал их журналы ошибок.

Пути к ним:

/var/log/nginx/www.website-one.com-error.log
/var/log/nginx/www.website-two.com-error.log
/var/log/nginx/www.website-three.com-error.log

Однако этот /var/log/nginx также содержит набор .log файлы, которые мы не хотим отслеживать, например,

/var/log/nginx/error.log
/var/log/nginx/access.log
/var/log/nginx/error.log1
/var/log/nginx/nginx.log

В моей голове нам нужно добавить что-то вроде ...

/var/log/nginx/*-error.log

И убедиться, что они направляют на URL-адрес papertrail как хорошо.

Однако я изо всех сил пытаюсь расшифровать документацию rsyslog, чтобы выяснить, как это сделать.

Спасибо!

1 Ответ

0 голосов
/ 16 января 2020

В документации rsyslog кажется, что вы можете использовать подстановочные знаки в файлах.

Файл

Отслеживаемый файл. Пока что это должно быть абсолютное имя (без макросов или шаблонов). Обратите внимание, что подстановочные знаки поддерживаются на уровне имени файла (см. Ниже подстановочные знаки для получения дополнительной информации).

Подстановочные знаки

До версии: 8.25.0

Подстановочные знаки поддерживаются только в части имени файла, но не в именах каталогов.

/var/log/*.log работает.

/var/log/*/syslog.log не работает.

Начиная с версии: 8.25.0

Подстановочные знаки поддерживаются в имени файла и путях, что означает, что эти примеры будут работать:

/var/log/*.log работает.

/var/log/*/syslog.log работает.

/var/log/*/*.log работает.

Все соответствующие файлы во всех соответствующих подпапках будут работать. Обратите внимание, что это может снизить производительность в imfile в зависимости от того, сколько каталогов и файлов просматривается динамически.

Если вы хотите переслать ваши журналы vhosts, вы можете изменить конфигурацию непосредственно в конфигурации NGINX vhosts. следует изменить / добавить политики access_log и error_log, как описано здесь или использовать пользовательские средства для пересылки ваших журналов (с помощью rsyslog).

КАК ЭТО С ИСПОЛЬЗОВАНИЕМ RSYSLOG?

Создайте новый пользовательский файл в /etc/rsyslog.d/nginx_custom.conf:

module(load="imfile" PollingInterval="1") #needs to be done just once

# File 1
input(type="imfile"
      File="/var/log/nginx/www.website-*.com-error.log"
      Tag="websites"
      Facility="local0")

local0.* @logs4.papertrailapp.com:44407
#Just to test that logs are forwarded, comment the line once you've tested it
local0.* /var/log/test.log

и перезапустите службу rsyslog

NOTE : строка local0.* /var/log/test.log просто для проверки того, что вы можете видеть перенаправленные журналы на ваш локальный сервер, прокомментируйте эту строку после того, как вы проверили, что все работает.

...