Masdika Loading..
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portfolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Dari Laptop Bekas Jadi Server Pribadi: Cara Membangun Home Server Murah Menggunakan ISP MyRepublic dengan Public IP
  • Pembuatan Subnet dan Alokasi IP Address pada Amazon Web Service VPC
  • Instalasi dan Konfigurasi AWS CLI pada EC2 (Lab Guide)
  • Membangun Arsitektur Web + Database Highly Available di AWS (RDS Multi-AZ)
  • Cara Reset Password OpenBSD di Proxmox via VNC

Recent Comments

  1. Alif on Jangan Gunakan latest Tag pada Docker Images! Ini Alasannya
  2. Sahrull on Panduan Lengkap Anti-DDoS: Installasi Iptables, Hardening, dan Cloudflare Proxy
  3. VSTRA on Cara Cerdas Menguasai Kubernetes (K8s): Panduan Lengkap Orkestrasi Kontainer untuk Developer Modern
  4. Rikiy on Cara Mudah Deploy Website Node.js Menggunakan Docker
  5. Masdika.BIZ.ID on Disaster Recovery Cluster (DRC) WordPress dengan MariaDB Galera dan Load Balancer Caddy

Categories

  • Tutorial

Masdika.ID

  • About
  • Terms & Conditions
  • Privacy Policy
BLOG POST

Panduan Membersihkan Log Linux Otomatis Setiap Bulan dengan Aman

June 17, 2025 Tutorial by Masdika.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
Related Posts
Cara Reset Password OpenBSD di Proxmox via VNC

Kalau kamu lupa password OpenBSD di VM Proxmox, kamu tidak perlu reinstall. Cukup masuk lewat VNC console dan reset dari…

Panduan Download ISO dan Aktivasi Red Hat No-Cost

Panduan ini menjelaskan cara mendapatkan Red Hat Enterprise Linux (RHEL) secara gratis (resmi) menggunakan Developer Subscription, mulai dari download ISO…

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.id β€” Semua hak cipta dilindungi