LWM-Linux/08 - Advanced Linux Administration/System Log Management (SystemD).md

2.5 KiB

System Log Management *JournalCTL)

1. Introduction to journalctl

journalctl is a command-line utility for querying and displaying logs from the systemd journal. The systemd journal is a centralized logging system that collects and stores logging data from various sources, including the kernel, system services, and applications.

2. Basic Usage

To view all logs:

journalctl

To follow new log entries in real-time:

journalctl -f

3. Filtering Logs

By time:

journalctl --since "2024-01-01 00:00:00"

journalctl --until "2024-01-31 23:59:59"

journalctl --since "1 hour ago"

By service unit:

journalctl -u nginx.service

journalctl -u ssh.service

By priority level:

journalctl -p err Priority levels: emerg, alert, crit, err, warning, notice, info, debug

By kernel messages:

journalctl -k

4. Output Formatting

JSON output:

journalctl -o json

Short output format:

journalctl -o short

Verbose output:

journalctl -o verbose

5. Boot-specific Logs

Current boot:

journalctl -b

Previous boot:

journalctl -b -1

6. User-specific Logs

journalctl _UID=1000

7. Disk Usage and Log Rotation

View disk usage:

journalctl --disk-usage

Rotate logs:

journalctl --rotate

Vacuum old logs:

journalctl --vacuum-time=1week

journalctl --vacuum-size=1G

8. Remote Journal Access

To access logs on a remote system: journalctl -D /path/to/journal/directory

9. Persistent Journal Storage

Edit /etc/systemd/journald.conf:

Storage=persistent

Restart journald:

sudo systemctl restart systemd-journald

10. Forwarding Logs to a Central Server

Install rsyslog:

sudo apt install rsyslog

Configure /etc/rsyslog.conf for forwarding:

*.* @@central-log-server:514

Restart rsyslog:

sudo systemctl restart rsyslog

11. Security Considerations

  • Restrict access to journal files
  • Use encryption for remote logging
  • Regularly audit and review logs
  • Implement log retention policies

12. Performance Tuning

Adjust RateLimitInterval and RateLimitBurst in /etc/systemd/journald.conf to balance between logging thoroughness and system performance.

13. Integration with Other Tools

journalctl can be combined with other tools like grep, awk, and sed for advanced log analysis:

journalctl | grep "error" | awk '{print $1, $2, $3}'

14. Scripting and Automation

You can use journalctl in shell scripts for automated log analysis and reporting.