Systemd è il gestore di sistema predefinito in tutti i principali sistemi operativi basati su Linux. Fornisce un demone journald che gestisce tutti i messaggi prodotti dal kernel e dai servizi di sistema. Il demone journald raccoglie i dati da tutte le fonti disponibili e li archivia in un formato binario per una manipolazione facile e dinamica. Systemd fornisce uno strumento da riga di comando chiamato journalctl che può essere utilizzato per leggere e analizzare i registri del journal. journalctl ti permette di analizzare e monitorare i log in tempo reale.
In questa guida, ti mostreremo come utilizzare journalctl per analizzare i log in Linux.
Prerequisiti
- Un nuovo server Ubuntu 20.04 sulla piattaforma Atlantic.Net Cloud
- Una password di root configurata sul tuo server
Crea server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo Ubuntu 20.04 come sistema operativo con almeno 2GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Dopo aver effettuato l'accesso al tuo server Ubuntu 20.04, esegui il comando seguente per aggiornare il tuo sistema di base con gli ultimi pacchetti disponibili.
apt-get update -y
Configura diario
Innanzitutto, crea una directory in cui archiviare il registro del diario:
mkdir /var/log/journal
Quindi, imposta la proprietà corretta con il seguente comando:
chown -R root:systemd-journal /var/log/journal
Quindi, modifica il file di configurazione predefinito di journald /etc/systemd/journald.conf e definisci la tua nuova directory:
nano /etc/systemd/journald.conf
Modifica la seguente riga:
Storage=persistent
Salva e chiudi il file, quindi riavvia il servizio systemd-journald per applicare le modifiche:
systemctl restart systemd-journald
Ora puoi controllare la directory /var/log/journal:
ls -l /var/log/journal
Dovresti vedere il seguente output:
drwxr-xr-x 2 root systemd-journal 4096 Apr 21 11:35 97bcb1f0d9aa4b339adefc87f1332d04
Usa journalctl per analizzare il registro
Per stampare tutti i registri raccolti da journald daemon, esegui il comando journalctl:
journalctl
Uscita:
-- Logs begin at Wed 2021-04-21 07:00:15 UTC, end at Wed 2021-04-21 11:40:12 UTC. -- Apr 21 07:00:15 ubuntu2004 kernel: Linux version 4.19.0-9-amd64 ([email protected]) (gcc version 8.3.0 (Debian 8.3.0-6)) #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) Apr 21 07:00:15 ubuntu2004 kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-4.19.0-9-amd64 root=UUID=d4f8c3a8-164f-4e15-a198-6124ce8719b5 ro Apr 21 07:00:15 ubuntu2004 kernel: x86/fpu: x87 FPU will use FXSAVE Apr 21 07:00:15 ubuntu2004 kernel: BIOS-provided physical RAM map: Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x0000000000100000-0x000000007ffdbfff] usable Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x000000007ffdc000-0x000000007fffffff] reserved Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved Apr 21 07:00:15 ubuntu2004 kernel: NX (Execute Disable) protection: active
Se hai bisogno di un output più dettagliato, esegui il seguente comando:
journalctl -o verbose
Uscita:
-- Logs begin at Wed 2021-04-21 07:00:15 UTC, end at Wed 2021-04-21 11:40:29 UTC. -- Wed 2021-04-21 07:00:15.461318 UTC [s=1baac74dce14445f9a6670f231104955;i=1;b=41c491f449fa44c288474cf9f14386c0;m=1ee776;t=5c0761d6627c6;x=4c88a9 _SOURCE_MONOTONIC_TIMESTAMP=0 _TRANSPORT=kernel PRIORITY=5 SYSLOG_FACILITY=0 SYSLOG_IDENTIFIER=kernel MESSAGE=Linux version 4.19.0-9-amd64 ([email protected]) (gcc version 8.3.0 (Debian 8.3.0-6)) #1 SMP Debian 4.19.118-2+deb10u1 _BOOT_ID=41c491f449fa44c288474cf9f14386c0 _MACHINE_ID=97bcb1f0d9aa4b339adefc87f1332d04 _HOSTNAME=ubuntu2004 Wed 2021-04-21 07:00:15.461357 UTC [s=1baac74dce14445f9a6670f231104955;i=2;b=41c491f449fa44c288474cf9f14386c0;m=1ee79e;t=5c0761d6627ed;x=eaf7df _SOURCE_MONOTONIC_TIMESTAMP=0 _TRANSPORT=kernel SYSLOG_FACILITY=0 SYSLOG_IDENTIFIER=kernel _BOOT_ID=41c491f449fa44c288474cf9f14386c0 _MACHINE_ID=97bcb1f0d9aa4b339adefc87f1332d04 _HOSTNAME=ubuntu2004 PRIORITY=6 MESSAGE=Command line: BOOT_IMAGE=/boot/vmlinuz-4.19.0-9-amd64 root=UUID=d4f8c3a8-164f-4e15-a198-6124ce8719b5 ro
Per elencare tutti i log di avvio disponibili, esegui il comando seguente:
journalctl --list-boots
Uscita:
0 41c491f449fa44c288474cf9f14386c0 Wed 2021-04-21 07:00:15 UTC—Wed 2021-04-21 11:41:44 UTC
Per visualizzare tutti i registri dall'ultimo riavvio, esegui il comando seguente:
journalctl -b
Per visualizzare le voci di registro più recenti, esegui il comando seguente:
journalctl --lines 5
Uscita:
-- Logs begin at Wed 2021-04-21 07:00:15 UTC, end at Wed 2021-04-21 11:45:13 UTC. -- Apr 21 11:45:06 ubuntu2004 sshd[12088]: Failed password for invalid user telecomadmin from 103.42.205.111 port 64471 ssh2 Apr 21 11:45:08 ubuntu2004 sshd[12088]: Connection closed by invalid user telecomadmin 103.42.205.111 port 64471 [preauth] Apr 21 11:45:13 ubuntu2004 sshd[12092]: Invalid user admin from 81.70.161.162 port 60614 Apr 21 11:45:13 ubuntu2004 sshd[12092]: pam_unix(sshd:auth): check pass; user unknown Apr 21 11:45:13 ubuntu2004 sshd[12092]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=81.70.161.162
Per stampare il registro continuamente, esegui il seguente comando:
journalctl --follow
Uscita:
-- Logs begin at Wed 2021-04-21 07:00:15 UTC. -- Apr 21 11:45:36 ubuntu2004 sshd[12106]: Disconnected from invalid user babi 104.131.102.169 port 54872 [preauth] Apr 21 11:45:40 ubuntu2004 sshd[12108]: Invalid user telecomadmin from 103.108.241.111 port 60842 Apr 21 11:45:40 ubuntu2004 sshd[12108]: pam_unix(sshd:auth): check pass; user unknown Apr 21 11:45:40 ubuntu2004 sshd[12108]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.108.241.111 Apr 21 11:45:41 ubuntu2004 sshd[12110]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=101.32.11.137 user=root Apr 21 11:45:42 ubuntu2004 sshd[12108]: Failed password for invalid user telecomadmin from 103.108.241.111 port 60842 ssh2 Apr 21 11:45:43 ubuntu2004 sshd[12108]: Connection closed by invalid user telecomadmin 103.108.241.111 port 60842 [preauth] Apr 21 11:45:43 ubuntu2004 sshd[12110]: Failed password for root from 101.32.11.137 port 43086 ssh2 Apr 21 11:45:45 ubuntu2004 sshd[12110]: Received disconnect from 101.32.11.137 port 43086:11: Bye Bye [preauth] Apr 21 11:45:45 ubuntu2004 sshd[12110]: Disconnected from authenticating user root 101.32.11.137 port 43086 [preauth]
Per visualizzare log specifici relativi ai servizi come SSH e Nginx, esegui il comando seguente:
journalctl -u ssh.service journalctl -u nginx.service
Per visualizzare solo i log relativi al kernel, esegui il comando seguente;
journalctl -k
Per visualizzare i log che contengono errori o critici, esegui il comando seguente:
journalctl -p err -b
Uscita:
-- Logs begin at Wed 2021-04-21 07:00:15 UTC, end at Wed 2021-04-21 11:49:21 UTC. -- Apr 21 07:00:16 ubuntu2004 ntpd[337]: leapsecond file ('/usr/share/zoneinfo/leap-seconds.list'): expired less than 115 days ago Apr 21 07:00:16 ubuntu2004 ntpd[337]: bind(21) AF_INET6 fe80::200:2dff:fe3a:264e%2#123 flags 0x11 failed: Cannot assign requested address Apr 21 07:00:16 ubuntu2004 ntpd[337]: unable to create socket on ens3 (5) for fe80::200:2dff:fe3a:264e%2#123
Per visualizzare tutti i log di ieri, esegui il seguente comando:
journalctl --since yesterday
Per visualizzare tutti i log a partire dalle 6:00 e continuando fino a un'ora fa, esegui il comando seguente:
journalctl --since 06:00 --until "1 hour ago"
Per visualizzare la quantità di spazio utilizzata dal diario, esegui il seguente comando:
journalctl --disk-usage
Uscita:
Archived and active journals take up 16.0M in the file system.
Se vuoi conservare tutti i dati dei log solo dell'ultimo anno, esegui il comando seguente:
journalctl --vacuum-time=1years
Per visualizzare solo gli ultimi log, esegui il comando seguente:
journalctl -xe
Conclusione
Nella guida sopra, hai imparato come usare journalctl per leggere e analizzare diversi log di sistema. Ora puoi identificare o risolvere problemi relativi al sistema o alle applicazioni sul tuo VPS da Atlantic.Net.