Назад | Перейти на главную страницу

Использование Rsyslog для отправки журналов приложений на сервер syslog

Я пытаюсь настроить свой rsyslog для отправки журналов, созданных приложением в / opt / appname / logs, на удаленный сервер syslog. Я уже настроил rsyslog для отправки журналов уровня ОС, но хотел посмотреть, может ли он также отправлять журналы приложения. Я не уверен, работает ли директива IncludeConfig, поскольку она ищет другой файл * .conf.

rsyslog поддерживает чтение из файла. Это делается с помощью imfile модуль. Вам понадобится следующий конфиг:

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

# needs to be done for each file you want to watch
input(type="imfile" File="/path/to/file1" 
     Tag="tag1" 
      StateFile="statefile1" 
      Severity="error" 
      Facility="local7")

Больше информации на сайт документации rsyslog

Вы всегда можете использовать старый синтаксис:

например. /etc/rsyslog.d/11-your-file.conf

$ModLoad imfile

$InputFileName  /app/your-file.log 
$InputFileTag   your-tag
$InputFileStateFile     your-tag 
$InputFileSeverity      info
$InputFileFacility      local7 
$InputRunFileMonitor
$InputFilePersistStateInterval 1000 
local7.*  @@remote-rsyslog-server:port

Если вы подключите сценарий запуска, вы можете использовать его

tail -n 0 -F /opt/appname/logs/file | logger ... 

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

Недостатком этой настройки является то, что вы должны следить за журналом при запуске приложения, иначе вы пропустите промежуточные записи.

Лучшее решение, но дающее больше работы, - это использовать что-то вроде logstash.

Вы настраиваете входы в соответствии с журналами вашего приложения, для файла вы можете использовать sincedb чтобы он продолжал работу с того места, где он остановился в последний раз, и у вас есть модуль для вывода в системный журнал.

В зависимости от того, чего вы хотите, это может быть слишком много работы.