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/

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.