Erros ao usar a nova sintaxe do modelo rsyslog no RHEL6

8

Estou migrando nossa configuração do rsyslog de um servidor antigo para um novo e pensei em aproveitar a oportunidade para arrumar nossa configuração. A configuração antiga usava definições de modelo "legado" e o documento rsyslog sobre modelos recomenda a substituição dessas definições pela nova sintaxe de modelo. Foi isso que tentei fazer.

Simplesmente não consigo fazê-lo funcionar, e os erros que estou recebendo ao tentar iniciar o rsyslog não fazem sentido. Então, parece que eu compreendi fundamentalmente os documentos do rsyslog ou há algo engraçado no pacote rsyslog incluído no RHEL6.

Este é o modelo legado que estou tentando atualizar:

$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

Esta é minha tentativa do mesmo modelo na nova sintaxe, depois de ler os documentos do 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%')"
)

Estes são os erros que recebo na inicialização do 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
fonte

Respostas:

8

Bem, a resposta é bastante simples (e provavelmente insatisfatória). A nova sintaxe não é suportada nesta versão antiga. Você precisa de pelo menos a v6, mas para usar todos os recursos, a v7 é necessária. Até agora, a Red Hat não os envia para o RHEL. Como alternativa, você pode usar os pacotes rsyslog rpm: http://www.rsyslog.com/rhelcentos-rpms/

Observe também que o documento em http://www.rsyslog.com/doc é sempre para a versão MAIS ATUAL. No entanto, cada versão possui seu próprio conjunto de documentos. Obviamente, é melhor consultar o conjunto de documentos que acompanha sua versão. A maioria das distros não o instala por padrão, mas geralmente há um pacote nomeado ao longo das linhas do rsyslog-doc.

user168825
fonte
7

Em setembro de 2015, existem pacotes rsyslog7 disponíveis no RHEL6. A versão atual do rsyslog é 8.11, mas esta é pelo menos mais próxima da atual.

Para instalar, você primeiro precisa remover o pacote rsyslog:

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

Você pode adicionar o rsyslog yum repo e atualizar o rsyslog diretamente, para não precisar desinstalá-lo.

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   

Arquivo Repo para referência:

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/

storm_m2138
fonte