Erreurs lors de l'utilisation de la nouvelle syntaxe du modèle rsyslog sur RHEL6

8

Je migre notre configuration rsyslog d'un ancien serveur vers un nouveau et j'ai pensé profiter de l'occasion pour ranger notre configuration. L'ancienne configuration utilisait des définitions de modèle «héritées», et la doc rsyslog sur les modèles recommande de remplacer ces définitions par la nouvelle syntaxe de modèle, c'est donc ce que j'ai essayé de faire.

Je ne peux tout simplement pas le faire fonctionner, et les erreurs que j'obtiens en essayant de démarrer rsyslog n'ont aucun sens. Donc, il semble que j'ai fondamentalement mal compris les documents rsyslog, ou il y a quelque chose de drôle dans le paquet rsyslog inclus dans RHEL6.

Voici le modèle hérité que j'essaie de mettre à jour:

$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

C'est ma tentative sur ce même modèle dans la nouvelle syntaxe après avoir lu les documents 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%')"
)

Ce sont les erreurs que j'obtiens au démarrage de 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!
Bart B
la source

Réponses:

8

Eh bien, la réponse est plutôt simple (et probablement insatisfaisante). La nouvelle syntaxe n'est pas prise en charge dans cette ancienne version. Vous avez besoin d'au moins la v6, mais pour utiliser toutes les fonctionnalités, la v7 est requise. Jusqu'à présent, Red Hat ne les expédie pas pour RHEL. Comme alternative, vous pouvez utiliser les packages rsyslog rpm: http://www.rsyslog.com/rhelcentos-rpms/

Veuillez également noter que la doc sur http://www.rsyslog.com/doc est toujours pour la version LA PLUS ACTUELLE. Cependant, chaque version possède son propre ensemble de documents. Il est évidemment préférable de se référer à l'ensemble de doc qui accompagne votre version. La plupart des distributions ne l'installent pas par défaut, mais il existe généralement un package nommé le long de rsyslog-doc.

user168825
la source
7

Depuis septembre 2015, des packages rsyslog7 sont disponibles dans RHEL6. La version actuelle de rsyslog est 8.11, mais celle-ci est au moins plus proche de la version actuelle.

Pour installer, vous devez d'abord supprimer votre package rsyslog:

# rpm -e --nodeps rsyslog
# yum -y install rsyslog7
Dan Pritts
la source
0

Vous pouvez ajouter le référentiel ys rsyslog, puis mettre à jour rsyslog directement afin de ne pas avoir à le désinstaller.

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   

Fichier Repo pour référence:

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

Crédits:

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

storm_m2138
la source