2015-12-18 2 views
2

Я пытаюсь получить Rsyslog's imfile плагин работает без любой настоящий успех.Плагин imsfile Rsyslog не работает на CentOS 7?

Здесь полезно OS информация версия:

# cat /etc/centos-release 
CentOS Linux release 7.1.1503 (Core) 

А вот Rsyslog Информация о версии:

# rsyslogd -v 
rsyslogd 7.4.7, compiled with: 
     FEATURE_REGEXP:       Yes 
     FEATURE_LARGEFILE:      No 
     GSSAPI Kerberos 5 support:    Yes 
     FEATURE_DEBUG (debug build, slow code): No 
     32bit Atomic operations supported:  Yes 
     64bit Atomic operations supported:  Yes 
     Runtime Instrumentation (slow code): No 
     uuid support:       Yes 

See http://www.rsyslog.com for more information. 

Я попытался какнаследие и RainerScript формат из конфигурации. Никто из них не работает для меня, к сожалению. Я должен делать что-то совершенно неправильное , но я просто не могу решить, что это может быть.

Вот моя фактическая тестирования конфигурация (в RainerScript, версия бывшего наследство я тестировал была точно таким же в его смысл):

# cat /etc/rsyslog.conf 
global(
    workDirectory = "/tmp" 
) 

module(
    load = "imuxsock" 
) 

module(
    load = "imjournal" 
    stateFile = "journal.state" 
) 

module(
    load = "imfile" 
    pollingInterval = "10" 
) 

ruleset(name = "test-ruleset") { 
    if $syslogtag contains "test-syslogtag" then { 
     action(
      type = "omfile" 
      file = "/tmp/test-file.log" 
     ) 
     stop 
    } 
} 

input(
    type = "imfile" 
    tag = "test-syslogtag" 
    stateFile = "test-input.state" 
    facility = "daemon" 
    severity = "debug" 
    file = "/tmp/test-input.in" 
    ruleset = "test-ruleset" 
) 

if prifilt("*.*") then { 
    action(
     type = "omfile" 
     file = "/tmp/rsyslog-testing.log" 
    ) 
} 

Нет предупреждение, ни ошибки являются подготовленный Rsyslog с вышеуказанной конфигурацией , но ничего не найдено из файла /tmp/test-input.in копируется в /tmp/test-file.log.

(я дважды проверил /var/log/audit/audit.log, конечно, и ... ничего подозрительного не существует. Будучи в отчаянии от того, что происходит, я также пытался setenforce 0 для переключения SELinux от полностью и перезапустить Rsyslog потом. Это не помогло, так что основная причина проблемы не может быть SELinux вопроса о связанных.)

Кроме того, файл test-input.state правильно создан в Глобы l workDirectory Путь (/tmp) в этом тесте). Я также пробовал стандартных путей (журналы в /var/log, файл состояния в /var/lib/rsyslog) , и он не работает, хотя все связанные файлы были созданы правильно.

Что странно: я не вижу каких-либо изменений в файле состояния, если я заполнить файл журнала ввода с некоторыми данными тестирования, даже после того, как Rsyslog рестарта с использованием # systemctl restart rsyslog (он должен обновить файл состояния по умолчанию).

Просто чтобы указать: плагины imjournal и imuxsock работают и правильно заполняют резервный файл журнала /tmp/rsyslog-testing.log.Также вручную работают Rsyslog на переднем плане с -D и/или -d вариантами не помог мне многое прояснить, почему imfile плагин не работает для меня в этой конкретной конфигурации.

Таким образом, могли бы вы, пожалуйста,

  1. проверить мой RainerScript синтаксис нет ли никакой очевидной вины (я предполагаю, что нет такого),
  2. показать мне рабочийimfile конфигурации плагина на EL7?

Большое спасибо.

-
MJF

ответ

2

С несколько незначительные изменения он начал, наконец, чтобы работать должным образом. Я думаю, что основной первопричину проблемы в моем случае должно было мое тестирование его в /tmp каталога, в котором Rsyslog, кажется, не работать должным образом по какой-то причине на CentOS 7.

(Пусть это будет /tmp заполняемого Системного пространство Файла даже несмотря на то, что Systemd вариант PrivateTmp не установлен в true в в Rsyslog единичного файла и этот параметр должен быть установлен на false по по умолчанию в Systemd страница руководства? Это очень непростительно, но Я еще не успел влезть в нее. Если я это выясню, Я буду обновлять этот ответ.)

Другой незначительные причиной может быть неправильный фильтр, написанный в RainerScript (мой экземпляр реального тестирования содержал ужасный опечатку я просто по-смотрел). Итак, вот результирующая конфигурация , которую работает как очарование для меня.

# cat /etc/rsyslog.conf 
global(
    workDirectory = "/var/lib/rsyslog" 
) 

module(
    load = "imuxsock" 
) 

module(
    load = "imjournal" 
    stateFile = "journal.state" 
) 

module(
    load = "imfile" 
    pollingInterval = "10" 
) 

ruleset(name = "test-ruleset") { 
    if $programname == "test-syslogtag" then { 
     action(
      type = "omfile" 
      file = "/var/log/test-file.log" 
     ) 
     stop 
    } 
} 

input(
    type = "imfile" 
    tag = "test-syslogtag:" 
    stateFile = "test-input.state" 
    facility = "daemon" 
    severity = "debug" 
    file = "/var/log/test-input.in" 
    ruleset = "test-ruleset" 
) 

if prifilt("*.*") then { 
    action(
     type = "omfile" 
     file = "/var/log/rsyslog-testing.log" 
    ) 
} 

Небольшой намек для тех, кто не зная его - $syslogtag и $programname кажутся близкими родственниками: $syslogtag := $programname ":". Вы можете легко узнать все $ префиксы переменных, которые могут совпадать с , используя RSYSLOG_DebugFormat выходной шаблон, который уже скомпилирован.

Я надеюсь, что это помогает.

-
MJF

Смежные вопросы