# Wat is Journalctl en wat kan het doen?

Journalctl is een efficiënte oplossing voor het beheren en analyseren van systeemlogboeken in Linux-omgevingen. Deze tool kan worden gebruikt voor het monitoren van systeemactiviteiten, het oplossen van problemen en het realtime volgen van logboeken, waardoor cruciale inzichten worden verkregen voor het effectief diagnosticeren van systeemproblemen.

## Wat is Journalctl?

`journalctl` is een krachtig hulpprogramma voor **het opvragen en weergeven van gebeurtenislogboeken** of logbestanden onder Linux. Het is een centraal onderdeel van de systeem- en servicebeheersuite systemd, die bij veel moderne Linux-distributies zoals Ubuntu, Fedora en Arch Linux wordt geleverd. De naam ‘journalctl’ is een combinatie van ‘journal’ (logboek) en ‘ctl’ (controle), wat verwijst naar het feit dat het commando wordt gebruikt om logboeken te controleren en te analyseren.

`journalctl` vereenvoudigt de toegang tot het systeemlogboek, dat wordt beheerd door `systemd-journald`. Het systeemlogboek is een gecentraliseerde verzameling van berichten en gebeurtenissen die plaatsvinden tijdens de werking van een Linux-systeem. In tegenstelling tot traditionele tekstgebaseerde logboeken biedt `journalctl` een gestructureerde en efficiënte manier om **loggegevens in realtime** te doorzoeken, te filteren en weer te geven. Dit kan helpen bij het diagnosticeren van problemen of het bewaken van de systeemstatus.

Voor dit doel slaat Journalctl de **logbestanden op in binair formaat**, omdat binaire logbestanden compacter en efficiënter zijn dan hun op tekst gebaseerde tegenhangers. Gezien de grote hoeveelheid gelogde gegevens maakt dit een snellere en efficiëntere zoekopdracht naar specifieke gebeurtenissen of informatie binnen de logbestanden mogelijk. Door hun gestructureerde en gecodeerde aard bieden binaire logbestanden ook verbeterde beveiliging in vergelijking met op tekst gebaseerde logs, aangezien hun formaat het manipuleren van loggegevens moeilijker maakt.

## Hoe u de opslagruimte voor logbestanden kunt aanpassen

`journalctl` kan worden gebruikt om de opslagruimte die logbestanden op de harde schijf innemen te beperken en te configureren. Dit gebeurt via **de instellingen van de service systemd-journald**. De configuratie-instellingen worden opgeslagen in het bestand `/etc/systemd/journald.conf`. Hier vindt u de volgende vermeldingen:

- `SystemMaxUse`: Beperkt de opslagruimte voor logbestanden in de systeemmap
- `RuntimeMaxUse`: Beperkt de opslagruimte voor logbestanden in de tijdelijke map

Om de geheugenlimiet in te stellen, voegt u de volgende regels toe of wijzigt u deze indien nodig:

```bash
[Journal] 
SystemMaxUse=50M 
RuntimeMaxUse=50M
```

De waarden uit dit voorbeeld (50M) kunnen naar behoefte worden aangepast. U kunt ook andere eenheden gebruiken, zoals `K` (kilobytes), `M` (megabytes), `G` (gigabytes) of `T` (terabytes). Nadat u het configuratiebestand hebt bewerkt, moet systemd-journald opnieuw worden opgestart om de wijzigingen door te voeren:

```bash
sudo systemctl restart systemd-journald
```

Door deze stappen te volgen, wordt systemd-journald geconfigureerd om de schijfruimte voor logbestanden te beperken. Zorg ervoor dat de limiet die u kiest voldoende is om essentiële loggegevens op te slaan. Tegelijkertijd is het belangrijk om te voorkomen dat u buitensporig veel schijfruimte gebruikt. Houd er rekening mee dat **oudere logs automatisch worden verwijderd** zodra de limiet van de toegewezen schijfruimte is bereikt.

### Beoordeel het gebruik van schijfruimte

Controleer voordat u de opslagruimte voor logbestanden aanpast hoeveel opslagruimte momenteel door het journaal wordt ingenomen. Gebruik hiervoor `--disk-usage`:

```bash
journalctl --disk-usage
```

Hier is een voorbeeld van hoe de uitvoer eruitziet:

```bash
Journals take up 8.0M on disk.
```

### Oude logboekvermeldingen verwijderen

Als Journal te veel geheugen in beslag neemt, kunt u oude logboekvermeldingen verwijderen. Er zijn twee manieren om dit te doen:

Gebruik `--vacuum-size` om de grootte van uw dagboek te verkleinen door de grootte op te geven. Met deze methode worden oude vermeldingen verwijderd totdat de totale opslagruimte van het dagboek op de harde schijf de gewenste grootte heeft bereikt.

```bash
sudo journalctl --vacuum-size=1G
```

Als alternatief kunt u het logboek verkleinen door een bewaartermijn in te stellen met behulp van de optie `--vacuum-time`. Invoer die ouder is dan de opgegeven tijd wordt verwijderd. Om logboekvermeldingen van het afgelopen jaar te bewaren, kunt u de volgende opdracht gebruiken:

```bash
sudo journalctl --vacuum-time=1years
```

## Wat kan Journalctl doen?

`journalctl` biedt krachtige filtermogelijkheden, waarmee gebruikers **logboekvermeldingen op basis van verschillende criteria** kunnen doorzoeken. Deze functie maakt het mogelijk om gericht naar relevante informatie te zoeken, waardoor problemen sneller kunnen worden geïdentificeerd. Hier volgen enkele veelgebruikte `journalctl` filteropties:

### Logs weergeven

Door het commando `journalctl` uit te voeren, worden logboekvermeldingen voor het huidige systeem in omgekeerde chronologische volgorde weergegeven. Gebruik `journalctl -f` of `journalctl --follow` om de vermeldingen **in realtime** weer te geven. Nieuwe vermeldingen worden automatisch weergegeven in de volgorde waarin ze binnenkomen.

Afhankelijk van hoe lang systemd al op uw systeem draait, krijgt u waarschijnlijk een onbeheersbare hoeveelheid gegevens te zien, die tienduizenden of zelfs honderdduizenden regels lang kan zijn. Om sneller te vinden wat u zoekt, kunt u de logbestanden verder filteren met behulp van verschillende Linux-commando’s.

## Hoe filteren op tijd

Met behulp van `journalctl` kunnen logbestanden worden gefilterd op een specifiek tijdstip, zodat ze efficiënter kunnen worden doorzocht op relevante informatie.

### Filteren op opstartproces

Het filteren van logbestanden op basis van het opstartproces is van onschatbare waarde voor het onderzoeken van systeemgebeurtenissen op specifieke tijdstippen of tijdens opstartscenario’s. Deze gerichte aanpak stroomlijnt de probleemdiagnose door logboekvermeldingen te concentreren op specifieke systeemstatussen of configuraties.

1. **Huidige opstart**: Met `journalctl -b` worden alle logboekvermeldingen weergegeven die sinds de laatste herstart zijn verzameld.
2. **Eerdere opstartsessies**: Gebruik de optie `-b` gevolgd door een nummer om de logboekvermeldingen voor een specifieke eerdere opstartsessie weer te geven. Als u bijvoorbeeld `journalctl -b 1` invoert, wordt de vorige opstartsessie weergegeven.
3. **Lijst met alle beschikbare opstartprocessen**: Met het commando `journalctl --list-boots` wordt een lijst met beschikbare opstartsessies met hun respectievelijke ID’s weergegeven. U kunt de gewenste opstart-ID gebruiken om de logboeken voor een specifieke opstartsessie weer te geven.

Hoewel het opslaan van eerdere opstartprocessen standaard is ingeschakeld op sommige Linux-distributies, moeten gebruikers dit op andere distributies mogelijk **eerst inschakelen**. Om dit te doen, maakt u een map aan waar het logbestand wordt opgeslagen door `sudo mkdir -p /var/log/journal` in te voeren. U kunt ook het configuratiebestand van het logboek bewerken met `sudo nano /etc/systemd/journald.conf`. Stel vervolgens de optie `Storage=` onder `[Journal]` in op `persistent` om permanente logboekregistratie in te schakelen:

```bash
. . . 
[Journal] 
Storage=persistent
```

### Filteren op tijdvenster

Soms kan het nodig zijn om logboekvermeldingen voor een bepaalde periode weer te geven. `journalctl` biedt de opties `--since` en `--until`, die kunnen worden gebruikt om de vermeldingen tot een **bepaalde periode** te beperken. Gebruik hiervoor de tijdnotatie `YYYY-MM-DD HH:MM:SS`. Het commando om alle logboekvermeldingen tussen 1 januari 2023 om 12:00 uur en 2 januari 2023 om 12:00 uur weer te geven, ziet er als volgt uit:

```bash
journalctl --since "2023-01-01 12:00:00" --until "2023-01-02 12:00:00"
```

De combinatie van de twee commando’s kan ook filteren voor een kortere periode:

```bash
journalctl --since 09:00 --until "1 hour ago"
```

Je kunt ook delen van het formaat weglaten. Als je bijvoorbeeld alle vermeldingen vanaf een bepaald tijdstip wilt weergeven:

```bash
journalctl --since "2023-11-16 15:25:00"
```

`journalctl` herkent ook relatieve waarden zoals `yesterday`, `today` of `tomorrow`. Om de gegevens van gisteren weer te geven, voert u het volgende in:

```bash
journalctl --since yesterday
```

## Hoe filteren op berichtkenmerken

Het gebruik van `journalctl` om logboekvermeldingen te filteren op basis van belangrijkheid of inhoud is ook uiterst nuttig, omdat u hiermee **naar relevante informatie** kunt **zoeken en** u **kunt concentreren op specifieke aspecten van de systeemlogboeken**. Dit maakt onder andere een efficiënte foutdiagnose, vroege detectie van beveiligingsproblemen en snelle prestatiebewaking mogelijk.

### Filteren op prioriteit

Om logbestanden met `journalctl` te filteren op belangrijkheid van het bericht, kunt u de **prioriteitscategorieën voor logboekvermeldingen** gebruiken. Hiervoor kunt u de prioriteitsnaam of de bijbehorende numerieke waarde gebruiken. Hoe lager het getal, hoe belangrijker het bericht:

- 0: emerg (noodsituatie)
- 1: alert (alarm)
- 2: crit (kritiek)
- 3: err (fout)
- 4: waarschuwing (warning)
- 5: notice (opmerking)
- 6: info (informatie)
- 7: debug (probleemoplossing)

Berichten met een bepaalde prioriteit kunnen worden gefilterd met behulp van de optie `-p`. Het volgende commando geeft bijvoorbeeld alleen logboekvermeldingen weer met de prioriteit ‘err’ (fout) en hoger:

```bash
journalctl -p err
```

### Filteren op eenheid

Het filteren van logbestanden per eenheid is handig om u te concentreren op specifieke services of processen. Deze kunnen worden gefilterd met behulp van de optie `-u`. Om bijvoorbeeld logboekvermeldingen voor de Apache-webserver weer te geven, voert u het volgende in:

```bash
journalctl -u apache2
```

De zoekopdracht kan verder worden verfijnd met behulp van relatieve tijdwaarden. Om te bepalen of de dienst vandaag al is uitgevoerd, kunt u het volgende invoeren:

```bash
journalctl -u apache2 --since today
```

`journalctl` kan gegevensrecords van verschillende eenheden samenvoegen. Als uw Nginx-proces bijvoorbeeld is gekoppeld aan een PHP FPM-eenheid, kunnen hun vermeldingen chronologisch worden samengevoegd. Het commando hiervoor is:

```bash
journalctl -u nginx.service -u php-fpm.service --since today-u apache2 --since today
```

### Filteren op proces, gebruiker of groeps-ID

Journalctl kan logboekvermeldingen filteren op proces-, gebruikers- of groeps-ID. Als u de **exacte PID** hebt **van het proces** dat u wilt zoeken, kunt u de optie `_PID` gebruiken om vermeldingen te filteren. Als de PID bijvoorbeeld 8088 is, ziet het commando er als volgt uit:

```bash
journalctl _PID=8088
```

Je kunt ook de filters `_UID` of `_GID` gebruiken om alle vermeldingen weer te geven die door een bepaalde gebruiker of groep zijn geregistreerd. Als je webserver bijvoorbeeld ‘www-data’ heet, kun je de gebruikers-ID als volgt vinden:

```bash
id -u www-data
33
```

De journaalboekingen kunnen worden gefilterd op basis van het ID:

```bash
journalctl _UID=33 --since today
```

Om te bepalen voor welke groep-ID’s er vermeldingen zijn aangemaakt, kunt u de optie `-F` gebruiken. Hiermee worden alle waarden weergegeven die zijn opgeslagen voor het veld Groep-ID:

```bash
journalctl -F _GID
```

Hier is een voorbeeld van de uitvoer:

```bash
32
99
102
133
81
84
100
0
124
87
```

### Filteren op component

Filteren op component is handig om u te concentreren op specifieke toepassingen, services of processen. Het componentveld wordt doorgaans gebruikt door **verschillende services of softwarecomponenten** om specifieke informatie in de logboeken te onderscheiden. Met deze filtering kunt u logboekvermeldingen beperken tot een bepaalde component, toepassing of service-eenheid. Als u bijvoorbeeld vermeldingen wilt filteren die het uitvoerbare bestand `bash` bevatten, voert u de volgende opdracht in:

```bash
journalctl /usr/bin/bash
```

### Kernelberichten weergeven

Het filteren van logboekvermeldingen voor kernelberichten met `journalctl` is een effectieve manier om informatie over de werking van de kernel in een Linux-systeem te analyseren. Kernelberichten kunnen **aanwijzingen** geven **over hardwareproblemen, stuurprogramma-conflicten of andere systeemgebeurtenissen**.

Kernelberichten die in de `dmesg` -uitvoer te vinden zijn, kunnen ook uit het journaal worden gefilterd. Ze kunnen worden weergegeven met de vlaggen `-k or ``:

```bash
journalctl -k
```

De kernelberichten van het huidige opstartproces worden standaard weergegeven. U kunt filteren op berichten van een **alternatieve opstartprocedure** met behulp van de eerder genoemde opstartselectievlaggen. Als u bijvoorbeeld de kernelberichten van de laatste vijf opstartprocessen wilt bekijken, voert u het volgende in:

```bash
journalctl -k -b -5
```

## De weergave van het logboek wijzigen in Journalctl

Door de weergave in `journalctl` aan te passen, kunnen gebruikers nauwkeuriger door logbestanden zoeken en snel informatie extraheren. Gebruikers kunnen de weergave aanpassen om loggegevens over een specifieke periode of in realtime weer te geven, zodat systeemfouten en -problemen snel kunnen worden geïdentificeerd.

### De output verkorten of uitbreiden

U kunt de manier waarop `journalctl` gegevens weergeeft aanpassen door de uitvoer in te korten of uit te breiden. Standaard geeft `journalctl` de volledige invoer weer in de pager en voert deze uit aan de rechterkant van het scherm. De uitvoer kan worden ingekort met de optie `--no-full`:

```bash
journalctl --no-full
```

U kunt de weergave uitbreiden met de vlag `-a`:

```bash
journalctl -a
```

### Stel `journalctl` in op standaarduitvoer

In `journalctl` wordt de loguitvoer standaard weergegeven met behulp van een pager zoals `less`. Hierdoor kunnen gebruikers de uitvoer stapsgewijs bekijken, waardoor ze gemakkelijker door lange logbestanden kunnen navigeren. Er zijn echter gevallen waarin het weergeven van de standaarduitvoer van logs noodzakelijk is. Hier volgt hoe u dat kunt doen:

```bash
journalctl --no-pager
```

### Uitvoerformaten instellen

`journalctl` biedt ook opties voor het aanpassen van het uitvoerformaat van logbestanden. Hiervoor kunt u de optie `-o` gebruiken met de bijbehorende formaatidentificatie. Om bijvoorbeeld logboekvermeldingen in JSON-formaat uit te voeren, voert u de volgende code in:

```bash
journalctl -b -u nginx -o json
```

Dit is de uitvoer:

```bash
{ "__CURSOR" : "s=13a21661cf4948289c63075db6c25c00;i=116f1;b=81b58db8fd9046ab9f847ddb82a2fa2d;m=19f0daa;t=50e33c33587ae;x=e307daadb4858635", "__REALTIME_TIMESTAMP" : "1422990364739502", "__MONOTONIC_TIMESTAMP" : "27200938", "_BOOT_ID" : "81b58db8fd9046ab9f847ddb82a2fa2d", "PRIORITY" : "6", "_UID" : "0", "_GID" : "0", "_CAP_EFFECTIVE" : "3fffffffff", "_MACHINE_ID" : "752737531a9d1a9c1e3cb52a4ab967ee", "_HOSTNAME" : "desktop", "SYSLOG_FACILITY" : "3", "CODE_FILE" : "src/core/unit.c", "CODE_LINE" : "1402", "CODE_FUNCTION" :
```

De volgende formaten kunnen worden gebruikt in Journalctl:

- **cat**: Geeft alleen het berichtveld weer
- **export**: Binair formaat geschikt voor overdracht of opslag
- **json**: Standaard JSON met één vermelding per regel
- **json-pretty**: JSON-opmaak voor betere leesbaarheid
- **json-sse**: Omwikkelde JSON-opmaak waarmee door de server verzonden gebeurtenissen kunnen worden toegevoegd
- **short**: Standaard syslog-stijl uitvoer
- **short-iso**: Standaardformaat voor het weergeven van ISO-8601-tijdstempels
- **short-monotonic**: Standaardformaat met monotone tijdstempels
- **short-precise**: standaardformaat met microsecondeprecisie
- **verbose**: Geeft elk beschikbaar journaalveld voor de betreffende invoer weer

## Hoe voert `journalctl` actieve procesbewaking uit?

Tijdens actieve procesbewaking met `journalctl` wordt het opdrachtregelprogramma `tail` gebruikt om logbestanden in realtime bij te houden en de meest recente vermeldingen weer te geven. Dit maakt het gemakkelijker om systeemgebeurtenissen in realtime te bewaken en snel op problemen te reageren.

## Hoe de huidige logbestanden weergeven

De optie `-n` kan worden gebruikt om een bepaald aantal gegevensrecords weer te geven. Deze werkt op precies dezelfde manier als `tail -n`. Om de laatste 10 vermeldingen weer te geven, gebruikt u de volgende opdracht:

```bash
journalctl -n
```

U kunt ook het aantal vermeldingen instellen, bijvoorbeeld op 20:

```bash
journalctl -n 20
```


This is a markdown version of: [https://www.ionos.com/nl-be/digitalguide/server/gereedschap/journalctl/](https://www.ionos.com/nl-be/digitalguide/server/gereedschap/journalctl/) for AI/LLM consumption.