No Linux, todas as mensagens do sistema e do kernel são passadas para rsyslogd e para cada mensagem de log recebida, o Rsyslog examina seu arquivo de configuração /etc/rsyslog.conf para determinar como lidar com essa mensagem. Se nenhuma instrução dentro de /etc/rsyslog.conf corresponder à mensagem recebida, Rsyslog a descartará.
Dentro de /etc/rsyslog.conf, as declarações de regras especificam duas coisas:
- seletores: quais mensagens combinam isto é, aplicam-se às regras. Além do termo combinar podemos usar “dá match” ou ainda a palavra corresponder.
- ações: o que fazer com as mensagens correspondentes
Vamos ver um pouco sobre Seletores e Ações.
Seletores
As mensagens a serem correspondidas(que dão match) são especificadas por um seletor que corresponde ao que chamamos de facility e priority(ou prioridades e instalações) enquanto as ações a serem aplicadas às mensagens correspondidas são especificadas por um campo que chamamos de ação.
A seguinte linha diz ao Rsyslog para aplicar a ação /var/log/kernlog a todas as mensagens quem tenha o facility de kern e um nível de debug(depuração)
# cat /etc/rsyslog.conf kern.debug /var/log/kernlog
acima temos:
- seletor = kern.debug
- facility = kern
- priority = debug
- ação = /var/log/kernlog
Sim, kern é o que chamamos de facility e debug é o seu priority(nível do log). Já /var/log/kernlog é a ação.
kern.debug é um seletor que corresponde a todas as mensagens produzidas pelo kernel com prioridade de depuração ou superior; como debug é a prioridade mais baixa de todas, o seletor kern.debug combina todas as mensagens que tenham um recurso o facility de kern.
Um asterisco pode ser usado como curinga para representar todas as prioridades, então kern.* também corresponderia a todas as mensagens produzidas pelo kernel.
# cat /etc/rsyslog.conf kern.* /var/log/kernlog
Falando de facility, ao contrário do campo de prioridade(priority), o campo para facilcity não é hierárquico. No entanto, ainda é possível combinar várias mensagens de diferentes facility.
Vários seletores podem ser listados em uma linha, separados por ponto e vírgula. Isso pode ser útil quando a mesma ação precisa ser aplicada a várias mensagens.
O asterisco pode ser usado para especificar todos os recursos, fornecendo outro método para aplicar uma ação a uma variedade de mensagens.
# cat /etc/rsyslog.conf *.debug /var/log/kernlog
TABELA DE FACILITIES
| Instalação | Descrição |
|---|---|
| auth/authpriv | mensagens de segurança/autorização |
| cron | mensagens dos daemons crond e atd |
| daemon | outros daemons do sistema |
| kern | mensagens do kernel |
| local0 – local7 | reservado para uso local |
| lpr | subsistema de impressora de linha |
| subsistema de email | |
| news | Subsistema de notícias da USENET |
| syslog | mensagens geradas internamente pelo daemon de log do sistema |
| user | mensagens genéricas em nível de usuário |
| uucp | Subsistema UUCP |
TABELA DE PRIORITIES
| Prioridade | Descrição |
|---|---|
| emerg | o sistema está inutilizável |
| alert | ação deve ser tomada imediatamente |
| crit | condições críticas |
| err | condições de erro |
| warning | condições de alerta |
| notice | condição normal, mas significativa |
| info | mensagens informativas |
| debug | mensagens de depuração |
Ações
Muitas ações são possíveis, embora apenas uma possa ser incluída em uma regra.
- Os nomes dos arquivos podem ser listados no campo de ação, especificando a localização dos arquivos nos quais a mensagem selecionada deve ser gravada. Esses arquivos podem ser arquivos de texto, como geralmente é o caso, mas também podem ser arquivos de dispositivo, como um terminal ou uma impressora.
- Os nomes de usuário também podem ser especificados. Se o usuário nomeado estiver conectado ao sistema quando o Rsyslog processar a mensagem, a mensagem será impressa em todos os terminais desse usuário.
- Um * asterisco para a ação diz ao Rsyslog para escrever a mensagem para todos os usuários conectados (vai para todos os terminais ativos).
- As mensagens podem ser enviadas para hosts remotos. A ação @host diz ao Rsyslog para encaminhar a mensagem o pc chamado host, onde ela será processada novamente pelo daemon seu Syslog.
Exemplo de um Arquivo rsyslog.conf
# rsyslog configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# or latest version online at http://www.rsyslog.com/doc/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
module(load="imuxsock" # provides support for local system logging (e.g. via logger command)
SysSock.Use="off") # Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
module(load="imjournal" # provides access to the systemd journal
StateFile="imjournal.state") # File to store the position in the journal
#module(load="imklog") # reads kernel messages (the same are read from journald)
#module(load="immark") # provides --MARK-- message capability
# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
#module(load="imudp") # needs to be done just once
#input(type="imudp" port="514")
# Provides TCP syslog reception
# for parameters see http://www.rsyslog.com/doc/imtcp.html
#module(load="imtcp") # needs to be done just once
#input(type="imtcp" port="514")
#### GLOBAL DIRECTIVES ####
# Where to place auxiliary files
global(workDirectory="/var/lib/rsyslog")
# Use default timestamp format
module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")
# Include all config files in /etc/rsyslog.d/
include(file="/etc/rsyslog.d/*.conf" mode="optional")
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg :omusrmsg:*
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
local5.* /var/log/samba/samba.log
# ### sample forwarding rule ###
#action(type="omfwd"
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#queue.filename="fwdRule1" # unique name prefix for spool files
#queue.maxdiskspace="1g" # 1gb space limit (use as much as possible)
#queue.saveonshutdown="on" # save messages to disk on shutdown
#queue.type="LinkedList" # run asynchronously
#action.resumeRetryCount="-1" # infinite retries if host is down
# Remote Logging (we use TCP for reliable delivery)
# remote_host is: name/ip, e.g. 192.168.0.1, port optional e.g. 10514
#Target="remote_host" Port="XXX" Protocol="tcp")
Fonte: rsyslog.com
Comment on “Linux: Entendendo /etc/rsyslog.conf para Configurar o Log do Sistema”