Ошибки при использовании нового синтаксиса шаблона rsyslog на RHEL6

8

Я переношу нашу конфигурацию rsyslog со старого сервера на новый, и решил, что воспользуюсь возможностью, чтобы привести в порядок нашу конфигурацию. В старой конфигурации использовались «устаревшие» определения шаблонов, и документ rsyslog по шаблонам рекомендует заменять такие определения новым синтаксисом шаблонов, поэтому я попытался это сделать.

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

Это устаревший шаблон, который я пытаюсь обновить:

$template secureTemplate,"INSERT INTO var_log_secure (received_at, source_ip, source_hostname, logged_at, severity, service, message, severity_int, syslogtag) VALUES ('%timegenerated:::date-rfc3339%', '%fromhost-ip%', '%hostname%', '%timereported:::date-rfc3339%', '%syslogseverity-text%', '%programname%', '%msg%', '%syslogseverity%', '%syslogtag%')",STDSQL

Это моя попытка использовать тот же шаблон в новом синтаксисе, прочитав документацию по rsyslog:

template(name="secureTemplate" type="string" option.stdsql="on"
  string="INSERT INTO var_log_secure (received_at, source_ip, source_hostname, logged_at, severity, service, message, severity_int, syslogtag) values ('%timegenerated:::date-rfc3339%', '%fromhost-ip%', '%hostname%', '%timereported:::date-rfc3339%', '%syslogseverity-text%', '%programname%', '%msg%', '%syslogseverity%', '%syslogtag%')"
)

Это ошибки, которые я получаю при запуске rsyslog:

rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="4491" x-info="http://www.rsyslog.com"] start
 rsyslogd-3000:unknown priority name "stdsql="on"" [try http://www.rsyslog.com/e/3000 ]
 rsyslogd:the last error occured in /etc/rsyslog.conf, line 49:"template(name="secureTemplate" type="string" option.stdsql="on""
 rsyslogd:warning: selector line without actions will be discarded
 rsyslogd-3000:unknown priority name "" [try http://www.rsyslog.com/e/3000 ]
 rsyslogd:the last error occured in /etc/rsyslog.conf, line 50:"  string="INSERT INTO var_log_secure (received_at, source_ip, source_hostname, logged_at, severity, service, message, severity_int, syslogtag) values ('%timegenerated:::date-rfc3339%', '%fromhost-ip%', '%hostname%', '%timereported:::date-rfc3339%', '%syslogseverity-text%', '%programname%', '%msg%', '%syslogseverity%', '%syslogtag%')""
 rsyslogd:warning: selector line without actions will be discarded
 rsyslogd-3000:unknown priority name "" [try http://www.rsyslog.com/e/3000 ]
 rsyslogd:the last error occured in /etc/rsyslog.conf, line 51:")"
 rsyslogd:warning: selector line without actions will be discarded
 rsyslogd-3003: Could not find template 'secureTemplate' - action disabled
 [try http://www.rsyslog.com/e/3003 ]
 rsyslogd:the last error occured in /etc/rsyslog.conf, line 55:"then    :ompgsql:127.0.0.1,rsyslog,rsyslog,+Without-Goodbye-22+;secureTemplate"
 rsyslogd:warning: selector line without actions will be discarded
 rsyslogd-2124:CONFIG ERROR: could not interpret master config file '/etc/rsyslog.conf'. [try http://www.rsyslog.com/e/2124 ]
 rsyslogd:EMERGENCY CONFIGURATION ACTIVATED - fix rsyslog config file!
Барт Б
источник

Ответы:

8

Ну, ответ довольно простой (и, вероятно, неудовлетворительный). Новый синтаксис не поддерживается в этой старой версии. Вам нужен как минимум v6, но для использования всех функций требуется v7. Пока Red Hat не отправляет их за RHEL. В качестве альтернативы вы можете использовать rpm-пакеты rsyslog: http://www.rsyslog.com/rhelcentos-rpms/

Также обратите внимание, что документ на http://www.rsyslog.com/doc всегда предназначен для версии MOST CURRENT. Тем не менее, каждая версия имеет свой собственный набор документов. Очевидно, что лучше обратиться к набору документов, который сопровождает вашу версию. Большинство дистрибутивов не устанавливают его по умолчанию, но обычно есть пакет с именем, аналогичным rsyslog-doc.

user168825
источник
7

По состоянию на сентябрь 2015 года в RHEL6 доступны пакеты rsyslog7. Текущая версия rsyslog - 8.11, но эта, по крайней мере, ближе к текущей.

Для установки сначала необходимо удалить пакет rsyslog:

# rpm -e --nodeps rsyslog
# yum -y install rsyslog7
Дэн Приттс
источник
0

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

cd /etc/yum.repos.d/
wget http://rpms.adiscon.com/v8-stable/rsyslog.repo
yum update rsyslog

...

Updating:
rsyslog                                    x86_64                               8.35.0-2.el6   

Репо файл для справки:

cat rsyslog.repo 
[rsyslog_v8]
name=Adiscon CentOS-$releasever - local packages for $basearch
baseurl=http://rpms.adiscon.com/v8-stable/epel-$releasever/$basearch
enabled=1
gpgcheck=0
gpgkey=http://rpms.adiscon.com/RPM-GPG-KEY-Adiscon
protect=1

Кредиты:

http://osengineer.blogspot.com/2014/01/install-rsyslog7-to-centos6.html https://www.rsyslog.com/rhelcentos-rpms/

storm_m2138
источник