Errores al utilizar la nueva sintaxis de plantilla rsyslog en RHEL6

8

Estoy migrando nuestra configuración de rsyslog de un servidor antiguo a uno nuevo, y pensé que aprovecharía la oportunidad para ordenar nuestra configuración. La configuración anterior usaba definiciones de plantilla "heredadas", y el documento rsyslog en plantillas recomienda reemplazar dichas definiciones con la nueva sintaxis de plantilla, así que eso es lo que intenté hacer.

Simplemente no puedo hacer que funcione, y los errores que obtengo al intentar iniciar rsyslog no tienen sentido. Entonces, parece que fundamentalmente he entendido mal los documentos de rsyslog, o hay algo divertido sobre el paquete rsyslog incluido en RHEL6.

Esta es la plantilla heredada que estoy tratando de actualizar:

$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

Este es mi intento de esa misma plantilla en la nueva sintaxis después de leer los documentos de 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%')"
)

Estos son los errores que obtengo al iniciar 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
fuente

Respuestas:

8

Bueno, la respuesta es bastante simple (y probablemente insatisfactoria). La nueva sintaxis no es compatible con esta versión anterior. Necesita al menos v6, pero para usar todas las características se requiere v7. Hasta ahora, Red Hat no envía estos para RHEL. Como alternativa, puede usar los paquetes rsyslog rpm: http://www.rsyslog.com/rhelcentos-rpms/

Tenga en cuenta también que el documento en http://www.rsyslog.com/doc es siempre para la versión MÁS ACTUAL. Sin embargo, cada versión tiene su propio conjunto de documentos. Obviamente, es mejor hacer referencia al conjunto de documentos que acompaña a su versión. La mayoría de las distribuciones no lo instalan de manera predeterminada, pero generalmente hay un paquete con el mismo nombre que rsyslog-doc.

usuario168825
fuente
7

A partir de septiembre de 2015, hay paquetes rsyslog7 disponibles en RHEL6. La versión actual de rsyslog es 8.11, pero esta está al menos más cerca de la actual.

Para instalar, primero debe eliminar su paquete rsyslog:

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

Puede agregar rsyslog yum repo y luego actualizar rsyslog directamente para que no tenga que desinstalarlo.

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   

Archivo de repositorio para referencia:

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éditos

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

tormenta_m2138
fuente