Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Optimize journalctl to save server disk space in Linux

profile picture
Author
Faleddo
Published
2023-12-18
Time to read
5 minutes reading time

Introduction

As a system administrator, managing logs is an essential part of maintaining the health and performance of your Linux servers. One of the core logging systems on modern Linux distributions is systemd's logging subsystem, journalctl. Over time, logs can accumulate and consume a significant amount of disk space, which can lead to issues if the disk becomes full. In this tutorial, we'll cover how to optimize journalctl to save server disk space while ensuring that you retain the necessary log information for troubleshooting and auditing purposes.

Understanding Journalctl and the Systemd Journal

Before we dive into optimization, it's important to have a basic understanding of journalctl and the systemd journal. The systemd journal is a binary log that stores log data in a structured and indexed format. journalctl is the command-line tool used to interact with the journal.

Logs in the systemd journal are persistent across reboots by default, and without proper configuration, they can grow indefinitely. This is where optimization comes into play.

Step 1 - Assessing Current Disk Usage by Journal Logs

To begin, let's assess how much space the journal logs are currently using:

journalctl --disk-usage

This command will tell you the total amount of disk space consumed by the journal logs.

Archived and active journals take up 3.5G in the file system.

Step 2 - Configuring Systemd-journald

The systemd journal is configured through the file /etc/systemd/journald.conf. To optimize disk usage, you'll need to edit this file:

sudo nano /etc/systemd/journald.conf

Here are the key settings to consider:

  • SystemMaxUse: This sets the maximum space that logs can use on the disk. Once this limit is reached, older logs will be deleted to make room for new ones.
  • SystemKeepFree: This ensures that systemd always leaves a certain amount of free space on the disk.
  • MaxRetentionSec: This sets the maximum time to store log entries. Older entries beyond this time are purged.
  • MaxFileSec: This sets the maximum time before a new journal file is started.

Configure these settings based on your server's disk size and how much log data you need to keep. For example:

SystemMaxUse=500M
SystemKeepFree=1G
MaxRetentionSec=1month
MaxFileSec=1week

These settings limit the logs to 500MB, ensure that at least 1GB of disk space is always free, keep logs for a maximum of one month, and start a new log file every week.

After editing the file, save your changes and restart the systemd-journald service:

sudo systemctl restart systemd-journald

Step 3 - Manually Trimming the Journal

If you need to immediately reduce disk space usage, you can manually trim the journal. To remove old entries beyond a certain time, use:

sudo journalctl --vacuum-time=1month

To limit the journal size to a specific size, use:

sudo journalctl --vacuum-size=500M

These commands will remove older entries to respect the time frame or size limit you set.

Step 4 - Setting Up Log Rotation

While systemd-journald handles its own log rotation based on the configuration file, you can also set up additional log rotation if you're using other logging systems alongside systemd-journald. For example, logrotate is a utility that rotates, compresses, and mails system logs. You can configure logrotate by editing its configuration files in /etc/logrotate.conf and /etc/logrotate.d/.

Conclusion

Optimizing journalctl is a key step in managing your Linux server's disk space. By configuring systemd-journald, manually trimming logs, setting up log rotation, and monitoring disk usage, you can ensure that your server runs efficiently without running out of disk space due to log files. Remember to balance the need for disk space with the need for sufficient log data for analysis and troubleshooting. Regular review and adjustment of your logging configuration will help you maintain an optimal setup.

License: MIT
Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue
Try Hetzner Cloud

Get €20/$20 free credit!

Valid until: 31 December 2025 Valid for: 3 months and only for new customers
Get started
Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more