rsyslog - Linux
Uma das características notáveis do Linux é a abundante criação de logs para diversas ações realizadas no sistema. Um dos principais componentes responsáveis pelo log no Linux é o processo rsyslog
/var/log
programicio@Programicio:~$ ls -l /var/log total 49200 -rw-r--r-- 1 root root 5267 Mar 20 11:22 alternatives.log drwxr-x--- 2 root adm 4096 Mar 21 07:08 apache2 -rw-r----- 1 root adm 426 Mar 21 07:08 apport.log drwxr-xr-x 2 root root 4096 Mar 20 11:22 apt -rw-r----- 1 syslog adm 141654 Mar 21 09:17 auth.log ... -rw-rw-r-- 1 root utmp 187008 Mar 21 07:09 wtmp
O conteúdo específico pode variar dependendo do sistema e do software instalado. No entanto, podemos destacar principalmente o arquivo syslog
Além do processo rsyslog
rsyslog
O arquivo principal de configuração do rsyslog
/etc/rsyslog.conf
/etc/rsyslog.d
/etc/rsyslog.conf
/etc/rsyslog.conf
Vamos examinar como é a configuração em /etc/rsyslog.conf
programicio@Programicio:~$ cat /etc/rsyslog.conf # /etc/rsyslog.conf configuration file for rsyslog # # For more information install rsyslog-doc and see # /usr/share/doc/rsyslog-doc/html/configuration/index.html # # Default logging rules can be found in /etc/rsyslog.d/50-default.conf ################# #### MODULES #### ################# module(load="imuxsock") # provides support for local system logging #module(load="immark") # provides --MARK-- message capability # provides UDP syslog reception #module(load="imudp") #input(type="imudp" port="514") # provides TCP syslog reception #module(load="imtcp") #input(type="imtcp" port="514") # provides kernel logging support and enable non-kernel klog messages module(load="imklog" permitnonkernelfacility="on") ########################### #### GLOBAL DIRECTIVES #### ########################### # Filter duplicated messages $RepeatedMsgReduction on # # Set the default permissions for all log files. # $FileOwner syslog $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 $Umask 0022 $PrivDropToUser syslog $PrivDropToGroup syslog # # Where to place spool and state files # $WorkDirectory /var/spool/rsyslog # # Include all config files in /etc/rsyslog.d/ # $IncludeConfig /etc/rsyslog.d/*.conf
A estrutura do arquivo consiste principalmente de dois componentes: módulos e diretivas globais. No final do arquivo, podemos ver a diretiva:
$IncludeConfig /etc/rsyslog.d/*.conf
Ela inclui o conteúdo dos arquivos com extensão .conf
/etc/rsyslog.d/
50-default.conf
O arquivo 50-default.conf
rsyslog
programicio@Programicio:~$ cat /etc/rsyslog.d/50-default.conf # Default rules for rsyslog. # # For more information see rsyslog.conf(5) and /etc/rsyslog.conf # # First some standard log files. Log by facility. # auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog #cron.* /var/log/cron.log #daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log #lpr.* -/var/log/lpr.log mail.* -/var/log/mail.log #user.* -/var/log/user.log # # Logging for the mail system. Split it up so that # it is easy to write scripts to parse these files. # #mail.info -/var/log/mail.info #mail.warn -/var/log/mail.warn mail.err /var/log/mail.err # # Some "catch-all" log files. # #*.=debug;\ # auth,authpriv.none;\ # news.none;mail.none -/var/log/debug #*.=info;*.=notice;*.=warn;\ # auth,authpriv.none;\ # cron,daemon.none;\ # mail,news.none -/var/log/messages # # Emergencies are sent to everybody logged in. # *.emerg :omusrmsg:* # # I like to have messages displayed on the console, but only on a virtual # console I usually leave idle. # #daemon,mail.*;\ # news.=crit;news.=err;news.=notice;\ # *.=debug;*.=info;\ # *.=notice;*.=warn /dev/tty8
Regras de Log
As regras determinam onde os logs serão registrados para um determinado objeto (facility). Em particular, é possível estabelecer regras para os seguintes objetos:
: Processa eventos relacionados à autenticação.auth
: Similar aoauthpriv
, também processa eventos de autenticação.auth
: Processa mensagens criadas pelo subsistemacron
.cron
: Registra mensagens criadas por um daemon (serviço).daemon
: Registra mensagens relacionadas ao kernel, incluindo aquelas geradas pelo firewall do kernel (iptables).kern
: Registra mensagens relacionadas ao sistema de impressão obsoletolpr
.lpr
: Registra mensagens relacionadas ao serviço de correio.mail
: Registra mensagens relacionadas ao protocolo NNTP (protocolo de notícias da rede).news
: Registra mensagens relacionadas ao usuário.user
Prioridades
Ao registrar logs, os objetos criam mensagens com uma prioridade definida. Se uma prioridade for especificada, todas as mensagens com essa prioridade e com prioridades mais altas são registradas no arquivo de log indicado. No rsyslog
: Informação de depuração, fornece detalhes sobre tudo o que o objeto faz, como chamadas de sistema e bibliotecas executadas.debug
: Informação padrão sobre o que o processo está fazendo, como arquivos abertos, sem detalhes de chamadas de sistema e bibliotecas.info
: Informação sobre erros não críticos, como a criação automática de um arquivo ausente.notice
(forma obsoleta:warn
): Informação sobre advertências durante a execução do processo, indicando que a funcionalidade normal foi interrompida, mas o objeto continua a funcionar.warning
(forma obsoleta:err
): Informação sobre erros que afetam o funcionamento normal do objeto.error
: Informação sobre situações críticas que ameaçam o funcionamento normal do computador.crit
: Informação sobre situações que podem levar à interrupção do computador.alert
(forma obsoleta:emerg
): Indica a cessação do funcionamento normal do computador.panic
Para configurar o log no arquivo de configuração, combina-se o objeto com a prioridade no formato:
objeto.prioridade
A prioridade mencionada também inclui todas as prioridades mais altas. Por exemplo:
kern.info
Essa entrada se refere a mensagens informativas e a mensagens com prioridade mais alta geradas pelo kernel.
Pode-se especificar vários objetos em uma linha, separados por vírgula. Por exemplo, a entrada a seguir se refere a mensagens informativas tanto do kernel quanto do processo cron
kern,cron.info
Como alternativa, pode-se referir a todos os objetos usando um asterisco, como no exemplo a seguir:
*.crit
Especificar uma prioridade por padrão também inclui o registro de prioridades mais altas. No entanto, se for necessário definir uma regra de log apenas para uma prioridade específica, sem incluir mensagens de prioridades mais altas, usa-se o sinal de igual:
mail.=info
Nesse caso, são registradas mensagens informativas relacionadas ao correio, mas mensagens com prioridades mais altas não são registradas.
Também é possível usar o operador de exclusão para a prioridade e para cada prioridade superior, colocando um ponto de exclamação antes do nome da prioridade:
mail.!info
Arquivos de Log
Quando ocorre um evento, uma ação é executada sobre ele. Normalmente, essa ação significa que a mensagem é enviada para algum lugar. O arquivo de configuração permite definir o local de log para várias combinações de objetos e prioridades. Geralmente, os locais de log são arquivos. Ao especificar o nome de um arquivo, as mensagens são registradas nesse arquivo, cujo nome é fornecido como um caminho absoluto. Para que cada mensagem não seja registrada imediatamente no arquivo, pode-se colocar um sinal de menos -
kern.* -/var/log/kern.log
Nesse caso, todas as mensagens (de todas as prioridades) relacionadas ao kernel são registradas no arquivo /var/log/kern.log
O ponto e vírgula ;
\
#*.=debug;\ # auth,authpriv.none;\ # news.none;mail.none -/var/log/debug
Ou, por exemplo, no arquivo de configuração há uma linha assim:
*.*;auth,authpriv.none -/var/log/syslog
A expressão *.*
auth,authpriv.none
auth/authpriv
auth/authpriv
/var/log/syslog
Comando logger
O comando logger
rsyslog
logger hello www.programicio.com
Após isso, no arquivo /var/log/syslog
2024-03-21T09:01:15.794001+03:00 Programicio programicio: hello www.programicio.com
Ao usar o comando logger, a mensagem de log pode ser marcada com uma tag específica. Isso facilita a identificação dessas mensagens posteriormente. Para isso, utiliza-se o parâmetro -t
logger -t hello hi www.programicio.com
marcará a mensagem "hi www.programicio.com" no arquivo syslog
syslog
2024-03-21T09:09:03.924923+03:00 Programicio hello: hi www.programicio.com