Author Topic: [TUT}Pengantar Singkat Rotasi Pada Linux  (Read 2567 times)

0 Members and 1 Guest are viewing this topic.

Offline Ashura

  • Baru Gabung
  • *
  • Posts: 23
    • View Profile
[TUT}Pengantar Singkat Rotasi Pada Linux
« on: Tuesday, 08 November 2011, 14:36:53 »
Sebagai tambahan pemahaman pada tutorial di grup FB http://www.facebook.com/groups/cos.indo/doc/228894153838169/

Merotasi File Log Pada Linux

Logs : Sebagian besar sistem operasi berbasis linux selalu menghasilkan banyak file log secara default, dimana file log tersebut menyimpan beberapa informasi mengenai jalannya sistem, baik itu informasi mengenai kegiatan normal, informasi debug, pesan keamanan otorisasi, pengingat email/web dll). Jika tidak ada kegiatan rotasi pada beberapa macam file log yang ada sehingga suatu  ketika file log menjadi besar dan semakin besar, memenuhi kapasitas ruang penyimpanan (sering terjadi pada server dengan trafik tinggi), yang akan menciptakan horor kesulitan dalam pencarian informasi yang kita butuhkan pada file log tersebut karena kompleksitasnya.
Suatu keberuntungan hal ini sudah bisa diatasi oleh kebanyakan sistem operasis berbasis linux sejak dulu karena para pengembang linux sudah memikirkannya jauh-jauh hari sebelum linux berkembang pesat seperti sekarang ini dan kita tidak perlu melakukan hal-hal khusus untuk menyetelnya, hal ini berfungsi di luar sepengetahuan kita, linux merotasinya secara otomatis tanpa kita sadari.

“Betapa bodoh orang-orang yang fanatik dan suka menjelek-jelekkan suatu sistem operasi tanpa tahu bagaimana suatu sistem bekerja. Alagkah indahnya jika kita tahu bagaimana suatu sistem itu bekerja.”

Dalam tutorial singkat ini  akan ditunjukkan bagaimana rotasi file log bekerja, berdasarkan syslog dan logrotate. Ada beberapa tujuan yang hendak dicapai , seperti menggunakan syslog-ng di dalam syslog sendiri yang akan dijelaskan kemudian.

Memahami sekaligus mengerti bagaimana melakukannya akan membantu kita dalam memahami ide tentang apa yang terjadi dan bagaimana file log dirotasikan, bagaimana rotasi dijalankan, dan berapa lama hal itu disimpan. Selain itu, dapat menunjukkan pada kita tempat dimana kita dapat merubah suatu keadaan sesuai keperluan kita  (jika rekan-rekan ingin menyimpan file log dalam waktu lama, atau jika rekan-rekan ingin merotasikannya dengan cara yang berbeda dari standarnya). Pada contoh di bawah ini akan ditujukkan pada sistem berbasis Debian, Ubuntu, namun jika rekan-rekan memakai sistem yang berbeda, mungkin ada sedikit perbedaan dalam penerapannya tetapi tidak drastis (seperti rekan-rekan harus menyetel perintah cron untuk menjalankan pada periode waktu yang berbeda, atau tetap mengunakan angka yang berbeda untuk penanda perubahan, dll)

Pada artikel ini pembahasan akan dibagi menjadi 2 pokok permasalahan bagaimana sistem rotasi log berjalan :
system log files    : kebanyakan sistem log dirotasikan oleh syslog sendiri tanpa campur tangan  logrotate. Kita dapat melihat suatu log file dan bagaimana dia dirotasikan.
application log files   : logrotate  merupakan pilihan secara default untuk merotasikan file log. Hal ini bisa didasarkan pada bermacam-macam variasi acuan yang ingin dibuat misal harian, mingguan, bulanan, berdasarkan pada besanya file log, berdasar pada sistem kompresi untuk penghematan ruang.dll

Rekan-rekan sudah capek membaca pengantar saya, tapi itu penting karena sebagai  Network administrator kita harus membuat jalan simpel dalam menyelesaikan kompleksitas jaringan. Sekedar pengingat jangan sering instal ulang server, aturlah partisi dengan sebaik-baiknya, budayakan logika jangan asal oprek dan copy paste seenaknya, sebenarnya keunggulan suatu sistem bukan berapa cepat ia dalam melayani request object semata, tetapi seberapa stabil ia dalam melayani ribuan atau bahkan jutaan request dalam satu detiknya. Itulah keunggulan server berbasis linux atau Unix Like. Melalui forum COSI marilah kita pelan-pelan menuju kearah situ. Mulai dengan hal yang kecil dulu.

Okey selesai dengan intermezzo lanjut.................!


Merotasi file log pada linux dengan “syslog”
Syslog merupakan aplikasi log bawaan yang terinstall di hampir semua distribusi linux. Ia juga dapat digantikan dengan syslog-ng untuk beberapa fungsi yang lebih baik. Sesuai dengan penjelasan pada awal bagian file log pada dasarnya diatur oleh syslog dan tidak dirotasikan oleh logrotate melainkan oleh syslog itu sendiri. Pada bagian selanjutnya akan dibahas file log yang ditangani oleh logrotate

File apa yang ditangani oleh sylog? kita dapat mencari tahu dengan mudah hanya dengan melihat konfigurasi file syslog pada (etc/syslog.conf) yang mendefinisikan tiap-tiap file log, dan juga beberapa informasi yang tersimpan pada tiap file yang berbeda. Mari kita lihat bagaimana file konfigurasi yang ada pada sistem debian (ada beberapa bagian yang dihapus untuk mempersingkat pada inti permasalahan)

#  /etc/syslog.conf     Configuration file for syslogd.
#
#                       For more information see syslog.conf(5)
#                       manpage.

auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          -/var/log/user.log
uucp.*                          /var/log/uucp.log
...
mail.info                       -/var/log/mail.info
mail.warn                       -/var/log/mail.warn
mail.err                        /var/log/mail.err
news.crit                       /var/log/news/news.crit
news.err                        /var/log/news/news.err
news.notice                     -/var/log/news/news.notice
*.=debug;
auth,authpriv.none;
news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;
auth,authpriv.none;
cron,daemon.none;
mail,news.none          -/var/log/messages


Secara normal, saya akan merubah konfigurasi ditas sesuai dengan kebutuhan saya, tetapi sekarang bukan menjadi persoalan, sesuai apa yang rekan-rekan lihat disana ada banyak ragam file log yang menyimpan informasi terperinci  sesuai dengan konfigurasi strekan-rekanr (authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, security, syslog, user, uucp and local0 through local7).

Bagaimana sejatinya file-file tersebut dirotasikan? Sesuai dengan penjelasan saya sebelumnya hal ini ditangani oleh syslog itu sendiri, dan itu hanya dilakukan dengan 2 script cron, harian dan mingguan

daily rotation: (ditangani oleh /etc/cron.daily/sysklogd)
  • Semua file yang ditandai dengan fasilitas *.* pada konfigurasi syslog akan dirotasikan harian. Alasannya file tersebut akan menyimpan semua informasi yang terkait dengan fasilitas penanda akan cepat menjadi besar.
  • Jika kita melihat kedalam pada daily syslog cron, kita akan dapat menemukan log yang memerlukan rotasi dengan cara eksekusi file syslogd-listfiles:
    /usr/sbin/syslogd-listfiles
    /var/log/syslog <- the result on my default system
  • rotasi secara terkini ditangani oleh program savelog dapat dilihat pada baris :
    savelog -g adm -m 640 -u root -c 7 $LOG >/dev/null
Jadi kita dapat melihat pada sistem debian yang akan menyimpan 7 berkas pada file log sebelumnya (7 hari). Jika kita hendak merubahnya , maka kita perlu mengganti parameter -c 7 sesuai dengan keperluan kita
Kapan rotasi akan dijalankan? Sejak dieksekusi melalui /etc/cron.daily/ yang didefinisikan secara umum oleh crontab

# /etc/crontab: system-wide crontab
 ...
 25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
 47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly


Jadi berdasarkan pada cron job, rotasi akan dijalankan tepat pada jam 6.25 AM

weekly rotation: (ditangani oleh /etc/cron.weekly/sysklogd)
  • Sebagian besar syslog yang menghasilkan file log (berbeda dengan yang memakai fasilitas penanda *.*) akan dirotasikan mingguan
  • Jika kita melihat ke dalam weekly syslog cron kita akan dapat melihatnya dan menemukan log mana yang dirotasikan berjalan :
    /usr/sbin/syslogd-listfiles --weekly
    /var/log/mail.warn
    /var/log/uucp.log
    /var/log/user.log
    /var/log/daemon.log
    /var/log/messages
    /var/log/debug
    /var/log/auth.log
    /var/log/mail.err
    /var/log/mail.log
    /var/log/kern.log
    /var/log/lpr.log
    /var/log/mail.info
  • Sesuai yang kita lihat semua log yang didefinisikan sebelumnya pada konfigurasi syslog akan muncul kecuali news. *, yang dapat dimasukkan dengan menambahkan syslogd-listfiles –news, jika diperlukan.
  • Rotasi juga sama ditangani oleh program savelog
    savelog -g adm -m 640 -u root -c 4 $LOG >/dev/null

Jadi secara umum, rotasi mingguan akan menyimpan 4 berkas  yang lama (tanpa menghitung log terkini), berkas akan mempunyai ekstensi *.0-*.3 (dengan baris pertma tanpa kompresi secara default). Jika kita ingin merubahnya, yang kita perlukan hanyalah memodifikasi parameter -c 4 sesuai dengan kebutuhan.
Seperti yang terlihat di atas pada sistem crontab , rotasi akan dilakukan tepat pada jam 6.47 AM tiap hari minggu (cronjob mingguan)

Sebagai contoh, file log yang telah dirotasikan akan memunculkan pesan  seperti terlihat di bawah ini:
/var/log/messages
/var/log/messages.0
/var/log/messages.1.gz
/var/log/messages.2.gz
/var/log/messages.3.gz


Catatan : Pada sistem berbasis RedHat versi-versi sebelumnya (RHEL,CentOS, Fedora, etc) fungsi-fungsi yang dijelaskan diatas tidak ada secara default. Ini menjelaskan sebagian kecil dasar dari rotasi system log  pada pembahasan selanjutnya kita akan melihat bagaimana applicaton log dirotasikan

Merotasi file log pada linux dengan “logrotate"
Logrotate merupakan aplikas bawaan yang digunakan untuk merotasi hampir semua file log yang tidak ditangani oleh syslog sendiri. Hal ini membolehkan otomatisasi rotasi, kompresi, removal, dan pengriman file logs. Tiap-tiap file log dapat ditangani secara harian, mingguan, bulanan atau ketika menjadi terlalu besar.
Secara normal logrotate  berjalan sebagai daily cron job, mari kita lihat pada script yang ada pada  /etc/cron.daily seperti dibawah ini
cat /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

log rotate dapat dilihat pada /etc/logrotate untuk konfigurasi langsung
cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    minsize 1M
    create 0664 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.


Jadi kita dapat melihat nya telah ditentukan secara default dengan beberapa parameter (weekly, rotate 4, create, compress) yang mencakup semua file dari /etc/logrotate.d/.  Selain itu juga menentukan rotasi pada beberapa file yang tidak ditangani oleh syslog, sepert wtmp. Sebagai contoh, jika kita ingin menyimpan  lebih dari satu bulan  pada log wtmp, maka kita akan merubah parameter rotate 1.

Di dalam /etc/logrotate.d/ banyak paket-paket yang terpasang dan mempunyai konfigurasi tersediri, yang dapat dipastikan log mereka dirotasikan secara teratur. Sejauh kita tidak merubahnya maka pekerjaan rotasi akan bejalan sendirinya. Tetapi jika suatu waktu kita merubahnya  untuk melakukan beberapa penyesuaian dan memastikan agar berjalan semestinya, marilah kita lihat contoh sebagai berikut

/var/log/squid/access.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok
}

/var/log/squid/cache.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok
}

/var/log/squid/store.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok

# This script asks squid to rotate its logs on its own.
# Restarting squid is a long process and it is not worth
# doing it just to rotate logs
/usr/sbin/squid -k rotate
endscript
}


Kita dapat melihat secara default ia akan merotasikan log squid yang berada di /var/log/squid/ dimana ekstensi file yang berekstensi log secara mingguan, dan menyimpan 5 berkas lama. Sekali rotasi selesai maka akan merestart ulang squid daemon. Kita dapat mengecek manual logrotate dengan perintah man logrotate pada console (kalo tetep engak bisa belajar CLI dulu ya )

Mungkin, saya akan merubah jam dimana cron harus berjalan dari siang menjadi malam atau sebaliknya . Adapun hal diatas hanya sebagai contoh segalanya terserah anda, jangan meniru sistem orang lain  buatlah sistem sesuai dengan ciri khas anda

Kadangkala saya melakukan testing dengan beberepa konfigurasi dengan menambahkan baris perintah pada menu CLI di console/terminal  logrotate -d “nama file”
hal ini biasanya menujukkan pada saya bagaiamana sesuatu berjalan, tanpa melakukan kegiatan  apapun, dan merupakan sesuatu yang amat sangat penting ketika melakukan testing pada sistem yang kompleks dimana kita tidak ingin bermain-main dengan file log untuk melihat konfigurasi kita berjalan sesuai keinginan atau tidak.
Dan juga logrotate -f “nama file” akan memaksa rotasi jika sesuatu yang normal tidak berjalan semestinya (logrotate biasanya akan mengasumsikan ia berjalan dan melakukan rotasi sekali setiap hari)

Secara umum saya tidak bertujuan untuk menjelaskan melalui artikel ini penjelasan mengenai parameter konfigurasi pada logrotate bagaimana bentuk konfigurasinya (silahkan bereksperimen sendiri), tetapi ingin menunjukkan secara logis tentang kegunaan dari syslog maupun logrotate

Kemudian bagi rekan-rekan yang ingin meakukannya silahkan bereksperimen dan pahamilah CLI, karena penguasaan CLI sangat mutlak diperlukan oleh seorang Network Adminstrator yang concern terhadap performa. Tutorial ini tidak ditujukan kepada network administrator pemula karena setiap sistem berbeda, do it for your own risk dan jangan termehek-mehek jika sistem anda crash.
Akhir kata jika kata yang kurang pas saya mohon maaf  semoga tutorial singkat ini bisa membantu rekan-rekan COSi sekalian

credit to: Tuhan YME, Google.com. Redhat, Debian,wikipedia.org, ducea.com, rekan-rekan COSI sekalian dll