Journalctl is a command-line utility for viewing system logs in Linux distributions that use Systemd. It’s an essential tool for system administrators to diagnose problems, monitor system performance, and track changes to the system. However, journal logs can consume large amounts of disk space, especially if they are not managed properly. In this article, we will explain how to automate the process of cleaning up journal logs in Linux systems using journalctl and cron.

Before proceeding, it’s important to understand that journal logs contain important information that can help diagnose problems. It’s recommended to keep a few weeks’ worth of logs to ensure that you have sufficient data to troubleshoot any issues that might arise.

What is journalctl?

Journalctl is a command-line utility that allows you to interact with the systemd journal. The systemd journal is a central repository for log data generated by various system components and applications. The journal provides a centralized and easily searchable repository of log data, making it easier to manage and monitor your system logs.

Clean Up Logs Manually using Journalctl

Before we begin, it’s important to understand that logs in the systemd journal are stored in binary format and are rotated automatically based on size and age. This means that you don’t need to manually delete old logs to free up disk space. However, you may still need to prune the logs if you need to free up disk space quickly or if your logs are consuming an excessive amount of disk space.

Here are the steps to use `journalctl` to clean up your logs:

  1. Determine the Size of Your Journal Logs

    The first step in automating the cleanup of journal logs is to determine the maximum size you want your logs to be. You can use the following command to check the current size of your logs:

    journalctl --disk-usage 
    

    This will show you the total size of the journal and the amount of disk space it is consuming. You should see the output like:

    Output

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

    The above command shows that the jouranlctl logs using 2.2GB space on disk.

    You can also check the log size with `du -sh /var/log/journal` command.

  2. Prune Old Logs

    Once you have determined the size of the journal, you can prune old logs by using –vacuum-size, –vacuum-time command line options. A basic syntax to prune logs by size:

    journalctl vacuumsize=<size>

    Replace with the maximum size you want the journal to consume, in bytes. For example, if you want to limit the journal to 500MB, you would use the following command:

    journalctl --vacuum-size=500M 
    

    You can also remove logs file older than specific time period. For example, to remove all files older than 7 days, execute:

    sudo journalctl --vacuum-time=7d 
    
  3. Verify the pruning

    To verify that the logs have been pruned, run the journalctl –disk-usage command again and verify that the journal size has been reduced to the desired limit.

Automate Journalctl Log Cleanup

Journalctl logs can consume a large amount of disk space on Linux systems. To keep the size of the logs under control, you can configure Systemd to automatically clean up old logs. This can be done by modifying the settings in the /etc/systemd/journald.conf file.

  • SystemMaxUse: Maximum disk space log files can use.
  • SystemMaxFileSize: Maximum size of induvial log file
  • SystemMaxFiles: Maximum number of log files at a time.

Here are the steps to automate journal log cleanup using the /etc/systemd/journald.conf file:

  1. Open the /etc/systemd/journald.conf file in a text editor:
    sudo nano /etc/systemd/journald.conf 
    
  2. Add or modify the following entries in the file:

    # Set the maximum size of the journal logs in bytes

    SystemMaxUse=200M

    # Set the number of days after which logs will be deleted

    MaxRetentionSec=7d

  3. Save and close the file.
  4. Restart the Systemd journal service to apply the changes:
    sudo systemctl restart systemd-journald
    

Now, Systemd will automatically clean up journal logs that are older than 7 days and ensure that the total size of the logs does not exceed 200M. You can check the current size of your logs using the journalctl –disk-usage command.

Note: The values used in this example are for demonstration purposes only. You should adjust the values to meet the specific requirements of your system.

Conclusion

In this article, we have provided a beginner’s guide to using `journalctl` to clean up your system logs. By pruning old logs, you can free up disk space and keep your system logs organized and easily searchable. By configuring the settings in the “/etc/systemd/journald.conf” file, you can automate the process of cleaning up journal logs in Linux systems using Systemd. This helps ensure that your logs do not consume excessive disk space and that you have access to the data you need when you need it.