# 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.