Learn Linux, 101: Registo do sistema

2 xmlns=”http://www.w3.org/1999/xhtmlOvervisão geral

Neste tutorial, aprender a:

  • Configurar o daemon syslog
  • Configurar instalações, prioridades e acções padrão
  • Configurar rotação de logs
  • Configurar rsyslog e syslog-ng

O que está a acontecer dentro do seu sistema

Um sistema Linux tem muitos subsistemas e aplicações em execução. Utiliza o registo do sistema para recolher dados sobre o seu sistema em execução desde o momento em que este arranca. às vezes só precisa de saber que tudo está bem. Outras vezes utiliza estes dados para auditoria, depuração, saber quando um disco ou outro recurso está a ficar sem capacidade, e muitos outros fins. Pode recolher dados de registo num sistema e encaminhá-los para outro sistema para processamento. Os dados de registo podem ser exibidos num terminal, tal como o terminal do utilizador raiz, mas mais frequentemente são guardados em ficheiros, ou encaminhados através de tomadas para um servidor de registo. Escusado será dizer que o registo é altamente configurável.

O recurso tradicional syslog e o seu daemon syslogd fornecem este registo. Actualmente, o syslog tem sido complementado por outras facilidades de registo, tais como rsyslog, syslog-ng, e o subsistema systemd journal. Apresento-lhe estas facilidades neste tutorial.

Este tutorial ajuda-o a preparar-se para o Objectivo 108.2 no Tópico 108 do exame 102 do Linux Server Professional (LPIC-1). O objectivo tem um peso de 3.

Prerequisites

Para tirar o máximo partido dos tutoriais desta série, é necessário um conhecimento básico de Linux e um sistema Linux funcional no qual se possa praticar os comandos abordados neste tutorial. Deve estar familiarizado com os comandos GNU e UNIX. Por vezes, versões diferentes de um programa saem de forma diferente, pelo que os seus resultados podem nem sempre parecer exactamente como as listas aqui apresentadas.

Neste tutorial, utilizo o Slackware 42.2 para exemplos syslogd, CentOS 7 para exemplos rsyslogd, e Fedora 26 para exemplos systemd-journalctl e syslog-ng.

Tradicional syslog e o daemon syslogd

O tradicional recurso de registo de sistema syslog num sistema Linux fornece o registo de sistema e o bloqueio de mensagens do kernel. Pode registar dados no seu sistema local ou enviá-los para um sistema remoto. Utilize o ficheiro de configuração /etc/syslog.conf para controlar finamente o nível de registo. O registo é efectuado pelo daemon syslogd, que normalmente recebe a entrada através do socket /dev/log, como mostrado em Listing 1.

Listing 1. /dev/log é um socket
$ #Slackware 42.2 $ /bin/ls -l /dev/log srw-rw-rw- 1 root root 0 Nov 19 16:35 /dev/log

Mostrar maisMostrar mais ícone

xmlns=”http://www.w3.org/1999/xhtmlPara registo local, o ficheiro principal é normalmente /var/log/messages, mas muitos outros ficheiros são utilizados na maioria das instalações, normalmente localizados no directório /var/log ou num subdirectório do mesmo. É possível personalizá-los extensivamente. Por exemplo, pode querer um registo separado para mensagens do sistema de correio electrónico.

O ficheiro de configuração syslog.conf

O ficheiro syslog.conf é o ficheiro de configuração principal para o daemon syslogd. As entradas em syslog.conf especificam as regras de registo. Cada regra tem um campo selector e um campo de acção, que são separados por um ou mais espaços ou separadores. O campo selector identifica a instalação e as prioridades a que a regra se aplica, e o campo de acção identifica a acção de registo para a instalação e prioridades.

As instalações definidas são auth (ou segurança), authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, syslog, user, uucp, e local0 através do local7. A palavra-chave auth deve ser usada em vez de security, e a palavra-chave mark é para uso interno.

as prioridades (por ordem ascendente de gravidade) são:

  1. debug
  2. info
  3. notice
  4. warning (or warn)
  5. err (ou erro)
  6. li>critério

  7. alert
  8. emerg (ou pânico)

As palavras-chave parênteses (warn, erro, e pânico) são agora depreciados.

O comportamento padrão é tomar medidas para o nível especificado e para todos os níveis superiores, embora seja possível limitar o registo a níveis específicos. Cada selector consiste de uma facilidade e uma prioridade separada por um período (ponto). Múltiplas facilidades para uma dada acção podem ser especificadas separando-as com uma vírgula. Pares múltiplos de instalações/prioridades para uma dada acção podem ser especificados separando-os com um ponto e vírgula. A lista 2 mostra um exemplo de um ficheiro syslog.conf simples.

Lista 2. Exemplo syslog.conf
#Log anything 'warn' or higher. #Exclude authpriv, cron, mail, and news. These are logged elsewhere. #Don't log private authentication messages! *.warn;\ authpriv.none;cron.none;mail.none;news.none -/var/log/syslog #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 * #Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler

Mostrar maisMostrar mais ícone

xmlns=”http://www.w3.org/1999/xhtmlNotas:

  • Como com muitos ficheiros de configuração, linhas começando por # e linhas em branco são ignoradas.
  • Um * pode ser usado para se referir a todas as instalações ou a todas as prioridades.
  • A palavra-chave prioridade especial none indica que nenhum registo para esta facilidade deve ser feito com esta acção.
  • O hífen antes do nome de um ficheiro (tal como -/var/log/maillog, neste exemplo) indica que o ficheiro de registo não deve ser sincronizado após cada escrita. Poderá perder informação após uma falha do sistema, mas poderá ganhar desempenho ao fazer isto.

As acções são genericamente referidas como “ficheiros log”, embora não tenham de ser ficheiros reais. A tabela 1 descreve os possíveis ficheiros log.

Tabela 1. Acções no syslog.conf

>th>Purpose

Máquina remota

Lista de utilizadores

Action
Arquivo regular Especifique o caminho completo, começando com uma barra (/). Prefixá-lo com um hífen (-) para omitir a sincronização do ficheiro após cada entrada de registo. Isto pode causar perda de informação se ocorrer uma falha, mas pode melhorar o desempenho.
Dutos nomeados Utilizar um primeiro a entrar primeiro a sair (FIFO) ou nomear um tubo como destino para mensagens de registo, incluindo um símbolo de tubo (|) antes do nome do ficheiro. Deve criar o FIFO utilizando o comando mkfifo antes de iniciar (ou reiniciar) syslogd. Os FIFOs são por vezes utilizados para depuração.
Terminal ou consola Enviar mensagens de registo a um terminal como /dev/console.
Enviar mensagens a outro host colocando um sinal at (@) antes do nome do host. Note-se que as mensagens não são reencaminhadas a partir do anfitrião receptor.
Utilizar uma lista de utilizadores separada por vírgulas para receber mensagens (se o utilizador estiver ligado). O utilizador raiz é frequentemente incluído aqui.
Todos os utilizadores ligados Especifique um asterisco (*) para que todos os utilizadores ligados sejam notificados usando o comando wall.

Prefixa uma prioridade com ! para indicar que a acção não deve ser aplicada a este nível e superior. Da mesma forma, prefixo uma prioridade com = para indicar que a regra se aplica apenas a este nível ou com != para indicar que a regra se aplica a todos excepto a este nível. A lista 3 mostra alguns exemplos, e a página man para syslog.conf tem muitos mais exemplos.

Lista 3. Exemplos adicionais do syslog.conf
#Kernel messages are first, stored in the kernel#file, critical messages and higher ones also go#to another host and to the console#kern.* /var/adm/kernelkern.crit @log‑serverkern.crit /dev/consolekern.info;kern.!err /var/adm/kernel‑info#Store all mail messages except info priority in /var/log/mail. mail.*;mail.!=info /var/log/mail

Mostrar maisMostrar mais ícone

xmlns=”http://www.w3.org/1999/xhtmlO comandosyslogdinicia o daemon syslogd. Tem um número de opções, incluindo-fpara especificar um ficheiro de configuração diferente, e-apara soquetes adicionais para ouvir. O daemon responde a vários sinais, incluindo o SIGHUP que o leva a reinicializar. Ver as páginas man ou info para mais detalhes sobre como correr e interagir com o daemon syslogd.

Listing 4 mostra algumas das mensagens que podem ser registadas em /var/log/messages usando syslogd parâmetros de configuração como os da Listing 2.

Listing 4. Exemplo de mensagens registadas em /var/log/messages
root@attic4‑sl42:~#tail ‑n 20 /var/log/messages Nov 19 21:39:57 attic4‑sl42 kernel: usb 1‑1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3Nov 19 21:39:57 attic4‑sl42 kernel: usb 1‑1.1: Product: USB DISK 2.0Nov 19 21:39:57 attic4‑sl42 kernel: usb 1‑1.1: Manufacturer: Nov 19 21:39:57 attic4‑sl42 kernel: usb 1‑1.1: SerialNumber: 070B53DF11FC0170Nov 19 21:39:57 attic4‑sl42 kernel: usb‑storage 1‑1.1:1.0: USB Mass Storage device detectedNov 19 21:39:57 attic4‑sl42 kernel: scsi host12: usb‑storage 1‑1.1:1.0Nov 19 21:39:57 attic4‑sl42 mtp‑probe: checking bus 1, device 12: "/sys/devices/pci0000:00/0000:00:12.2/usb1/1‑1/1‑1.1" Nov 19 21:39:57 attic4‑sl42 mtp‑probe: bus: 1, device: 12 was not an MTP device Nov 19 21:39:58 attic4‑sl42 kernel: scsi 12:0:0:0: Direct‑Access USB DISK 2.0 PMAP PQ: 0 ANSI: 4Nov 19 21:39:59 attic4‑sl42 kernel: sd 12:0:0:0: 30299520 512‑byte logical blocks: (15.5 GB/14.4 GiB)Nov 19 21:39:59 attic4‑sl42 kernel: sd 12:0:0:0: Write Protect is offNov 19 21:40:00 attic4‑sl42 kernel: sdd: sdd1Nov 19 21:40:00 attic4‑sl42 kernel: sd 12:0:0:0: Attached SCSI removable diskNov 19 21:42:36 attic4‑sl42 kernel: usb 1‑1.1: reset high‑speed USB device number 12 using ehci‑pciNov 19 21:42:37 attic4‑sl42 kernel: usb 1‑1.1: reset high‑speed USB device number 12 using ehci‑pciNov 19 21:42:37 attic4‑sl42 kernel: usb 1‑1.1: reset high‑speed USB device number 12 using ehci‑pciNov 19 21:42:37 attic4‑sl42 kernel: usb 1‑1.1: reset high‑speed USB device number 12 using ehci‑pciNov 19 21:42:38 attic4‑sl42 kernel: usb 1‑1.1: USB disconnect, device number 12Nov 19 21:42:38 attic4‑sl42 kernel: <27> udevd: inotify_add_watch(6, /dev/sdd, 10) failed: No such file or directoryNov 19 21:56:48 attic4‑sl42 ‑‑ MARK ‑‑

mostrar maisMostrar mais ícone

2 xmlns=”http://www.w3.org/1999/xhtmlO daemon de registo do kernel – klogd

Na Listagem 3 viu algumas formas de configurar o registo de mensagens do kernel. Mas como é que as mensagens do kernel no momento do arranque são registadas antes mesmo de um sistema de ficheiros ser montado? O kernel armazena as mensagens num buffer em anel na memória. O klogd daemon processa estas mensagens directamente numa consola, ou num ficheiro como /var/log/dmesg, ou através da facilidade syslog.

Nota que o exemplo em Listar 2 regista todas as mensagens ao nível de aviso ou acima em /var/log/syslog. Em particular, isto inclui mensagens do kernel.

As com o comando syslogd, o comando klogd tem um número de opções. Consulte as páginas de homem ou de informação para mais detalhes. Não existe ficheiro de configuração para klogd.

Também pode exibir mensagens do buffer de anel do kernel usando o comando dmesg. O comando também tem opções para interagir com o buffer de anéis, por exemplo para ler e limpar mensagens.

Rotate and archive log files

Com a quantidade de registo possível, é preciso ser capaz de controlar o tamanho dos ficheiros de registo. Isto é feito utilizando o comando logrotate, que é normalmente executado como um cron job. (Ver o nosso tutorial, Automatizar tarefas de administração do sistema agendando trabalhos, para mais informações sobre trabalhos cron).

A ideia geral por detrás do comando logrotate é que os ficheiros de log são periodicamente copiados e um novo log é iniciado. Várias gerações de log são mantidas, e quando um log envelhece até à última geração, pode ser arquivado. Por exemplo, pode ser enviado por correio a um utilizador de arquivo.

Utilizar o ficheiro de configuração /etc/logrotate.conf para especificar como deve acontecer a rotação e arquivamento do seu log. Pode especificar diferentes frequências, tais como diária, semanal, ou mensal, para diferentes ficheiros de registo, e pode controlar o número de gerações a manter e quando ou se deve enviar cópias por correio a um utilizador de arquivo. A lista 5 mostra uma amostra /etc/logrotate.conf file.

Lista 5. Amostra /etc/logrotate.conf
#/etc/logrotate.conf ##logrotate is designed to ease administration of systems that generate large #numbers of log files. It allows automatic rotation, compression, removal, and #mailing of log files. Each log file may be handled daily, weekly, monthly, or #when it grows too large. ##logrotate is normally run daily from root's crontab. ##For more details, see "man logrotate". #rotate log files weekly: weekly #keep 4 weeks worth of backlogs: rotate 4 #create new (empty) log files after rotating old ones: create #uncomment if you want to use the date as a suffix of the rotated file #dateext #uncomment this if you want your log files compressed: #compress #some packages install log rotation information in this directory: include /etc/logrotate.d #Rotate /var/log/wtmp: /var/log/wtmp { missingok monthly create 0664 root utmp minsize 1M rotate 1 } #Rotate /var/log/btmp: /var/log/btmp { missingok monthly create 0600 root root rotate 1 } #Note that /var/log/lastlog is not rotated. This is intentional, and it should #not be. The lastlog file is a database, and is also a sparse file that takes #up much less space on the drive than it appears. #system-specific logs may be also be configured below:

/div> Mostrar maisMostrar mais ícone

xmlns=”http://www.w3.org/1999/xhtmlO ficheiro logrotate.conf tem opções globais no início. Estas são as opções padrão se nada mais específico for especificado noutro local. Neste exemplo, os ficheiros de log são rodados semanalmente, e são mantidas quatro semanas de backups. Quando um ficheiro de log é rodado, um novo é automaticamente criado no lugar do antigo. Note-se que o ficheiro logrotate.conf pode incluir especificações de outros ficheiros. Aqui, todos os ficheiros em /etc/logrotate.d estão incluídos.

Este exemplo também inclui regras específicas para /var/log/wtmp e /var/log/btmp, que são rodadas mensalmente. Não é emitida qualquer mensagem de erro se os ficheiros estiverem em falta. Um novo ficheiro é criado, e apenas uma cópia de segurança é mantida. O acesso a estes ficheiros também é restrito através da definição de permissões.

Nota: Os ficheiros /var/log/wtmp e /var/log/btmp registam tentativas de login bem e mal sucedidas, respectivamente. Ao contrário da maioria dos ficheiros de registo, estes não são ficheiros de texto claro. Pode examiná-los usando os comandos last ou lastb. Ver as páginas de homem para estes comandos para detalhes.

Neste exemplo, quando uma cópia de segurança atinge a última geração, é apagada porque não há especificação do que mais fazer com ela.

Pode fazer cópias de segurança dos ficheiros de registo quando estes atingem um tamanho específico. Também é possível executar comandos de script antes ou depois da operação de cópia de segurança. A lista 6 mostra um exemplo mais complexo.

Lista 6. Outro exemplo de configuração de logrotate
/var/log/messages { rotate 5 mail logsave@log-server size 100k postrotate /usr/bin/killall -HUP syslogd endscript }

Mostrar maisMostrar mais ícone

xmlns=”http://www.w3.org/1999/xhtmlNo Listing 6, /var/log/messages é rodado depois de atingir 100 KB de tamanho. São mantidos cinco ficheiros de backup, e quando o backup mais antigo envelhece, é enviado por correio para logsave@log-server. O postrotate introduz um script que reinicia o daemon syslogd após a rotação estar completa, enviando-lhe o sinal HUP. O endscript statement é necessário para terminar o script e também é necessário se um prerotate script estiver presente. Ver a página logrotate man para informação mais completa.

Como com muitos destes ficheiros de configuração, alguns programas fornecem configuração adicional, normalmente no directório etc/logrotate.d. A lista 7 mostra os ficheiros no meu sistema Slackware.

Listing 7. Ficheiros de configuração para logrotate
root@attic4‑sl42:~#ls /etc/logrot/etc/logrotate.conf/etc/logrotate.d:consolekit mcelog mysql.orig ulogd wpa_supplicanthttpd mysql syslog vsftpdroot@attic4‑sl42:~#cat /etc/logrotate.d/httpd/var/log/httpd/_log { rotate 10 notifempty missingok size=5M compress delaycompress sharedscripts postrotate /etc/rc.d/rc.httpd restart endscript}

Mostrar maisMostrar mais ícone

2 xmlns=”http://www.w3.org/1999/xhtmlEscanhar ficheiros de registo para actividades notáveis

Entradas de ficheiros de registo são normalmente carimbadas a tempo e contêm o nome do anfitrião do processo de relatório, juntamente com o nome do processo. A lista 8 mostra algumas linhas de /var/log/mensagens, contendo entradas de vários programas.

Lista 8. Exemplo de entradas de ficheiro de registo
Nov 19 15:48:31 attic4-sl42 kernel: EXT4-fs (sda6): re-mounted. Opts: (null) Nov 19 15:48:32 attic4-sl42 mtp-probe: checking bus 3, device 3: "/sys/devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2.1" Nov 19 15:48:32 attic4-sl42 mtp-probe: bus: 3, device: 3 was not an MTP device Nov 19 15:48:32 attic4-sl42 mtp-probe: checking bus 3, device 4: "/sys/devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2.4" Nov 19 15:48:32 attic4-sl42 mtp-probe: bus: 3, device: 4 was not an MTP device Nov 19 15:48:32 attic4-sl42 mtp-probe: checking bus 1, device 4: "/sys/devices/pci0000:00/0000:00:12.2/usb1/1-1/1-1.1" Nov 19 15:48:32 attic4-sl42 mtp-probe: bus: 1, device: 4 was not an MTP device Nov 19 15:48:36 attic4-sl42 root: /etc/rc.d/rc.inet1: /sbin/ifconfig lo 127.0.0.1 Nov 19 15:48:36 attic4-sl42 root: /etc/rc.d/rc.inet1: /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo Nov 19 15:48:36 attic4-sl42 root: /etc/rc.d/rc.inet1: /sbin/dhcpcd -t 10 eth0 Nov 19 15:48:36 attic4-sl42 dhcpcd: eth0: adding address fe80::4c2a:3f48:e0f7:cc90 Nov 19 15:48:41 attic4-sl42 sshd: Server listening on 0.0.0.0 port 22. Nov 19 15:48:41 attic4-sl42 sshd: Server listening on :: port 22. Nov 19 15:48:41 attic4-sl42 ntpd: ntpd [email protected] Fri Jun 3 23:08: 22 UTC 2016 (1): Starting Nov 19 15:48:41 attic4-sl42 ntpd: Command line: /usr/sbin/ntpd -g -p /var /run/ntpd.pid Nov 19 15:48:41 attic4-sl42 ntpd: proto: precision = 0.230 usec (-22) Nov 19 15:48:41 attic4-sl42 ntpd: Listen and drop on 0 v6wildcard :12 3 Nov 19 15:48:41 attic4-sl42 ntpd: Listen and drop on 1 v4wildcard 0.0.0.0:123 Nov 19 15:48:41 attic4-sl42 ntpd: Listen normally on 2 lo 127.0.0.1:123 Nov 19 15:48:41 attic4-sl42 ntpd: Listen normally on 3 eth0 192.168.1.24:123 Nov 19 15:48:41 attic4-sl42 ntpd: Listen normally on 4 lo :123 Nov 19 15:48:41 attic4-sl42 ntpd: failed to init interface for address fe80::8616:f9ff:fe04:7a2a%2 Nov 19 15:48:41 attic4-sl42 ntpd: Listening on routing socket on fd #21 for interface updates Nov 19 15:48:41 attic4-sl42 acpid: starting up with netlink and the input layer Nov 19 15:48:41 attic4-sl42 acpid: 1 rule loaded Nov 19 15:48:41 attic4-sl42 acpid: waiting for events: event logging is off Nov 19 15:48:42 attic4-sl42 dbus: Activating service name='org.freedesktop.PolicyKit1' (using servicehelper) Nov 19 15:48:42 attic4-sl42 ntpd: failed to init interface for address fe80::8616:f9ff:fe04:7a2a%2

Mostrar maisMostrar mais ícone

xmlns=”http://www.w3.org/1999/xhtmlA última linha da Listagem 8 mostra uma falha do daemon do Protocolo de Tempo de Rede (ntpd). Neste caso, falhou em inicializar uma interface IP V6 porque este sistema utiliza apenas ligações IP V4.

P>Pode digitalizar ficheiros de registo usando um pager, tal como less, ou procurar por entradas específicas (tais como mensagens ntpd do sótão 4-sl42) usando grep como mostrado na Listagem 9.

Lista 9. Ficheiros de registo de digitalização
root@attic4-sl42:~#grep "attic4-sl42 ntpd" /var/log/messages | tail -9 Nov 19 21:17:12 attic4-sl42 ntpd: Command line: /usr/sbin/ntpd -g -p /var/run/ntpd.pid Nov 19 21:17:12 attic4-sl42 ntpd: proto: precision = 0.220 usec (-22) Nov 19 21:17:13 attic4-sl42 ntpd: Listen and drop on 0 v6wildcard :123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen and drop on 1 v4wildcard 0.0.0.0:123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen normally on 2 lo 127.0.0.1:123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen normally on 3 eth0 192.168.1.24:123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen normally on 4 lo :123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen normally on 5 eth0 :123 Nov 19 21:17:13 attic4-sl42 ntpd: Listening on routing socket on fd #22 for interface updates

mostrar maisExibir mais ícone

2 xmlns=”http://www.w3.org/1999/xhtmlFichas de registo de monitorização

Ocasionalmente pode ser necessário monitorizar ficheiros de registo para eventos. Por exemplo, pode estar a tentar apanhar um evento pouco frequente no momento em que este acontece. Nesse caso, pode usar o comando tail com a opção -f para seguir o ficheiro de registo. A lista 10 mostra um exemplo.

Lista 10. Seguintes actualizações do ficheiro de registo
root@attic4-sl42:~#tail -n 1 -f /var/log/messages Nov 20 09:24:58 attic4-sl42 kernel: sd 15:0:0:0: Attached SCSI removable disk Nov 20 09:26:23 attic4-sl42 kernel: usb 3-2.4: USB disconnect, device number 5 Nov 20 09:27:13 attic4-sl42 sshd: Accepted password for ian from 192.168.1.40 port 58184 ssh2 Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: new low-speed USB device number 6 using ohci-pci Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: New USB device found, idVendor=046d, idProduct=c50e Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0 Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: Product: USB Receiver Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: Manufacturer: Logitech Nov 20 09:29:08 attic4-sl42 kernel: input: Logitech USB Receiver as /devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2.4/3-2.4:1.0/0003:046D:C50E.0004/input/input19 Nov 20 09:29:08 attic4-sl42 kernel: hid-generic 0003:046D:C50E.0004: input,hidraw1: USB HID v1.11 Mouse on usb-0000:00:12.0-2.4/input0 Nov 20 09:29:08 attic4-sl42 mtp-probe: checking bus 3, device 6: "/sys/devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2.4" Nov 20 09:29:08 attic4-sl42 mtp-probe: bus: 3, device: 6 was not an MTP device

mostrar maisMostrar mais ícone

2 xmlns=”http://www.w3.org/1999/xhtmlTrack down problems reported in log files

Quando encontrar problemas em ficheiros de registo, anote a hora, o nome do anfitrião, e o processo que gerou o problema. Se a mensagem identificar o problema especificamente o suficiente para que o resolva, está feito. Caso contrário, poderá ter de actualizar o syslog.conf para especificar que sejam registadas mais mensagens para a instalação apropriada. Por exemplo, poderá ter de mostrar mensagens informativas em vez de mensagens de aviso ou mesmo mensagens de nível de depuração. A sua aplicação pode ter facilidades adicionais que pode utilizar.

Finalmente, se precisar de colocar marcas no ficheiro de registo para o ajudar a saber que mensagens foram registadas em que fase da sua actividade de depuração, pode utilizar o comando logger a partir de uma janela de terminal ou shell script para enviar uma mensagem à sua escolha para o daemon do syslogd para registo de acordo com as regras do syslogd.conf.

Using rsyslogd

Rsyslog é o sistema auto-descritivo para processamento de log. É compatível a partir do syslog no sentido em que pode processar configurações compatíveis com o syslog e também lidar com o syslog call to log information. Também fornece vários melhoramentos que não são retrocompatíveis. Em particular, suporta protocolos de registo adicionais, e pode registar em bases de dados, tais como MySQL ou PostgreSQL, bem como ficheiros. Pode filtrar qualquer parte de uma mensagem syslog e pode configurar totalmente o formato de saída.

As páginas tradicionais man e info fornecem informações básicas sobre o rsyslog. Contudo, há consideravelmente mais documentação fornecida no formato HTML no directório doc do seu sistema. Poderá ter de instalar o pacote rsyslog-doc se este não tiver sido instalado no seu sistema. A raiz da árvore HTML está em /usr/share/doc/rsyslog-8.24.0/html/index.html. A localização pode ser diferente no seu sistema.

O programa rsyslog corre como um daemon, semelhante a syslogd. O ficheiro de configuração é o padrão do rsyslog.conf.

Listing 11. Um ficheiro de configuração rsyslog.conf
$ cat /etc/rsyslog.conf #rsyslog configuration file#For more information see /usr/share/doc/rsyslog‑*/rsyslog_conf.html#If you experience problems, see https://www.rsyslog.com/doc/v8-stable/troubleshooting/index.html####MODULES #####The imjournal module bellow is now used as a message source instead of imuxsock.$ModLoad imuxsock #provides support for local system logging (e.g. via logger command)$ModLoad imjournal #provides access to the systemd journal#$ModLoad imklog #reads kernel messages (the same are read from journald)#$ModLoad immark #provides ‑‑MARK‑‑ message capability#Provides UDP syslog reception#$ModLoad imudp#$UDPServerRun 514#Provides TCP syslog reception#$ModLoad imtcp#$InputTCPServerRun 514####GLOBAL DIRECTIVES #####Where to place auxiliary files$WorkDirectory /var/lib/rsyslog#Use default timestamp format$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat#File syncing capability is disabled by default. This feature is usually not required,#not useful and an extreme performance hit#$ActionFileEnableSync on#Include all config files in /etc/rsyslog.d/$IncludeConfig /etc/rsyslog.d/.conf#Turn off message reception via local log socket;#local messages are retrieved through imjournal now.$OmitLocalLogging on#File to store the position in the journal$IMJournalStateFile imjournal.state####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 stuffcron./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.loglocal7./var/log/boot.log####begin forwarding rule ####The statement between the begin ... end define a SINGLE forwarding#rule. They belong together, do NOT split them. If you create multiple#forwarding rules, duplicate the whole block!#Remote Logging (we use TCP for reliable delivery)##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.#$ActionQueueFileName fwdRule1 #unique name prefix for spool files#$ActionQueueMaxDiskSpace 1g #1gb space limit (use as much as possible)#$ActionQueueSaveOnShutdown on #save messages to disk on shutdown#$ActionQueueType LinkedList #run asynchronously#$ActionResumeRetryCount ‑1 #infinite retries if host is down#remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional#.*` remote‑host:514####end of the forwarding rule ###

mostrar maisExibir mais ícone

xmlns=”http://www.w3.org/1999/xhtml Reconhecerá entradas familiares do syslog.conf no meio do ficheiro, rodeado de coisas adicionais que a instalação rsyslog compreende. Veja as páginas man ou info ou a documentação HTML para mais detalhes.

P>Pode usar logrotate com ficheiros criados por rsyslogd, embora as bases de dados SQL possam requerer scripting ou outras ferramentas. Da mesma forma, o comando logger ainda funciona para colocar a sua própria marca no log.

Usando o serviço systemd journal

Os exemplos do serviço systemd journal nesta secção provêm do Fedora 26.

O programa systemd-journald é um daemon do serviço de sistema que recolhe e armazena dados de registo. Cria e mantém periódicos estruturados e indexados com base na informação de registo que é recebida das fontes habituais do syslog, bem como mensagens de registo estruturadas usando uma API de periódicos nativos.

O habitual /dev/log socket é uma ligação a /run/systemd/journal/dev-log como mostrado em Listing 12.

Listing 12. As tomadas dev/log e /run/systemd/journal/dev-log
#ls ‑l /dev/loglrwxrwxrwx. 1 root root 28 Nov 20 23:43 /dev/log ‑> /run/systemd/journal/dev‑log#ls ‑l /run/systemd/journal/dev‑logsrw‑rw‑rw‑. 1 root root 0 Nov 20 23:43 /run/systemd/journal/dev‑log

div> Mostrar maisExibir mais ícone

xmlns=”http://www.w3.org/1999/xhtmlThe systemd-journald daemon ouve em tomadas e outras entidades do sistema de ficheiros, incluindo /dev/kmsg, /dev/log, /run/systemd/journal/dev-log, /run/systemd/journal/socket, e /run/systemd/journal/stdout. Pode também ouvir para eventos de auditoria usando netlink, que transfere informação do kernel para o espaço do utilizador usando sockets.

Os dados de registo mais importantes são textuais, mas os dados binários são permitidos, teoricamente até 2^64-1 bytes em tamanho. O diário armazena dados de registo em /run/log/journal/ por defeito. O sistema /run/file é volátil, pelo que os dados de registo são perdidos quando o sistema é reinicializado. Para tornar os dados persistentes, cria-se /var/log/journal/ e systemd-journald irá então armazenar os dados lá.

Como com outros sistemas de registo, existe um ficheiro de configuração. Por defeito, é o ficheiro /etc/systemd/journald.conf. Muitas opções são compiladas por defeito, pelo que a maioria das opções no ficheiro de configuração são inicialmente comentadas como se mostra na Listagem 13. Descomente aquelas que deseja alterar. Como habitualmente, os ficheiros de configuração adicionais podem ser localizados no directório journald.conf.d. Os pacotes devem instalar as suas informações de configuração do journald.conf em /usr/lib/systemd/*.conf.d/.

Lista 13. Exemplo inicial /etc/systemd/journald.conf
# This file is part of systemd.## systemd is free software; you can redistribute it and/or modify it# under the terms of the GNU Lesser General Public License as published by# the Free Software Foundation; either version 2.1 of the License, or# (at your option) any later version.##Entries in this file show the compile time defaults.#You can change settings by editing this file.#Defaults can be restored by simply deleting this file.##See journald.conf(5) for details.#Storage=auto#Compress=yes#Seal=yes#SplitMode=uid#SyncIntervalSec=5m#RateLimitIntervalSec=30s#RateLimitBurst=1000#SystemMaxUse=#SystemKeepFree=#SystemMaxFileSize=#SystemMaxFiles=100#RuntimeMaxUse=#RuntimeKeepFree=#RuntimeMaxFileSize=#RuntimeMaxFiles=100#MaxRetentionSec=#MaxFileSec=1month#ForwardToSyslog=no#ForwardToKMsg=no#ForwardToConsole=no#ForwardToWall=yes#TTYPath=/dev/console#MaxLevelStore=debug#MaxLevelSyslog=debug#MaxLevelKMsg=notice#MaxLevelConsole=info#MaxLevelWall=emerg

/div> Mostrar maisMostrar mais ícone

xmlns=”http://www.w3.org/1999/xhtmlUtilizar o homem ou páginas de informação para journald.conf para saber mais sobre as configurações que são suportadas.

Utiliza o comando journalctl para exibir informação registada. Listar 14 mostra como exibir as últimas 10 linhas de dados registados e depois usar o comando -f opção a seguir, ou exibir continuamente, novas linhas à medida que são adicionadas. Utilizar a opção --rotate para rodar os ficheiros do diário.

Lista 14. Usar journalctl para exibir ou seguir mensagens de registo
#journalctl ‑n 10 ‑f‑‑ Logs begin at Mon 2007‑07‑09 22:14:00 EDT. ‑‑Nov 21 10:24:47 atticf26 dbus‑daemon: Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus‑org.freedesktop.nm‑dispatcher.service' requested by ':1.9' (uid=0 pid=650 comm="/usr/sbin/NetworkManager ‑‑no‑daemon " label="system_u:system_r:NetworkManager_t:s0")Nov 21 10:24:47 atticf26 systemd: Starting Network Manager Script Dispatcher Service...Nov 21 10:24:47 atticf26 audit: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager‑dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'Nov 21 10:24:47 atticf26 dbus‑daemon: Successfully activated service 'org.freedesktop.nm_dispatcher'Nov 21 10:24:47 atticf26 systemd: Started Network Manager Script Dispatcher Service.Nov 21 10:24:47 atticf26 nm‑dispatcher: req:1 'connectivity‑change': new request (5 scripts)Nov 21 10:24:47 atticf26 nm‑dispatcher: req:1 'connectivity‑change': start running ordered scripts...Nov 21 10:24:48 atticf26 gnome‑software‑service.desktop: 15:24:48:0034 Gs failed to call gs_plugin_app_install on packagekit: do not know how to install app in state queuedNov 21 10:24:52 atticf26 dhclient: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 15 (xid=0x36565033)Nov 21 10:24:57 atticf26 audit: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager‑dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'Nov 21 10:25:07 atticf26 dhclient: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 14 (xid=0x36565033)Nov 21 10:25:21 atticf26 dhclient: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 17 (xid=0x36565033)Nov 21 10:25:22 atticf26 NetworkManager: <warn> dhcp4 (enp4s0): request timed outNov 21 10:25:22 atticf26 NetworkManager: <info> dhcp4 (enp4s0): state changed unknown ‑> timeoutNov 21 10:25:22 atticf26 NetworkManager: <info> dhcp4 (enp4s0): canceled DHCP transaction, DHCP client pid 7110Nov 21 10:25:22 atticf26 NetworkManager: <info> dhcp4 (enp4s0): state changed timeout ‑> doneNov 21 10:25:22 atticf26 NetworkManager: <info> device (enp4s0): state change: ip‑config ‑> failed (reason 'ip‑config‑unavailable', internal state 'managed')Nov 21 10:25:22 atticf26 NetworkManager: <warn> device (enp4s0): Activation: failed for connection 'enp3s0'Nov 21 10:25:22 atticf26 NetworkManager: <info> device (enp4s0): state change: failed ‑> disconnected (reason 'none', internal state 'managed')...Nov 21 10:26:37 atticf26 NetworkManager: <info> device (enp4s0): state change: ip‑config ‑> deactivating (reason 'user‑requested', internal state 'managed')Nov 21 10:26:37 atticf26 NetworkManager: <info> audit: op="device‑disconnect" interface="enp4s0" ifindex=3 pid=7167 uid=1000 result="success"Nov 21 10:26:37 atticf26 NetworkManager: <info> device (enp4s0): state change: deactivating ‑> disconnected (reason 'user‑requested', internal state 'managed')Nov 21 10:26:37 atticf26 gnome‑software‑service.desktop: 15:26:37:0783 Gs failed to call gs_plugin_app_install on packagekit: do not know how to install app in state queuedNov 21 10:26:37 atticf26 avahi‑daemon: Withdrawing address record for fe80::3fd7:76aa:e99d:da5d on enp4s0.Nov 21 10:26:37 atticf26 avahi‑daemon: Leaving mDNS multicast group on interface enp4s0.IPv6 with address fe80::3fd7:76aa:e99d:da5d.Nov 21 10:26:37 atticf26 avahi‑daemon: Interface enp4s0.IPv6 no longer relevant for mDNS.Nov 21 10:26:37 atticf26 gnome‑software‑service.desktop: 15:26:37:0787 Gs failed to call gs_plugin_app_install on packagekit: do not know how to install app in state queuedNov 21 10:26:37 atticf26 NetworkManager: <info> dhcp4 (enp4s0): canceled DHCP transaction, DHCP client pid 7179Nov 21 10:26:37 atticf26 NetworkManager: <info> dhcp4 (enp4s0): state changed unknown ‑> doneNov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=filter family=2 entries=99Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=nat family=2 entries=59Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=mangle family=2 entries=42Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=raw family=2 entries=30Nov 21 10:26:37 atticf26 dbus‑daemon: Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus‑org.freedesktop.nm‑dispatcher.service' requested by ':1.9' (uid=0 pid=650 comm="/usr/sbin/NetworkManager ‑‑no‑daemon " label="system_u:system_r:NetworkManager_t:s0")Nov 21 10:26:37 atticf26 systemd: Starting Network Manager Script Dispatcher Service...Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=filter family=10 entries=90Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=nat family=10 entries=54Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=mangle family=10 entries=41Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=raw family=10 entries=31Nov 21 10:26:37 atticf26 dbus‑daemon: Successfully activated service 'org.freedesktop.nm_dispatcher'Nov 21 10:26:37 atticf26 audit: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager‑dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'Nov 21 10:26:37 atticf26 nm‑dispatcher: req:1 'down' : new request (5 scripts)Nov 21 10:26:37 atticf26 systemd: Started Network Manager Script Dispatcher Service.Nov 21 10:26:37 atticf26 nm‑dispatcher: req:1 'down' : start running ordered scripts...Nov 21 10:26:38 atticf26 gnome‑software‑service.desktop: 15:26:38:0787 Gs failed to call gs_plugin_app_install on packagekit: do not know how to install app in state queuedNov 21 10:26:48 atticf26 audit: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager‑dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'Nov 21 10:28:35 atticf26 cupsd: REQUEST localhost ‑ ‑ "POST / HTTP/1.1" 200 182 Renew‑Subscription successful‑ok

Mostrar maisMostrar mais ícone

xmlns=”http://www.w3.org/1999/xhtmlUtilizar o comando systemctl para exibir informação sobre, interagir com, ou controlar o daemon e unidades relacionadas. A lista 15 mostra um exemplo.

Lista 15. Usando o comando systemctl
#systemctl list‑units "journal" ‑‑no‑pagerUNIT LOAD ACTIVE SUB DESCRIPTION abrt‑journal‑core.service loaded active running Creates ABRT problems frosystemd‑journal‑flush.service loaded active exited Flush Journal to Persistesystemd‑journald.service loaded active running Journal Service systemd‑journald‑audit.socket loaded active running Journal Audit Socket systemd‑journald‑dev‑log.socket loaded active running Journal Socket (/dev/log)systemd‑journald.socket loaded active running Journal Socket LOAD = Reflects whether the unit definition was properly loaded.ACTIVE = The high‑level unit activation state, i.e. generalization of SUB.SUB = The low‑level unit activation state, values depend on unit type.6 loaded units listed. Pass ‑‑all to see loaded but inactive units, too.To show all installed unit files use 'systemctl list‑unit‑files'.

Mostra maisExibir mais ícone

2 xmlns=”http://www.w3.org/1999/xhtmlUtilizar syslog-ng

Syslog-ng descreve-se como “um daemon de log melhorado, suportando uma vasta gama de métodos de entrada e saída: syslog, texto não estruturado, enfileiramento, SQL & NoSQL.” Suporta protocolos syslog legados e melhorados e adiciona suporte para JavaScript Object Notation (JSON) e formatos de mensagens de journald. Syslog-ng suporta extensas capacidades de filtragem de entrada e saída de formato.

Once instalado, há informação básica nas páginas man e info. Contudo, é provável que queira usar “The syslog-ng Open Source Administrator Guide”, que está disponível em ambos os formatos HTML e PDF. (Ver recursos à direita para mais informações).

O ficheiro de configuração padrão é /etc/syslog-ng/syslog-ng.conf. Um exemplo é mostrado em Listing 16. Ficheiros de configuração adicionais podem ser localizados no directório /etc/syslog-ng/conf.d.

Lista 16. Exemplo de syslog-ng.conf
@version:3.9@include "scl.conf"#syslog‑ng configuration file.##This should behave pretty much like the original syslog on RedHat. But#it could be configured a lot smarter.##See syslog‑ng(8) and syslog‑ng.conf(5) for more information.##Note: it also sources additional configuration files (*.conf)# located in /etc/syslog‑ng/conf.d/options { flush_lines (0); time_reopen (10); log_fifo_size (1000); chain_hostnames (off); use_dns (no); use_fqdn (no); create_dirs (no); keep_hostname (yes);};source s_sys { system(); internal(); #udp(ip(0.0.0.0) port(514));};destination d_cons { file("/dev/console"); };destination d_mesg { file("/var/log/messages"); };destination d_auth { file("/var/log/secure"); };destination d_mail { file("/var/log/maillog" flush_lines(10)); };destination d_spol { file("/var/log/spooler"); };destination d_boot { file("/var/log/boot.log"); };destination d_cron { file("/var/log/cron"); };destination d_kern { file("/var/log/kern"); };destination d_mlal { usertty(""); };filter f_kernel { facility(kern); };filter f_default { level(info..emerg) and not (facility(mail) or facility(authpriv) or facility(cron)); };filter f_auth { facility(authpriv); };filter f_mail { facility(mail); };filter f_emergency { level(emerg); };filter f_news { facility(uucp) or (facility(news) and level(crit..emerg)); };filter f_boot { facility(local7); };filter f_cron { facility(cron); };#log { source(s_sys); filter(f_kernel); destination(d_cons); };log { source(s_sys); filter(f_kernel); destination(d_kern); };log { source(s_sys); filter(f_default); destination(d_mesg); };log { source(s_sys); filter(f_auth); destination(d_auth); };log { source(s_sys); filter(f_mail); destination(d_mail); };log { source(s_sys); filter(f_emergency); destination(d_mlal); };log { source(s_sys); filter(f_news); destination(d_spol); };log { source(s_sys); filter(f_boot); destination(d_boot); };log { source(s_sys); filter(f_cron); destination(d_cron); };#Source additional configuration files (.conf extension only)@include "/etc/syslog‑ng/conf.d/.conf"#vim:ft=syslog‑ng:ai:si:ts=4:sw=4:et:

Mostrar maisMostrar mais ícone

xmlns=”http://www.w3.org/1999/xhtmlNão é geralmente necessário executar tanto o diário do sistema como o diário do syslog-ng. Se desejar utilizar ambos, terá de fazer algumas alterações de configuração a ambos e depois reiniciar ambos. Pesquise na web as instruções actuais sobre como fazer isto.

Isto conclui a sua introdução às facilidades de registo no Linux.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *