Masdika Loading..
Masdika.BIZ.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portofolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.BIZ.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Cara Deploy Longhorn di Kubernetes Dengan Kubectl
  • Cara Deploy WordPress di Kubernetes Lengkap dengan SSL Let’s Encrypt
  • Panduan Lengkap Install MetalLB di Kubernetes (VPS/Bare Metal) dengan IP Publik
  • Panduan Lengkap Deploy Ingress NGINX dan Cert-Manager Kubernetes dengan HTTPS Otomatis (Let’s Encrypt)
  • Cara Install Kubernetes dengan Ansible di 2 Server (Master dan Worker)

Recent Comments

  1. Masdika.BIZ.ID on Cara Install Kubernetes dengan Ansible di 2 Server (Master dan Worker)
  2. wwqqs on Cara Install Kubernetes dengan Ansible di 2 Server (Master dan Worker)
  3. Rio Ardiansyah on Panduan Lengkap Redis Docker untuk WordPress
  4. Masdika.BIZ.ID on Cara Monitoring Status Disk RAID di Server Dell Menggunakan Bash Script dan PercCLI
  5. fafiki on Cara Monitoring Status Disk RAID di Server Dell Menggunakan Bash Script dan PercCLI

Archives

  • July 2025
  • June 2025

Categories

  • Tutorial

Masddika.BIZ.ID

  • About
  • Terms & Conditions
  • Privacy Policy
Blog Post

Panduan Membersihkan Log Linux Otomatis Setiap Bulan dengan Aman

June 17, 2025 Tutorial by Masdika.BIZ.ID
Panduan Membersihkan Log Linux Otomatis Setiap Bulan dengan Aman

Membersihkan file log sistem secara berkala penting untuk menjaga performa server dan menghindari pemborosan ruang disk. Jika Anda mengelola VPS atau server Linux produksi, log dapat tumbuh besar dan menyebabkan disk penuh jika tidak dikontrol. Artikel ini membahas cara membersihkan log Linux secara otomatis setiap bulan menggunakan bash script dan notifikasi via email. πŸš€

πŸ“¦ Apa Itu File Log Linux?

File log adalah catatan aktivitas sistem yang dihasilkan oleh berbagai komponen, seperti kernel, sistem init, paket aplikasi, dan keamanan. Semua log biasanya disimpan di direktori /var/log.

Beberapa file log penting:

  • /var/log/auth.log – log autentikasi (login, sudo)
  • /var/log/syslog – log sistem umum
  • /var/log/kern.log – log kernel Linux
  • /var/log/btmp, wtmp, lastlog – log aktivitas login user

Jika dibiarkan, file ini bisa membengkak hingga ratusan MB bahkan GB! 🧨

πŸ”§ Script Pembersihan Log Otomatis

Berikut adalah bash script untuk membersihkan log yang aman dan mengirim hasilnya ke email menggunakan msmtp:

#!/bin/bash

LOGFILE="/tmp/log-cleanup-report.txt"
EMAIL="emailkamu@gmail.com"

# Header laporan
{
  echo "🧹 $(date '+%a %b %d %r %Z %Y') - Mulai pembersihan log di /var/log secara aman..."
  echo ""
  printf "%-50s | %-10s | %-10s\n" "πŸ“‚ Jenis File" "Aksi" "Status"
  printf '%.0s-' {1..50}; echo " | ---------- | ----------"
} > "$LOGFILE"

# Fungsi untuk menambahkan baris ke tabel
add_row() {
  printf "%-50s | %-10s | %-10s\n" "$1" "$2" "$3" >> "$LOGFILE"
}

# Truncate file log utama
LOG_FILES=(
  /var/log/auth.log
  /var/log/kern.log
  /var/log/syslog
  /var/log/lfd.log
  /var/log/msmtp.log
  /var/log/custom-ssh-block.log
  /var/log/dpkg.log
  /var/log/bootstrap.log
  /var/log/apport.log
  /var/log/cloud-init.log
  /var/log/cloud-init-output.log
  /var/log/alternatives.log
  /var/log/ubuntu-advantage-apt-hook.log
  /var/log/rclone-gdrive.log
)

for FILE in "${LOG_FILES[@]}"; do
  if : > "$FILE" 2>/dev/null; then
    add_row "$FILE" "Truncate" "βœ… Success"
  else
    add_row "$FILE" "Truncate" "❌ Gagal"
  fi
done

# Truncate login history
for FILE in /var/log/btmp /var/log/wtmp /var/log/lastlog; do
  if : > "$FILE" 2>/dev/null; then
    add_row "$FILE" "Truncate" "βœ… Success"
  else
    add_row "$FILE" "Truncate" "❌ Gagal"
  fi
done

# Hapus rotated logs (*.1, *.gz)
ROTATED_LOGS=$(find /var/log -type f \( -name "*.1" -o -name "*.gz" \))
if [ -n "$ROTATED_LOGS" ]; then
  while read -r FILE; do
    rm -f "$FILE" && add_row "$FILE" "Remove" "βœ… Deleted"
  done <<< "$ROTATED_LOGS"
else
  add_row "Rotated logs (*.1, *.gz)" "Remove" "ℹ️ Kosong"
fi

# Bersihkan systemd journal > 7 hari
JOURNAL_OUTPUT=$(journalctl --vacuum-time=7d 2>&1)
add_row "Systemd journal (>7 hari)" "Vacuum" "βœ… Done"

# Bersihkan log APT & unattended-upgrades
find /var/log/apt -type f -delete 2>/dev/null
find /var/log/unattended-upgrades -type f -delete 2>/dev/null
add_row "/var/log/apt & unattended-upgrades" "Clear" "βœ… Done"

# Tambahkan ringkasan dan waktu selesai
{
  echo ""
  echo "🧽 Ringkasan Journalctl:"
  echo "$JOURNAL_OUTPUT"
  echo ""
  echo "βœ… Pembersihan selesai pada $(date '+%a %b %d %r %Z %Y')"
} >> "$LOGFILE"

# Kirim email dengan subject dan header lengkap
if command -v msmtp >/dev/null 2>&1; then
  {
    echo "Subject: Monthly Log Cleanup Report - $(date +'%Y-%m-%d')"
    echo "From: Server Logs <emailkamu@gmail.com>"
    echo "To: $EMAIL"
    echo "Content-Type: text/plain; charset=UTF-8"
    echo ""
    cat "$LOGFILE"
  } | msmtp "$EMAIL"
  echo "πŸ“€ Laporan dikirim ke $EMAIL"
else
  echo "❌ msmtp tidak ditemukan. Email tidak dikirim."
fi

πŸ“¬ Notifikasi Email dengan msmtp

Installasi msmtp :

sudo apt update && sudo apt install msmtp msmtp-mta ca-certificates

Lalu buat file konfigurasi nano /etc/msmtprc seperti berikut:

defaults
auth           on
tls            on
tls_starttls   on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile        /var/log/msmtp.log

account        default
host           smtp.gmail.com
port           587
from           your-email@example.com
user           your-email@example.com
password       your-app-password

πŸ” Gunakan App Password jika pakai Gmail, bukan password utama!

Setelah menyimpan skrip, beri izin eksekusi:

sudo chmod +x /usr/local/bin/monthly-log-cleanup.sh

⏲️ Jadwalkan dengan Cron

Tambahkan ke crontab agar otomatis jalan tiap bulan:

sudo crontab -e

Lalu masukkan:

0 3 1 * * /usr/local/bin/monthly-log-cleanup.sh

Script akan berjalan tanggal 1 setiap bulan pukul 03:00 dini hari. πŸŒ™

πŸ›‘οΈ Tips Tambahan

  • Hindari hapus log aktif seperti journal, utmp secara paksa.
  • Gunakan logrotate jika ingin pengelolaan lanjutan.
  • Simpan backup log jika dibutuhkan untuk audit keamanan.

πŸ“Œ Kesimpulan

Dengan menerapkan pembersihan log otomatis setiap bulan, Anda akan:

  • Menghemat ruang disk πŸ’½
  • Menjaga sistem tetap ringan βš™οΈ
  • Mendapat laporan berkala ke email πŸ“§

Cara ini cocok untuk server pribadi, VPS, atau produksi kecil-menengah yang butuh efisiensi tanpa ribet. Yuk mulai jadwalkan sekarang, dan biarkan server Anda tetap sehat setiap bulan! πŸ§ΌπŸ’»

Share:
Tags: linuxlog

Post navigation

Prev
Next
2 Comments
  • Radit 6:33 am June 18, 2025 Reply

    Thankyou mas 😁

    • Masdika.BIZ.ID 6:35 am June 18, 2025 Reply

      Siap. Sama sama mas.

Write a comment Cancel Reply

Β© 2025 www.masdika.biz.id β€” Semua Hak Dilindungi