Rsyslog Installation · 9 min read · Oct 17, 2025
Instalando Rsyslog 5.7.x Completo no CentOS 5.x
Instalando Rsyslog 5.7.x Completo no CentOS 5.x
Este tutorial mostra como você pode instalar a nova geração de servidores syslog usando Rsyslog. De acordo com o site da Rsyslog (www.rsyslog.com), o Rsyslog é um syslogd aprimorado que suporta, entre outros, MySQL, PostgreSQL, destinos de log de failover, syslog/tcp, controle de formato de saída de grão fino, timestamps de alta precisão, operações em fila e a capacidade de filtrar em qualquer parte da mensagem. É bastante compatível com o sysklogd padrão e pode ser usado como um substituto direto. Seus recursos avançados o tornam adequado para cadeias de retransmissão syslog protegidas por criptografia de classe empresarial, ao mesmo tempo em que é muito fácil de configurar para o usuário novato.
Objetivos
Este tutorial mostra como você pode compilar e instalar o Rsyslog 5.7.9 completo no servidor CentOS 5.5. Não dou nenhuma garantia de que isso funcionará para você!
Pré-Instalação
Primeiro, precisamos instalar os seguintes pacotes:
yum install -y pcre pcre-devel mysql-server mysql-devel gnutls gnutls-devel gnutls-utils net-snmp net-snmp-devel net-snmp-libs net-snmp-perl net-snmp-utils libnet libnet-devel
Baixar pacote adicional:
librelp (Biblioteca de Protocolo de Registro de Eventos Confiável) é uma biblioteca fácil de usar para o protocolo RELP. O RELP, por sua vez, fornece registro de eventos confiável pela rede. O RELP (e, portanto, a librelp) garante que nenhuma mensagem seja perdida, mesmo quando as conexões falham e um par se torna indisponível. Observe que o RELP é um protocolo de registro de uso geral e extensível. Embora tenha sido projetado para resolver a necessidade urgente de comunicação rsyslog-para-rsyslog, o RELP suporta muitas mais aplicações.
cd /tmp
wget http://sourceforge.net/projects/libestr/files/libestr-0.1.0.tar.gz/download
tar -xvf libestr-0.1.0.tar.gz
cd libestr-0.1.0
./configure –prefix=/usr
make
make install
cd /tmp
wget http://www.libee.org/files/download/libee-0.1.0.tar.gz
tar -xvf libee-0.1.0.tar.gz
cd libee-0.1.0
./configure –prefix=/usr
make
make install
cd /tmp
wget http://honeynet.ir/software/rsyslog/librelp-1.0.0.tar.gz
tar -xvf librelp-1.0.0.tar.gz
cd librelp-1.0.0
./configure –prefix=/usr
make
make install
Baixar pacote Rsyslog:
No momento da redação deste tutorial, considero que o rsyslog 5.7.9 é a melhor versão do Rsyslog que suporta a maioria dos bons recursos que você pode precisar.
cd /tmp
wget http://www.rsyslog.com/files/download/rsyslog/rsyslog-5.7.9.tar.gz
tar -xvf rsyslog-5.7.9.tar.gz
cd rsyslog-5.7.9
Compilar e Instalar Rsyslog:
Para mais informações sobre as opções disponíveis no Rsyslog, você pode executar ./configure –help
O seguinte comando ativa a maioria dos recursos do rsyslog, como Compressão, Multithreading, MySql, SNMP, Mail, suporte RELP, etc.
./configure –enable-regexp –enable-zlib –enable-pthreads –enable-klog –enable-inet –enable-unlimited-select –enable-debug –enable-rtinst –enable-memcheck –enable-diagtools –enable-mysql –enable-snmp –enable-gnutls –enable-rsyslogrt –enable-rsyslogd –enable-extended-tests –enable-mail –enable-imptcp –enable-omruleset –enable-valgrind –enable-imdiag –enable-relp –enable-testbench –enable-imfile –enable-omstdout –enable-omdbalerting –enable-omuxsock –enable-imtemplate –enable-omtemplate –enable-pmlastmsg –enable-omudpspoof –enable-omprog –enable-impstats
make
make install
Preparar banco de dados MySQL:
Instalar o MySQL é obrigatório se você quiser salvar registros syslog no banco de dados; caso contrário, pule esta parte
mysql -u root -p < plugins/ommysql/createDB.sql
mysql -u root -p mysql
GRANT ALL ON Syslog.* TO rsyslog@localhost IDENTIFIED BY ‘sua-senha-mysql’;
flush privileges;
Configurar script init
vi /etc/init.d/rsyslog
#!/bin/bash
#
# rsyslog Inicia rsyslogd/rklogd.
#
#
# chkconfig: - 12 88
# description: Syslog é o recurso pelo qual muitos daemons usam para registrar
# mensagens em vários arquivos de log do sistema. É uma boa ideia sempre
# executar o rsyslog.
### BEGIN INIT INFO
# Provides: $syslog
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Stop: 0 1 2 3 4 5 6
# Short-Description: Daemons de registro de sistema aprimorados e captura de mensagens do kernel
# Description: O Rsyslog é um syslogd multi-threaded aprimorado que suporta,
# entre outros, MySQL, syslog/tcp, RFC 3195, listas de
# remetentes permitidos, filtragem em qualquer parte da mensagem, e controle de
# formato de saída de grão fino.
### END INIT INFO
# Fonte da biblioteca de funções.
. /etc/init.d/functions
RETVAL=0
start() {
[ -x /usr/local/sbin/rsyslogd ] || exit 5
#[ -x /usr/local/sbin/rklogd ] || exit 5
# Não inicie o rsyslog quando o sysklogd estiver em execução
if [ -e /var/run/syslogd.pid ] ; then
echo "$Desligue o sysklogd antes de executar o rsyslog";
exit 1;
fi
# Fonte da configuração
if [ -f /etc/sysconfig/rsyslog ] ; then
. /etc/sysconfig/rsyslog
else
#SYSLOGD_OPTIONS="-c3"
SYSLOGD_OPTIONS="-c5"
#KLOGD_OPTIONS="-2"
fi
if [ -z "$SYSLOG_UMASK" ] ; then
SYSLOG_UMASK=077;
fi
umask $SYSLOG_UMASK
echo -n "$Iniciando o registrador do sistema: "
daemon /usr/local/sbin/rsyslogd $SYSLOGD_OPTIONS
RETVAL=$?
echo
#echo -n "$Iniciando o registrador do kernel: "
#daemon rklogd $KLOGD_OPTIONS
#echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/rsyslog
return $RETVAL
}
stop() {
#echo -n "$Desligando o registrador do kernel: "
#killproc rklogd
#echo
echo -n "$Desligando o registrador do sistema: "
killproc rsyslogd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/rsyslog
return $RETVAL
}
reload() {
RETVAL=1
syslog=`cat /var/run/rsyslogd.pid 2>/dev/null`
echo -n "Recarregando o registrador do sistema..."
if [ -n "${syslog}" ] && [ -e /proc/"${syslog}" ]; then
kill -HUP "$syslog";
RETVAL=$?
fi
if [ $RETVAL -ne 0 ]; then
failure
else
success
fi
echo
RETVAL=1
#echo -n "Recarregando o registrador do kernel..."
#klog=`cat /var/run/rklogd.pid 2>/dev/null`
#if [ -n "${klog}" ] && [ -e /proc/"${klog}" ]; then
#kill -USR2 "$klog";
# RETVAL=$?
#fi
#if [ $RETVAL -ne 0 ]; then
#failure
#else
#success
#fi
#echo
return $RETVAL
}
rhstatus() {
status rsyslogd
#status rklogd
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload|force-reload)
reload
;;
status)
rhstatus
;;
condrestart)
[ -f /var/lock/subsys/rsyslog ] && restart || :
;;
*)
echo "$Uso: $0 {start|stop|restart|reload|force-reload|condrestart}"
exit 2
esac
exit $?Nota: certifique-se de que SYSLOGD_OPTIONS=”-c5” esteja definido!
Configurar Syslog e Rsyslog:
service syslog stop
chkconfig syslog off
chmod 755 /etc/init.d/rsyslog
chkconfig –add rsyslog
chkconfig rsyslog on
O script init está disponível para download no Projeto Iran Honeynet - Rsyslog
Configuração do Rsyslog
Algumas configurações que delineiam recursos estão disponíveis no site Rsyslog.com.
vi /etc/rsyslog.conf
# Módulos de Entrada -----------------------------------Esta linha é um comentário
#--------------------------------------------------Esta linha é um comentário
$ModLoad impstats.so
$PStatsInterval 300
syslog.info /var/log/rsyslog-stats
#--------------------------------------------------Esta linha é um comentário
$ModLoad immark.so # fornece capacidade de mensagem --MARK--
$ModLoad imuxsock.so # fornece suporte para registro local do sistema (via comando logger)
$ModLoad imklog.so # fornece suporte para registro do kernel (anteriormente feito pelo rklogd)
#--------------------------------------------------Esta linha é um comentário
$ModLoad imudp.so # fornece recepção de syslog UDP
$UDPServerAddress * # todas as interfaces locais
$UDPServerRun 514 # iniciar servidor UDP (receptor de log)
#--------------------------------------------------Esta linha é um comentário
$ModLoad imtcp.so # fornece recepção de syslog TCP e GSS-API (se compilado)
$InputTCPServerRun 514 # iniciar servidor TCP (receptor de log)
#--------------------------------------------------Esta linha é um comentário
$ModLoad imrelp.so # entrada RELP
$InputRELPServerRun 20514 # iniciar Protocolo RELP
#--------------------------------------------------Esta linha é um comentário
$ModLoad imfile.so # Entrada de arquivo de texto
$InputFileName /var/log/i-am-a-text-file.log
$InputFileTag my-text-file:
$InputFileStateFile stat-file1
$InputFileSeverity error
$InputFileFacility local7
$InputFilePollInterval 10 # verificar novas linhas a cada 10 segundos
$InputRunFileMonitor
#--------------------------------------------------Esta linha é um comentário
#$ModLoad imgssapi.so # TCP simples e GSSAPI
#$ModLoad im1395.so # Mensagens via RFC1395
# Módulos de Saída ----------------------------------Esta linha é um comentário
#--------------------------------------------------Esta linha é um comentário
$ModLoad omsnmp.so # Enviar armadilhas SNMP
#$actionsnmptransport udp
#$actionsnmptarget 192.168.x.x
#$actionsnmptargetport 162
#$actionsnmpversion 1
#$actionsnmpcommunity public
#*.* :omsnmp:
#--------------------------------------------------Esta linha é um comentário
$ModLoad ommysql.so # Registrar no MySQL
#$ModLoad ompgsql.so # Registrar no PostgreSQL
#--------------------------------------------------Esta linha é um comentário
$ModLoad ommail.so # Enviar email
#$ActionMailSMTPServer mail.example.net
#$ActionMailFrom [email protected]
#$ActionMailTo [email protected]
#$ActionMailTo [email protected]
#$template mailSubject,"problema de disco em %hostname%"
#$template mailBody,"Alerta RSYSLOG\r\nmsg='%msg%'"
#$ActionMailSubject mailSubject
#$ActionExecOnlyOnceEveryInterval 21600
#if $msg contains 'hard disk fatal failure' then :ommail:;mailBody
#--------------------------------------------------Esta linha é um comentário
$ModLoad omrelp.so # Enviar para outro host via RELP
#$ModLoad omlibdbi.so # Registrar via saída de DB genérica
#$ModLoad omgss.so # Saída habilitada para GSS
# Globais -----------------------------------------Esta linha é um comentário
$umask 0000
$DirCreateMode 0640
$FileCreateMode 0640
$RepeatedMsgReduction on
$WorkDirectory /var/log/rsyslog # local padrão para arquivos de trabalho (spool)
$ActionQueueType LinkedList # usar processamento assíncrono
$ActionQueueFileName queue # definir nome do arquivo, também habilita o modo disco
$ActionResumeRetryCount -1 # tentativas infinitas em caso de falha na inserção
$ActionQueueSaveOnShutdown on # salvar dados em memória se o rsyslog for desligado
$MainMsgQueueMaxFileSize 100M
$ActionQueueMaxFileSize 5M
#--------------------------------------------------Esta linha é um comentário
# Abaixo, encontre alguns exemplos do que um template pode fazer. Divirta-se
# descobrindo o que eles fazem [ou apenas os execute] ;)
# Um template que se assemelha à saída de arquivo syslogd tradicional:
$template TraditionalFormat,"%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n"
# um template útil para depurar problemas de formato
template DEBUG,"Linha de depuração com todas as propriedades:\nFROMHOST: '%FROMHOST%', HOSTNAME: '%HOSTNAME%', PRI: %PRI%,\nsyslogtag '%syslogtag%', programname: '%programname%', APP-NAME: '%APP-NAME%', PROCID: '%PROCID%', MSGID: '%MSGID%',\nTIMESTAMP: '%TIMESTAMP%', STRUCTURED-DATA: '%STRUCTURED-DATA%',\nmsg: '%msg%'\nescaped msg: '%msg:::drop-cc%'\nrawmsg: '%rawmsg%'\n\n"
# Um template que se assemelha ao formato RFC 3164 no wire:
# (sim, não há espaço entre syslogtag e msg! isso é importante!)
$template RFC3164fmt,"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg%"
# um template que se assemelha ao formato de mensagem de parede tradicional:
$template wallmsg,"\r\n\7Mensagem de syslogd@%HOSTNAME% em %timegenerated% ...\r\n %syslogtag%%msg%\n\r"
# O template abaixo emula o formato winsyslog, mas precisamos verificar os tempos
# timestamps usados. por enquanto, é bom o suficiente ;) Este formato funciona melhor com
# outros membros da família de produtos MonitorWare. Também é um bom exemplo
# onde você pode ver o substituidor de propriedades em ação.
$template WinSyslogFmt,"%HOSTNAME%,%timegenerated:1:10:date-rfc3339%,%timegenerated:12:19:date-rfc3339%,%timegenerated:1:10:date-rfc3339%,%timegenerated:12:19:date-rfc3339%,%syslogfacility%,%syslogpriority%,%syslogtag%%msg%\n"
# Um template usado para gravação em banco de dados (note que *é* uma
# instrução sql real):
$template dbFormat,"insert into SystemEvents (Message, Facility,FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslogfacility%, '%HOSTNAME%',%syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",sql
$template FileFormat,"%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
$template ForwardFormat,"<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
# As linhas de seletor são um pouco diferentes do syslogd padrão. Com
# rsyslog, você pode adicionar um ponto e vírgula ";" após o alvo e então
# o nome do template. Isso atribuirá este template à respectiva
# ação. Se nenhum nome de template for dado, um template codificado é usado.
# Se um nome de template for dado, mas o template não foi definido, a
# linha do seletor é DESATIVADA.
#--------------------------------------------------------------------
#--------------------------------------------------Esta linha é um comentário
# Encaminhar via TCP com compressão máxima:
#$AllowedSender TCP, 127.0.0.1, 192.0.2.0/24, [::1]/128, *.example.net, somehost.example.com
#*.* @@(z9)192.168.x.x:514
# Encaminhar via UDP com compressão máxima:
#$AllowedSender UDP, 127.0.0.1, 192.0.2.0/24, [::1]/128, *.example.net, somehost.example.com
#*.* @(z9)192.168.x.x:514
# Encaminhar via Protocolo RELP :
#*.* :omrelp:192.168.2.4:20514;TraditionalFormat
# Armazenar todos os arquivos de log no banco de dados MySQL :
#*.* :ommysql:127.0.0.1,Syslog,rsyslog,sua-senha-mysql
#--------------------------------------------------Esta linha é um comentário
#--------------------------------------------------Esta linha é um comentário
# Registrar todas as mensagens do kernel no console.
# Registrar muito mais bagunça a tela.
#kern.* /dev/console;TraditionalFileFormat
# Registrar qualquer coisa (exceto email) de nível info ou superior.
# Não registre mensagens de autenticação privadas!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# O arquivo authpriv tem acesso restrito.
authpriv.* /var/log/secure
# Registrar todas as mensagens de email em um só lugar.
mail.* -/var/log/maillog
# Registrar coisas do cron
cron.* /var/log/cron
# Todos recebem mensagens de emergência
*.emerg *
# Salvar erros de notícias de nível crit e superior em um arquivo especial.
uucp,news.crit /var/log/spooler
# Salvar mensagens de inicialização também em boot.log
local7.* /var/log/boot.log
#--------------------------------------------------Esta linha é um comentário
$IncludeConfig /etc/rsyslog.d/*.conf
#--------------------------------------------------Esta linha é um comentário
#if message contains 'network error' then run the restart-network.sh shell script!!!
#:msg, contains, "network error" ^/root/restart-network.sh
Nota Importante: Para mais informações, consulte o Rsyslog.com
O arquivo de configuração do Rsyslog está disponível para download no Projeto Iran Honeynet - Rsyslog
Iniciar Rsyslog
chmod 640 /etc/rsyslog.conf
service rsyslog start
tail -f /var/log/messages
Testar Rsyslog
logger “esta é uma mensagem de teste”
logger -p local0.info -t testtag “esta é uma mensagem de teste”
Links
Projeto Iran Honeynet: http://www.honeynet.ir/
Projeto Rsyslog: http://www.rsyslog.com/
CentOS: http://www.centos.org/
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.