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”