Cara Baca System Log dengan Journalctl

 


Cara Baca dan Pahami System Log (Journalctl) untuk Troubleshooting


Hai, pernah nggak kamu mengalami situasi dimana service di server tiba-tiba berhenti tanpa pesan error yang jelas? Atau sistem tiba-tiba reboot sendiri dan kamu bingung apa penyebabnya? Atau mungkin ada aplikasi yang nggak mau jalan dan kamu sama sekali nggak dapat petunjuk kenapa?


Kalau iya, berarti kamu perlu berkenalan dengan detektif terbaik di dunia Linux: journalctl. Tool ini adalah pintu gerbang untuk memahami segala sesuatu yang terjadi di dalam sistem Linux modern. Bayangkan journalctl seperti black box recorder di pesawat - setiap kejadian, setiap error, setiap peringatan terekam dengan rapi dan menunggu untuk dianalisis.



Apa Itu Journalctl dan Systemd Journal?


Sebelum kita menyelam lebih dalam, mari pahami dulu konsep dasarnya. Di Linux modern, sebagian besar distribusi menggunakan systemd sebagai init system. Systemd ini bertanggung jawab untuk mengelola service, proses boot, dan... logging!


Systemd journal adalah sistem logging terpusat yang mencatat:


· Log dari semua systemd services

· Kernel messages

· Application logs

· System events

· Dan masih banyak lagi


Journalctl adalah tool command line untuk berinteraksi dengan systemd journal. Keunggulannya:


· Terpusat: Semua log dalam satu tempat

· Structured: Log disimpan dalam format structured (bisa filter berdasarkan field)

· Real-time: Bisa monitor log secara live

· Powerful query: Filtering dan pencarian yang sangat flexible


Memulai Perjalanan Membaca Log


Basic Commands yang Wajib Dikuasai


Melihat semua log (hati-hati, bisa overwhelming):


```bash

journalctl

```


Melihat log dari boot terakhir:


```bash

journalctl -b

```


Ini adalah perintah yang paling sering digunakan untuk troubleshooting masalah terkini.


Melihat log dari boot tertentu:


```bash

journalctl --list-boots  # Lihat daftar boot

journalctl -b -1         # Log dari boot sebelumnya

journalctl -b -2         # Dua boot sebelumnya

```


Follow log secara real-time (seperti tail -f):


```bash

journalctl -f

```


Sangat useful untuk monitoring saat melakukan perubahan atau debugging service.


Filter Berdasarkan Waktu


Log hari ini:


```bash

journalctl --since today

```


Log dari jam tertentu:


```bash

journalctl --since "2024-01-15 14:30:00"

journalctl --since "1 hour ago"

journalctl --since "yesterday" --until "today"

```


Log periode tertentu:


```bash

journalctl --since "2024-01-01" --until "2024-01-15"

```


Filter Berdasarkan Service atau Unit


Log dari service tertentu:


```bash

journalctl -u nginx.service

journalctl -u ssh.service

journalctl -u apache2.service

```


Log dari multiple services:


```bash

journalctl -u nginx.service -u mysql.service

```


Monitor service tertentu secara real-time:


```bash

journalctl -u webapp.service -f

```


Filter Berdasarkan Priority/Level


Hanya error messages:


```bash

journalctl -p err

```


Level-level yang tersedia:


· emerg (0) - Emergency messages

· alert (1) - Alerts

· crit (2) - Critical conditions

· err (3) - Errors

· warning (4) - Warnings

· notice (5) - Notices

· info (6) - Informational messages

· debug (7) - Debug messages


Contoh kombinasi:


```bash

journalctl -p warning..emerg    # Warning sampai emergency

journalctl -p err -u ssh.service  # Error dari SSH service

```


Format Output yang Lebih Mudah Dibaca


Output verbose (menampilkan semua field):


```bash

journalctl -o verbose

```


Ini sangat useful untuk melihat structured data lengkap.


Output JSON (untuk parsing):


```bash

journalctl -o json

journalctl -o json-pretty

```


Output dengan specific fields:


```bash

journalctl -o short          # Default format

journalctl -o short-iso      # Dengan timestamp ISO

journalctl -o short-precise  # Timestamp dengan precision tinggi

journalctl -o cat            # Hanya pesan tanpa metadata

```


Teknik Pencarian dan Filtering Lanjutan


Mencari berdasarkan kata kunci:


```bash

journalctl -t kernel          # Hanya messages dari kernel

journalctl SYSLOG_IDENTIFIER=sshd  # Filter berdasarkan identifier

```


Mencari text tertentu:


```bash

journalctl -g "error"         # Grep untuk kata "error"

journalctl -g "failed" --case-sensitive  # Case sensitive search

```


Filter berdasarkan user ID:


```bash

journalctl _UID=1000

```


Filter berdasarkan executable:


```bash

journalctl /usr/sbin/sshd

```


Workflow Troubleshooting yang Efektif


Scenario 1: Service Tidak Bisa Start


```bash

# 1. Cek log service tertentu

journalctl -u failing-service.service --no-pager


# 2. Lihat log dari boot terakhir untuk service tersebut

journalctl -u failing-service.service -b


# 3. Jika tidak jelas, lihat semua error di sistem

journalctl -p err -b


# 4. Follow log real-time saat restart service

journalctl -u failing-service.service -f &

sudo systemctl restart failing-service.service

```


Scenario 2: Sistem Crash atau Reboot Tidak Terduga


```bash

# 1. Lihat apa yang terjadi sebelum crash

journalctl -b -1 | tail -50


# 2. Cek kernel messages dari boot sebelumnya

journalctl -b -1 -k


# 3. Cek critical dan emergency messages

journalctl -b -1 -p crit..emerg


# 4. Lihat systemd messages terkait shutdown

journalctl -b -1 -t systemd

```


Scenario 3: Performance Issues


```bash

# 1. Cek warning dan error terkini

journalctl -p warning..err --since "1 hour ago"


# 2. Lihat resource-related messages

journalctl -g "memory\|cpu\|disk" --since "today"


# 3. Monitor system messages real-time

journalctl -f -p warning..err

```


Scenario 4: Security Investigation


```bash

# 1. Cek authentication logs

journalctl -t sshd -g "failed\|authentication"


# 2. Lihat sudo activities

journalctl -t sudo


# 3. Cek user login sessions

journalctl -t systemd-logind


# 4. Monitor security events real-time

journalctl -f -p alert..emerg

```


Teknik Analisis Log yang Lebih Mendalam


Melihat disk usage journal:


```bash

journalctl --disk-usage

```


Membersihkan log lama:


```bash

journalctl --vacuum-time=30d  # Hapus log lebih lama dari 30 hari

journalctl --vacuum-size=1G   # Pertahankan hanya 1GB log

```


Export log untuk analisis offline:


```bash

journalctl --since "2024-01-01" > system_logs_january.txt

```


Membuat custom query dengan multiple filters:


```bash

journalctl -u nginx _PID=1234 SYSLOG_IDENTIFIER=nginx-error

```


Integrasi dengan Tools Lain


Menggunakan jq untuk parsing JSON output:


```bash

journalctl -o json | jq '. | select(.PRIORITY >= 3)'

```


Menggunakan grep untuk pattern matching:


```bash

journalctl --since "1 hour ago" | grep -i "error\|failed\|critical"

```


Membuat custom report:


```bash

#!/bin/bash

# log-report.sh


echo "=== SYSTEM LOG REPORT ==="

echo "Generated: $(date)"

echo


echo "--- Critical Errors (Last 24h) ---"

journalctl -p crit --since "24 hours ago" --no-pager


echo

echo "--- Failed Services (Last Boot) ---"

journalctl -b -p err -u service --no-pager | head -20


echo

echo "--- Authentication Failures ---"

journalctl -g "failed\|authentication" --since "today" --no-pager

```


Best Practices untuk Log Management


1. Konfigurasi Persistent Storage

Pastikan journal disimpan secara persistent:


```bash

sudo mkdir -p /var/log/journal

sudo systemctl restart systemd-journald

```


2. Rotasi dan Retention Policy


```bash

# Edit konfigurasi journal

sudo nano /etc/systemd/journald.conf


# Contoh setting:

# SystemMaxUse=1G

# SystemMaxFileSize=100M

# MaxRetentionSec=1month

```


3. Regular Monitoring

Buat script untuk regular log checking:


```bash

#!/bin/bash

# daily-log-check.sh


CRITICAL_COUNT=$(journalctl -p crit --since "24 hours ago" --no-pager | wc -l)

if [ $CRITICAL_COUNT -gt 0 ]; then

    echo "CRITICAL: $CRITICAL_COUNT critical errors found" | mail -s "Log Alert" admin@company.com

fi

```


4. Documentation dan Analysis

Dokumentasikan common error patterns dan solusinya.


Troubleshooting Common Journalctl Issues


"No journal files were found"


```bash

sudo systemctl start systemd-journald

sudo journalctl --setup-keys

```


Journal size terlalu besar


```bash

journalctl --vacuum-size=500M

```


Tidak bisa baca log lama


```bash

# Pastikan storage persistent

sudo journalctl --flush

```


Permission denied


```bash

# Tambah user ke group systemd-journal

sudo usermod -aG systemd-journal $USER

```


Kesimpulan


Menguasai journalctl adalah seperti memiliki kemampuan membaca pikiran sistem. Dengan tool ini, kamu bisa:


· Melacak root cause system issues dengan tepat

· Monitor health sistem secara real-time

· Investigate security incidents dengan evidence yang solid

· Optimalkan performance berdasarkan data aktual


Yang perlu diingat: start dengan perintah dasar dulu, lalu secara bertahap eksplorasi filtering yang lebih advanced. Practice membuat kamu semakin peka dalam membaca pattern dan anomaly dalam log.


Coba mulai dengan perintah: journalctl -b -p err untuk melihat error dari boot terakhir. Dari situ, kamu akan belajar membaca cerita dibalik deretan text yang awalnya terlihat complicated. Semakin sering practice, semakin mahir kamu menjadi detective sistem!


Cara Baca System Log dengan Journalctl Cara Baca System Log dengan Journalctl Reviewed by Sabila on 19.41 Rating: 5

Tidak ada komentar: