99 lines
4.5 KiB
Markdown
99 lines
4.5 KiB
Markdown
---
|
|
title: "Problemen oplossen door logs in te stellen"
|
|
excerpt: "De oorzaak van een probleem is niet altijd ver te zoeken. Begin daarom bij het begin; Instellen van jouw logs!"
|
|
coverImage: "/Logging/Logging.png"
|
|
date: "2023-10-26T12:00:00.000Z"
|
|
author: Eli Winderickx
|
|
hero_image: /Logging.png
|
|
category: Journald,Logging,Linux
|
|
---
|
|
## Syslog
|
|
De eenvoudigste en meest gebruikte log methode is door middel van de `rsyslog` service. De configuratie zit volledig in `/etc/rsyslog.conf` en `/etc/rsyslog.d/`. Hierin kan je eenvoudig zeggen welke soort meldingen, met specifieke prioriteiten naar een bepaalde log locatie gaan.
|
|
|
|
### De verschillende logs
|
|
|
|
Faciliteiten
|
|
| Code | Faciliteit | Omschrijving |
|
|
| ---- | ---------- | ------------ |
|
|
| 0 | kern | Kernel berichten |
|
|
| 1 | user | User-level berichten |
|
|
| 2 | mail | Mail systeem berichten |
|
|
| 3 | daemon | System daemon messages |
|
|
| 4 | auth | Authenticatie en beveiliging |
|
|
| 5 | syslog | Interne syslog berichten |
|
|
| 6 | lpr | Printer berichten |
|
|
| 7 | news | Netwerk berichten |
|
|
| 8 | UUCP | UUCP protocol berichten |
|
|
| 9 | cron | Berichten rond Cron |
|
|
| 10 | authpriv | Non-systeem authorizatie berichten |
|
|
| 11 | ftp | FTP protocol berichten |
|
|
| 16-23 | local0 - local7 | Aangepaste lokale berichten |
|
|
|
|
Prioriteiten
|
|
> Deze prioriteiten kan je ook gebruiken in Journald
|
|
|
|
| Code | Prioriteit | Omschrijving |
|
|
| ---- | ---------- | ------------ |
|
|
| 0 | emerg | Het systeem is onbruikbaar |
|
|
| 1 | alert | Dringend actie vereist |
|
|
| 2 | crit | Kritieke toestand |
|
|
| 3 | err | Niet-kritieke toestand |
|
|
| 4 | warning | Waarschuwing |
|
|
| 5 | notice | Melding |
|
|
| 6 | info | Informatief |
|
|
| 7 | debug | Debugging informatie |
|
|
|
|
Door middel van een combinatie van zowel de Faciliteiten en de Prioriteiten, kunnen we een entry aanmaken in de `rsyslog` configuratie gevolgd door de locatie van een logbestand. Deze zal dan uitsluitend informatie over die specifieke faciliteit en die prioriteit en hoger dan je invult. Ook kan je een `*` gebruiken om ineens alle faciliteiten of prioriteiten te viseren. Als je dit combineert met andere faciliteiten (door middel van een `;` symbool) kan je ook `none` als prioriteit ingeven om specifieke faciliteiten te filteren.
|
|
|
|
/etc/rsyslog.d/local_info
|
|
```
|
|
local0.info /var/log/local_info
|
|
```
|
|
|
|
> vergeet niet de `rsyslog` service te herstarten na de aanpassing!
|
|
|
|
### Zoeken in rsyslog
|
|
We kunnen onze configuratie nu testen door middel van logger. Hiermee kunnen we een specifieke faciliteit en prioriteit meegeven om er voor te zorgen dat we een entry kunnen testen.
|
|
|
|
```bash
|
|
logger -p local0.info "Dit was een test"
|
|
```
|
|
|
|
Hierna kunnen we zoeken in `/var/log/local_info` met allerhande tools. Gebruik `tail -f` om de actuele entries te verzamelen of `grep <zoekopdracht>` om echt in het bestand te zoeken naar een specifieke entry.
|
|
|
|
## Journald
|
|
Dezelfde prioriteiten als bij rsyslog kunnen gebruikt worden. Veelal is de informatie in deze logs beperkt tot de services die door systemd beheert worden. Wat uiteindelijk wel een sterk groeiende lijst is. Een groot verschil met `rsyslog` is dat journald standaard geen logs bijhoudt op de harde schijf maar in het geheugen. Herstart de computer? Dan zijn de logs weg.
|
|
|
|
> Entries in `rsyslog` worden ook in journald gelogged!
|
|
|
|
Je kan dit wel eenvoudig aanpassen in `/etc/systemd/journald.conf`. Hier is namelijk een optie genaamd `Storage`. Als deze op `auto` staat, wat de standaard is, gaat journald kijken of /var/log/journal bestaat. Als dat niet het geval is, schrijft Journald alle info naar /run/log. Deze locatie bestaat dus enkel in het geheugen. De `Storage` optie kan je ook aanpassen naar `persistent`. Hiermee wordt door journald de juiste map aangemaakt. Vul je `volatile` in, gaat journald sowieso naar het geheugen schrijven.
|
|
|
|
### Zoeken in Journald
|
|
Ook hier kan je eenvoudig testen met een 'identifier' en 'prioriteit':
|
|
```bash
|
|
echo "Dit is mijn unieke error" | systemd-cat -t "My_Unique_identifier" -p info
|
|
```
|
|
|
|
Er zijn een aantal flags die je gaan helpen om de data te filteren. Standaard wordt er namelijk wel wat informatie gelogged in journald.
|
|
|
|
```bash
|
|
# Toon alle informatie
|
|
journalctl
|
|
# Toon info van sshd service
|
|
journalctl -u sshd.service
|
|
# Toon enkel Kritieke meldingen
|
|
journalctl -p crit
|
|
# Toon alle actuele entries
|
|
journalctl -f
|
|
# Toon info over de laatste opstart
|
|
# Werkt enkel als journald persistent werkt
|
|
journalctl -b1
|
|
# Toon enkel berichten van gisteren tot 4 uur geleden
|
|
journalctl -S "yesterday" -U "-4hours"
|
|
# Toon berichten met een specifieke rsyslog facility
|
|
journalctl --facility=user
|
|
# Zoek naar een specifieke tekst
|
|
journalctl -g "NetworkManager"
|
|
```
|
|
|