Leer Linux leren, 101: Systeemlogging

2 xmlns=”http://www.w3.org/1999/xhtmlOverzicht

In deze tutorial leert u om:

  • Configureer de syslog daemon
  • Ontdek standaard faciliteiten, prioriteiten en acties
  • Configureer log rotatie
  • Ontdek rsyslog en syslog-ng

Wat gebeurt er binnen uw systeem

Een Linux systeem heeft vele subsystemen en applicaties draaien. Je gebruikt systeem logging om gegevens te verzamelen over je draaiende systeem vanaf het moment dat het opstart. soms hoef je alleen maar te weten of alles goed gaat. Op andere momenten gebruik je deze gegevens voor auditing, debugging, om te weten te komen wanneer een schijf of een andere bron zijn capaciteit begint te bereiken, en vele andere doeleinden. U kunt loggegevens verzamelen op een systeem en ze doorsturen naar een ander systeem voor verwerking. Loggegevens kunnen worden weergegeven op een terminal, zoals de terminal van de rootgebruiker, maar vaker worden ze opgeslagen in bestanden, of via sockets doorgestuurd naar een logserver. Onnodig te zeggen dat loggen in hoge mate configureerbaar is.

De traditionele syslog faciliteit en zijn syslogd daemon verzorgen deze logging. Tegenwoordig is syslog aangevuld met andere logging faciliteiten, zoals rsyslog, syslog-ng, en het systemd journal subsysteem. In deze tutorial laat ik je kennismaken met deze faciliteiten.

Deze tutorial helpt je bij de voorbereiding op Objective 108.2 in Topic 108 van het Linux Server Professional (LPIC-1) examen 102. De objective heeft een gewicht van 3.

Voorvereisten

Om het meeste uit de tutorials in deze serie te halen, hebt u een basiskennis van Linux nodig en een werkend Linux-systeem waarop u de commando’s kunt oefenen die in deze tutorial worden behandeld. U moet bekend zijn met GNU en UNIX commando’s. Soms formatteren verschillende versies van een programma de uitvoer anders, zodat uw resultaten er niet altijd precies zo uit zullen zien als de hier getoonde lijsten.

In deze tutorial gebruik ik Slackware 42.2 voor de syslogd voorbeelden, CentOS 7 voor de rsyslogd voorbeelden, en Fedora 26 voor de systemd-journalctl en syslog-ng voorbeelden.

Traditionele syslog en de syslogd daemon

De traditionele syslog systeem logging voorziening op een Linux systeem biedt systeem logging en kernel message trapping. U kunt gegevens loggen op uw lokale systeem of ze naar een remote systeem sturen. Gebruik het configuratiebestand /etc/syslog.conf om het niveau van loggen nauwkeurig te regelen. Het loggen wordt uitgevoerd door de syslogd daemon, die normaal gesproken input ontvangt via de /dev/log socket, zoals te zien is in Listing 1.

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

Toon meerToon meer pictogram

xmlns=”http://www.w3.org/1999/xhtmlVoor lokale logging, is het hoofdbestand meestal /var/log/messages, maar veel andere bestanden worden gebruikt in de meeste installaties, meestal in de /var/log directory of een subdirectory daarvan. Deze kunnen uitgebreid worden aangepast. U kunt bijvoorbeeld een apart logboek willen voor berichten van het mailsysteem.

Het syslog.conf configuratiebestand

Het syslog.conf bestand is het belangrijkste configuratiebestand voor de syslogd daemon. Invoer in syslog.conf specificeert logging regels. Elke regel heeft een selector veld en een actie veld, die gescheiden worden door een of meer spaties of tabs. Het selector veld identificeert de faciliteit en de prioriteiten waarop de regel van toepassing is, en het action veld identificeert de logging actie voor de faciliteit en prioriteiten.

De gedefinieerde faciliteiten zijn auth (of security), authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, syslog, user, uucp, en local0 t/m local7. Het sleutelwoord auth moet worden gebruikt in plaats van security, en het sleutelwoord mark is voor intern gebruik.

De prioriteiten (in oplopende volgorde van ernst) zijn:

  1. debug
  2. info
  3. notice
  4. warning (of warn)
  5. err (of error)
  6. crit
  7. alert
  8. emerg (of panic)

De tussen haakjes geplaatste trefwoorden (warn, error, en panic) zijn nu deprecated.

Het standaard gedrag is om actie te ondernemen voor het gespecificeerde niveau en voor alle hogere niveaus, hoewel het mogelijk is om het loggen te beperken tot specifieke niveaus. Elke selector bestaat uit een faciliteit en een prioriteit gescheiden door een punt. Meerdere voorzieningen voor een bepaalde actie kunnen worden gespecificeerd door ze te scheiden met een komma. Meerdere faciliteit/prioriteit-paren voor een bepaalde actie kunnen worden gespecificeerd door ze te scheiden met een puntkomma. Listing 2 toont een voorbeeld van een eenvoudig syslog.conf bestand.

Listing 2. Voorbeeld 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

Toon meerToon meer pictogram

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

  • Zoals bij veel configuratiebestanden worden regels die beginnen met # en lege regels genegeerd.
  • Een * kan worden gebruikt om te verwijzen naar alle faciliteiten of alle prioriteiten.
  • Het speciale prioriteitssleutelwoord none geeft aan dat er geen logging voor deze voorziening moet worden gedaan met deze actie.
  • Het koppelteken voor een bestandsnaam (zoals -/var/log/maillog, in dit voorbeeld) geeft aan dat het logbestand niet moet worden gesynchroniseerd na elke schrijfactie. Je zou informatie kunnen verliezen na een systeem crash, maar je zou prestaties kunnen winnen door dit te doen.

De acties worden in het algemeen aangeduid als “logfiles,” hoewel het geen echte bestanden hoeven te zijn. Tabel 1 beschrijft de mogelijke logfiles.

Tabel 1. Acties in syslog.conf
Actie Doel
Regulier bestand Specifieer de volledige padnaam, beginnend met een schuine streep (/). Zet er een koppelteken (-) achter om het bestand niet te synchroniseren na elke logboekvermelding. Dit kan informatieverlies veroorzaken als er een crash optreedt, maar het kan de prestaties verbeteren.
Naamde pijpen Gebruik een FIFO (first-in first-out) of een named pipe als bestemming voor logberichten door een pijp-symbool (|) voor de bestandsnaam te plaatsen. U moet de FIFO aanmaken met het mkfifo commando voordat u syslogd start (of herstart). FIFO’s worden soms gebruikt voor debugging.
Terminal of console Verstuur logberichten naar een terminal zoals /dev/console.
Machine op afstand Verstuur berichten door naar een andere host door een at (@) teken voor de hostnaam te zetten. Merk op dat berichten niet worden doorgestuurd vanaf de ontvangende host.
Lijst van gebruikers Gebruik een door komma’s gescheiden lijst van gebruikers om berichten te ontvangen (als de gebruiker is ingelogd). De root-gebruiker wordt hier vaak in opgenomen.
Iedereen ingelogd Specifieer een sterretje (*) om iedereen die is ingelogd op de hoogte te brengen met het wall commando.

Prefixeer een prioriteit met ! om aan te geven dat de actie niet van toepassing moet zijn op dit niveau en hoger. Voeg op dezelfde manier een prioriteit toe met = om aan te geven dat de regel alleen van toepassing is op dit niveau of met != om aan te geven dat de regel van toepassing is op alles behalve dit niveau. Listing 3 laat enkele voorbeelden zien, en de man page voor syslog.conf heeft nog veel meer voorbeelden.

Listing 3. Extra syslog.conf voorbeelden
#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

Toon meerToon meer pictogram

xmlns=”http://www.w3.org/1999/xhtmlHetsyslogdcommando start de syslogd daemon. Het heeft een aantal opties, waaronder-fom een ander configuratiebestand op te geven, en-avoor bijkomende sockets om naar te luisteren. De daemon reageert op verschillende signalen, waaronder SIGHUP, waardoor hij opnieuw moet initialiseren. Zie de man of info pagina’s voor meer details over het draaien van en de interactie met de syslogd daemon.

Lijst 4 laat enkele van de berichten zien die gelogd kunnen worden naar /var/log/messages met syslogd configuratie parameters zoals die in Lijst 2.

Lijst 4. Voorbeeld van berichten die gelogd worden in /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 ‑‑

Toon meerToon meer pictogram

2 xmlns=”http://www.w3.org/1999/xhtmlDe kernel log daemon – klogd

In Listing 3 zag u enkele manieren om kernel berichtlogging in te stellen. Maar hoe worden boot-time kernel boodschappen gelogd voordat een bestandssysteem zelfs maar gemount is? De kernel slaat berichten op in een ring buffer in het geheugen. De daemon klogd verwerkt deze berichten rechtstreeks naar een console, of een bestand zoals /var/log/dmesg, of via de syslog voorziening.

Merk op dat het voorbeeld in Listing 2 alle berichten op waarschuwingsniveau of hoger logt in /var/log/syslog. Dit omvat in het bijzonder kernel-berichten.

Zoals bij het syslogd commando, heeft het klogd commando een aantal opties. Zie de man of info pagina’s voor details. Er is geen configuratiebestand voor klogd.

U kunt ook berichten uit de kernel ringbuffer weergeven met het dmesg commando. Het commando heeft ook opties voor interactie met de ringbuffer, bijvoorbeeld om berichten te lezen en te wissen.

Roteren en archiveren van logbestanden

Met de hoeveelheid logging die mogelijk is, moet u de grootte van logbestanden kunnen regelen. Dit wordt gedaan met het logrotate commando, dat meestal wordt uitgevoerd als een cron job. (Zie onze tutorial, Automate system administration tasks by scheduling jobs, voor meer informatie over cron jobs).

Het algemene idee achter het logrotate commando is dat er periodiek een back-up van logbestanden wordt gemaakt en dat er een nieuw log wordt gestart. Er worden verschillende loggeneraties bijgehouden, en wanneer een log veroudert tot de laatste generatie, kan het gearchiveerd worden.

Gebruik het configuratiebestand /etc/logrotate.conf om aan te geven hoe het roteren en archiveren van logs moet gebeuren. Je kunt verschillende frequenties opgeven, zoals dagelijks, wekelijks, of maandelijks, voor verschillende logbestanden, en je kunt het aantal te bewaren generaties bepalen en wanneer en of er kopieën naar een archiefgebruiker gemaild moeten worden. Listing 5 toont een voorbeeld van een /etc/logrotate.conf bestand.

Listing 5. Voorbeeld /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:

Toon meerToon meer pictogram

mlns=”http://www.w3.org/1999/xhtmlHet logrotate.conf bestand heeft globale opties aan het begin. Dit zijn de standaard opties als er elders niets specifiekers is gespecificeerd. In dit voorbeeld worden de logbestanden wekelijks geroteerd, en worden er voor vier weken backups bewaard. Zodra een logbestand geroteerd is, wordt er automatisch een nieuwe aangemaakt in plaats van de oude. Merk op dat het logrotate.conf bestand specificaties van andere bestanden kan bevatten. Hier zijn alle bestanden in /etc/logrotate.d opgenomen.

Dit voorbeeld bevat ook specifieke regels voor /var/log/wtmp en /var/log/btmp, die maandelijks worden geroteerd. Er wordt geen foutmelding gegeven als de bestanden ontbreken. Er wordt een nieuw bestand aangemaakt, en er wordt slechts één backup bewaard. De toegang tot deze bestanden wordt ook beperkt door het instellen van permissies.

Note: De bestanden /var/log/wtmp en /var/log/btmp registreren respectievelijk succesvolle en niet-succesvolle inlogpogingen. In tegenstelling tot de meeste logbestanden, zijn dit geen duidelijke tekstbestanden. U kan ze onderzoeken met de last of lastb commando’s. Zie de man pagina’s voor deze commando’s voor details.

In dit voorbeeld, wanneer een backup de laatste generatie bereikt, wordt het verwijderd omdat er geen specificatie is van wat er verder mee te doen.

U kunt een backup maken van logbestanden wanneer ze een specifieke grootte bereiken. U kunt ook commando’s scripten om voor of na de backup uit te voeren. Listing 6 laat een complexer voorbeeld zien.

Listing 6. Een ander logrotate configuratievoorbeeld
/var/log/messages { rotate 5 mail logsave@log-server size 100k postrotate /usr/bin/killall -HUP syslogd endscript }

Toon meerToon meer pictogram

xmlns=”http://www.w3.org/1999/xhtmlIn Lijst 6 wordt /var/log/messages geroteerd nadat het 100 KB groot is geworden. Vijf backup bestanden worden onderhouden, en wanneer de oudste backup veroudert, wordt deze gemaild naar logsave@log-server. Depostrotateintroduceert een script dat de syslogd daemon herstart nadat de rotatie voltooid is, door hem het HUP signaal te sturen. Hetendscriptstatement is nodig om het script te beëindigen en is ook nodig als er eenprerotatescript aanwezig is. Zie de logrotate man page voor meer volledige informatie.

Zoals bij veel van dit soort configuratiebestanden, bieden sommige programma’s aanvullende configuratie, meestal in de directory etc/logrotate.d. Listing 7 toont de bestanden op mijn Slackware systeem.

Listing 7. Configuratie bestanden voor 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}

Toon meer Toon meer pictogram

2 xmlns=”http://www.w3.org/1999/xhtmlScan log files for notable activity

Log file entries are usually time stamped and contain the hostname of the reporting process, samen met de naam van het proces. Lijst 8 toont een paar regels uit /var/log/messages, die regels van verschillende programma’s bevatten.

Lijst 8. Voorbeeld van logbestanditems
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

Toon meerToon meer pictogram

xmlns=”http://www.w3.org/1999/xhtmlDe laatste regel van Lijst 8 laat een fout zien van de Network Time Protocol daemon (ntpd). In dit geval is het niet gelukt om een IP V6 interface te initialiseren omdat dit systeem alleen IP V4 verbindingen gebruikt.

U kunt logbestanden scannen met een pager, zoals less, of naar specifieke items zoeken (zoals ntpd-berichten van host attic4-sl42) met grep, zoals in listing 9.

Listing 9. Logbestanden scannen
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

Meer tonenMeer pictogram

2 xmlns=”http://www.w3.org/1999/xhtmlLogbestanden monitoren

Op gezette tijden moet u logbestanden monitoren op gebeurtenissen. U kunt bijvoorbeeld proberen om een incident op te sporen op het moment dat het gebeurt. In zo’n geval kunt u het tail commando gebruiken met de -f optie om het logbestand te volgen. Listing 10 toont een voorbeeld.

Listing 10. Updates van logbestanden volgen
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

Toon meerToon meer pictogram

2 xmlns=”http://www.w3.org/1999/xhtmlOpsporen van problemen die in logbestanden worden gemeld

Wanneer u problemen in logbestanden aantreft, noteer dan de tijd, de hostnaam en het proces dat het probleem heeft gegenereerd. Als de melding het probleem specifiek genoeg identificeert om het te kunnen oplossen, bent u klaar. Zo niet, dan kan het nodig zijn syslog.conf aan te passen om aan te geven dat er meer berichten gelogd moeten worden voor de betreffende voorziening. Het kan bijvoorbeeld nodig zijn om informatieve berichten te tonen in plaats van waarschuwingsberichten of zelfs berichten op debug-niveau. Uw applicatie heeft misschien extra faciliteiten die u kunt gebruiken.

Ten slotte, als u markeringen in het logbestand wilt zetten om u te helpen weten welke berichten in welk stadium van uw debug-activiteit zijn gelogd, kunt u het logger commando gebruiken vanuit een terminalvenster of shellscript om een bericht naar keuze naar de syslogd daemon te sturen om te loggen volgens de regels in syslog.conf.

Gebruik rsyslogd

Rsyslog is het zelf beschreven razend snelle systeem voor log verwerking. Het is naar boven toe compatibel met syslog in de zin dat het configuraties kan verwerken die compatibel zijn met syslog en ook de syslog aanroep voor loginformatie kan afhandelen. Het biedt ook verschillende verbeteringen die niet achterwaarts compatibel zijn. In het bijzonder ondersteunt het bijkomende logprotocols, en het kan loggen naar databanken, zoals MySQL of PostgreSQL, en ook naar bestanden. U kunt elk deel van een syslog bericht filteren en het uitvoerformaat volledig configureren.

De traditionele man en info pagina’s geven basisinformatie over rsyslog. Er is echter aanzienlijk meer documentatie beschikbaar in HTML-formaat in de doc directory van uw systeem. Het kan nodig zijn het rsyslog-doc pakket te installeren als het niet op uw systeem geïnstalleerd was. De root van de HTML-boom staat op /usr/share/doc/rsyslog-8.24.0/html/index.html. De locatie kan verschillen op uw systeem.

Het rsyslog programma draait als een daemon, gelijkaardig aan syslogd. Het configuratiebestand is standaard rsyslog.conf.

Lijst 11. Een rsyslog.conf configuratiebestand
$ 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 ###

Toon meerToon meer pictogram

xmlns=”http://www.w3.org/1999/xhtmlU herkent de bekende syslog.conf regels in het midden van het bestand, omgeven door extra dingen die de rsyslog voorziening begrijpt. Zie de man of info pagina’s of de HTML documentatie voor meer details.

U kunt logrotate gebruiken met bestanden die zijn aangemaakt door rsyslogd, hoewel SQL databases wellicht scripting of andere tools vereisen. Evenzo werkt het logger commando nog steeds om uw eigen markering in het log te plaatsen.

De systemd logboek dienst gebruiken

De systemd logboek dienst voorbeelden in deze sectie komen van Fedora 26.

Het systemd-journald programma is een systeem service daemon die logboek gegevens verzamelt en opslaat. Het maakt en onderhoudt gestructureerde, geïndexeerde journalen, gebaseerd op logboekinformatie die wordt ontvangen van de gebruikelijke syslog-bronnen en gestructureerde logboekberichten met behulp van een eigen journaal-API.

De gebruikelijke /dev/log socket is een link naar /run/systemd/journal/dev-log, zoals te zien is in Listing 12.

Listing 12. De dev/log en /run/systemd/journal/dev-log sockets
#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

Toon meerToon meer pictogram

xmlns=”http://www.w3.org/1999/xhtmlDe systemd-journald daemon luistert op sockets en andere bestandssysteem entiteiten, inclusief /dev/kmsg, /dev/log, /run/systemd/journal/dev-log, /run/systemd/journal/socket, en /run/systemd/journal/stdout. Het kan ook luisteren naar audit gebeurtenissen met netlink, dat kernel informatie overbrengt naar de gebruikersruimte met behulp van sockets.

De meeste loggegevens zijn tekstueel, maar binaire gegevens zijn toegestaan, theoretisch tot een grootte van 2^64-1 bytes. Het journaal slaat loggegevens standaard op in /run/log/journal/. Het bestandssysteem /run/ is vluchtig, dus logboekgegevens gaan verloren als het systeem opnieuw wordt opgestart. Om de gegevens persistent te maken, maakt u /var/log/journal/ aan en systemd-journald slaat de gegevens daar op.

Net als bij andere logging systemen is er een configuratiebestand. Standaard is dat /etc/systemd/journald.conf. Veel opties zijn standaard ingebouwd, dus de meeste opties in het instellingenbestand zijn in eerste instantie uitgecommentarieerd, zoals te zien is in Lijst 13. Haal het commentaar weg van degene die u wenst te wijzigen. Zoals gebruikelijk kunnen aanvullende instellingenbestanden worden geplaatst in de journald.conf.d directory. Pakketten zouden hun journald configuratie informatie in /usr/lib/systemd/*.conf.d/ moeten installeren.

Lijst 13. Initiële /etc/systemd/journald.conf voorbeeld
# 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

Toon meerToon meer pictogram

xmlns=”http://www.w3.org/1999/xhtmlGebruik de man of info pagina’s voor journald.conf om meer te leren over de configuratie-instellingen die worden ondersteund.

Gebruik het journalctl commando om gelogde informatie weer te geven. In listing 14 ziet u hoe u de laatste 10 regels gelogde gegevens kunt weergeven en vervolgens de optie -f kunt gebruiken om nieuwe regels te volgen, of continu weer te geven, wanneer ze worden toegevoegd. Gebruik de --rotate optie om logboekbestanden te roteren.

Lijst 14. Journalctl gebruiken om logberichten weer te geven of te volgen
#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

Toon meerToon meer pictogram

xmlns=”http://www.w3.org/1999/xhtmlGebruik het systemctl commando om informatie weer te geven over, interactie met, of het besturen van de daemon en gerelateerde eenheden. Listing 15 toont een voorbeeld.

Listing 15. Gebruik van het commando 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'.

Toon meerToon meer pictogram

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

Syslog-ng beschrijft zichzelf als “een verbeterde log daemon, die een breed scala aan invoer- en uitvoermethoden ondersteunt: syslog, ongestructureerde tekst, queueing, SQL & NoSQL.” Het ondersteunt legacy en verbeterde syslog protocollen en voegt ondersteuning toe voor JavaScript Object Notation (JSON) en journald berichtformaten. Syslog-ng ondersteunt uitgebreide mogelijkheden om invoer te filteren en uitvoer te formatteren.

Eenmaal geïnstalleerd, is er basisinformatie in de man en info pagina’s. Je zult echter waarschijnlijk “The syslog-ng Open Source Edition Administrator Guide” willen gebruiken, die beschikbaar is in zowel HTML als PDF formaat. (Zie bronnen rechts voor meer informatie).

Het standaard configuratiebestand is /etc/syslog-ng/syslog-ng.conf. Een voorbeeld wordt getoond in Listing 16. Extra configuratiebestanden kunnen worden gevonden in de /etc/syslog-ng/conf.d directory.

Listing 16. Voorbeeld van 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:

Toon meerToon meer pictogram

xmlns=”http://www.w3.org/1999/xhtmlIn het algemeen is het niet nodig om zowel het systemd journ als het syslog-ng journalling te draaien. Als u beide wilt gebruiken, moet u enkele configuratiewijzigingen in beide uitvoeren en vervolgens beide opnieuw starten. Zoek op het web naar actuele instructies over hoe je dit moet doen.

Dit is het einde van je introductie in logging faciliteiten onder Linux.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *