perpustakaan.uns.ac.id
digilib.uns.ac.id
BAB IV IMPLEMENTASI DAN ANALISA HASIL Sesuai perencanaan yang ada pada pembuatan network monitoring server maka dilakukan beberapa implementasi dan analisa hasil untuk mengecek fungsi masing - masing aplikasi yaitu sebagai berikut : 4.1
TOPOLOGI JARINGAN Berikut adalah topologi network monitoring server yang akan dibangun :
Gambar 4.1
Topologi jaringan
Pada gambar 4.1 terlihat network monitoring server terletak pada dua jaringan, yaitu jaringan private dengan ip address 10.10.0.40/24 dan jaringan public dengan ip address 203.6.148.199/24. Jaringan private dipergunakan untuk memonitoring perangkat yang ada pada distribusi fakultas dan jaringan public untuk memonitoring server yang ada pada rack server. Diperlukan juga pengecekan ke gateway internasional dan domestik pada router gateway.
commit to user 22
perpustakaan.uns.ac.id
digilib.uns.ac.id
23
4.2
INSTALASI SERVER Dalam sub bab ini dijelaskan penulis dalam pembuatan network monitoring server menggunakan sistem operasi dan bagian program aplikasi. Sekaligus pembahasan pada setiap konfigurasi untuk memahami fungsi aplikasi tersebut.
4.2.1 Persiapan Instalasi FreeBSD 10.0-RELEASE Sistem operasi FreeBSD 10.0 dapat diperoleh dengan didownload secara gratis
pada
website
resmi
http://ftp.freebsd.org/pub/FreeBSD/releases/ISO-
IMAGES/10.0/FreeBSD-10.0-RELEASE-i386-dvd1.iso 4.2.2 Instalasi FreeBSD 10.0-RELEASE Proses instalasi FreeBSD 10.0 dilakukan sama seperti sistem operasi lain Linux dan Windows, langkah pertama dimulai dengan proses booting dari compact disk/flashdisk. Tampilan awal booting seperti pada gambar 4.2
Gambar 4.2
Booting instalasi FreeBSD10.0
Proses instalasi tidak menggunakan mode GUI (Graphic User Interface) namun instalasi digunakan mode text dikarenakan prosesnya yang lebih cepat dan mudah. Instalasi dimulai ketika muncul bootloader seperti pada gambar 4.2, kemudian dilanjutkan menekan tombol Enter, maka muncul pilihan Install seperti pada gambar 4.3
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
24
Gambar 4.3
Menu instalasi FreeBSD 10.0
Pilih Install dipergunakan ketika sistem ingin dipasang sistem operasi FreeBSD. Pilih Shell dipergunakan apabila ingin repair/perbaiki sistem operasi dan pilih Live CD digunakan bila ingin mencoba sistem operasi tanpa melakukan instalasi pada hardisk. 4.3
KONFIGURASI NETWORK Konfigurasi network interface dilakukan pada sistem operasi FreeBSD10.0 yang telah akfif dan difungsikan sebagai koneksi jaringan internet. Letak konfigurasi network pada file /etc/rc.conf. Untuk membuka file yang ada dipergunakan editor vi seperti pada gambar 4.4
Gambar 4.4
Konfigurasi network
Perlu dua jenis ip address yaitu ip public untuk memonitoring jaringan server public dan ip private yang dipergunakan untuk memonitoring jaringan private. Apabila hanya dilakukan konfigurasi network ip public maka network dengan jaringan private tidak bisa dimonitoring, begitu sebaliknya apabila hanya jaringan private maka ip private tersebut tidak bisa diakses dari jaringan public.
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
25
Default_gateway dipergunakan untuk membuat routing ke dalam jaringan network monitoring server. Default gateway juga dipergunakan sebagai konverter agar dua arsitektur komputer dapat berkomunikasi.
Gambar 4.5
Penambahan routing default gateway
Pengetesan routing dilakukan dengan ping ke default gateway yaitu ip address 203.6.148.1
Gambar 4.6
Pengetesan ping ke default gateway
DNS (Domain Name Service) difungsikan agar komputer bisa mengakses domain tidak hanya ip address. Fungsi DNS adalah mengkoneksikan komputer dengan komputer lain menggunakan hostname (Diding, 2003). File konfigurasi DNS terletak pada /etc/resolv.conf
Gambar 4.7
Pendefinisian DNS
Dilakukan ping dari server ke alamat ping ke www.google.com. Apabila DNS telah diatur muncul tampilan seperti gambar 4.8
Gambar 4.8
Pengetesan ping ke domain www.google.com
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
26
4.4
KONFIGURASI WEB SERVER Konfigurasi web server dibutuhkan beberapa aplikasi yang harus diinstall terlebih dahulu yaitu apache24, php, dan mysql. Langkah konfigurasinya yaitu sebagai berikut :
4.4.1 Konfigurasi Apache24 Konfigurasi apache24 dilakukan apabila server telah terhubung ke internet. Network monitoring server yang menggunakan nagios core mempunyai fitur web interface oleh karena itu dibutuhkan web server agar bisa diakses lewat web browser. Konfigurasi dimulai dengan menambahkan hostname ke file /etc/hosts. Hostname dikonfigurasi untuk membuat network monitoring server bisa dikenali oleh ip address di jaringan.
Gambar 4.9
Pengeditan pada file /etc/hosts
Berikan tanda (#) pada baris 127.0.0.1 localhost localhost.my.domain dan tambahkan dengan 203.6.148.199 nagios localhost.my.domain seperti pada gambar 4.10
Gambar 4.10
Pendefinisian konfigurasi hostname
Definisikan hostname di bagian ServerName pada file httpd.conf. File httpd.conf berada pada /usr/local/etc/apache24/httpd.conf. Berikan nama localhost pada ServerName agar ip address dapat dikenali seperti pada gambar 4.11
Gambar 4.11
Pengeditan file httpd.conf
Apache24 perlu diseting berjalan otomatis ketika booting komputer sehingga pengguna server tidak selalu manual menjalankan service. Sisipkan script
ke file /etc/rc.conf seperti pada gambar 4.12
Gambar 4.12
Penyisipan apache ke konfigurasi rc.conf
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
27
Hasil pada file /etc/rc.conf apabila telah ditambahkan script untuk menjalankan apache24 otomatis.
Gambar 4.13 Jalankan
service
apache24
Penampilan file /etc/rc.conf yang
telah
dikonfigurasi
hostname,
servername, dan berjalan otomatis pada file rc.conf
Gambar 4.14
Proses menjalankan service apache
4.4.2 Konfigurasi PHP (Hypertext preprocessor) PHP(Hypertext Preprocessor) digunakan untuk interpreter bahasa pemrograman web di dalam network monitoring server, agar bisa dipanggil web browser berupa kode html(hyper text markup language). Nagios core menggunakan pemrograman php untuk menyimpan halaman yang dipergunakan sebagai web interface. Konfigurasi dimulai dengan copy file php.ini-development yang ada pada directory /usr/local/etc/ menjadi php.ini. File php.ini adalah file yang menyimpan semua pengaturan program php.
Gambar 4.15
Proses copy file php.ini
Ubah permission file menjadi 755 pada file php.ini supaya pengguna dapat write seperti pada gambar 4.16
Gambar 4.16
Pengubahan permission file php.ini
Ganti timezone pada file php.ini untuk menyamakan tanggal php dengan lokasi Indonesia seperti pada gambar 4.17
Gambar 4.17
Pendefinisian timezone
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
28
Perlu penambahan script pada file /usr/local/etc/apache24/httpd.conf agar Apache dapat membaca interpreter php. Gunakan editor vi untuk menyisipkan kode seperti pada gambar 4.18
Gambar 4.18
Penyisipan kode php di apache
Membuat file test.php kemudian simpan pada directory apache pada folder data untuk mengetes jalannya script php di Apache.
Gambar 4.19
Pengetesan php pada apache
Restart service apache24 dilakukan untuk mengecek konfigurasi yang telah dilakukan. Pengecekan apakah script php telah berjalan, dilakukan dengan membuka browser kemudian ketikan http://ipaddress/test.php
Gambar 4.20
Penampilan test.php
4.4.3 Konfigurasi MySQL Konfigurasi mysql database dipergunakan untuk menyimpan file config dan log dari network monitoring server. Langkah konfigurasi dimulai dengan menambahkan script pada file /etc/rc.conf seperti pada gambar 4.21
Gambar 4.21
Penambahan script pada file /etc/rc.conf
Jalankan service mysql server dengan mengetikan perintah pada command line seperti pada gambar 4.22
Gambar 4.22
Proses menjalankan service mysql
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
29
Pengubahan password mysql server dilakukan guna mengantisipasi database dirusak oleh user lain seperti pada gambar 4.23
Gambar 4.23 4.5
Pengubahan password mysql server
IMPLEMENTASI NETWORK MONITORING SERVER Pembuatan network monitoring server dibutuhkan aplikasi nagios core. Nagios plugin diperlukan sebagai plugin nagios core yang akan selalu mengecek service tiap host yang dimonitoring. Apache membaca web interface dari network monitoring server berupa web interface dari nagios core. Module gd_library dipergunakan sebagai pembacaan images. Module mod_cgi apache juga ditambahkan untuk pembacaan file image berekstensi .cgi dari web interface nagios. Apabila semua program sudah terinstall nagios core belum bisa berjalan karena ada beberapa aplikasi yang harus dikonfigurasi. Hal yang dilakukan untuk menjalankan nagios core yaitu:
4.5.1 Enable nagios di rc.conf Proses nagios core dibuat autostart dengan tujuan network monitoring server saat booting tidak perlu menjalankan service nagios core secara manual. Pembuatan proses autostart dengan menyisipkan kode
ke
file /etc/rc.conf seperti gambar 4.24
Gambar 4.24
Penyisipan nagios_enable pada file /etc/rc.conf
4.5.2 Copy sample konfigurasi nagios core Instalasi nagios core sudah disertakan contoh file konfigurasi. Diperlukan proses copy atau move dari contoh file ke file berekstensi .cfg. File konfigurasi berada pada directory /usr/local/etc/nagios. Dan contoh host/service terdapat pada directory
/usr/local/etc/nagios/objects/.
User
harus
pindah
directory
ke
/usr/local/etc/nagios/ dengan perintah cd kemudian copy file contoh nagios dengan perintah mv.
Gambar 4.25
Pemindahan file sample-config
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
30
Proses copy file host dan service juga dilakukan untuk konfigurasi nagios core. File host dan service terdapat di directory /usr/local/etc/nagios/objects kemudian ganti dengan perintah mv copy file sample seperti gambar 4.26
Gambar 4.26 Perintah nagios
Pemindahan file host dan service
v /usr/local/etc/nagios/nagios.cfg dilakukan sebagai
proses pengecekan konfigurasi nagios core. Pastikan semua konfigurasi dari config, host, dan service telah benar.
Gambar 4.27
Pengecekan konfigurasi nagios core
Jika outputnya seperti gambar 4.28 maka file konfigurasi dari nagios core telah berhasil.
Gambar 4.28
Output pengecekan file konfigurasi
4.5.3 Password web interface nagios core Konfigurasi selanjutnya dilakukan penambahan password ke dalam konfigurasi nagios core. Tujuannya adalah web interface nagios hanya dibatasi oleh seorang administrator yang dapat mengakses. Langkahnya terdapat pada gambar 4.29
Gambar 4.29
Penambahan password pada web interface
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
31
4.5.4 Pembuatan virtual host Apache harus ditambahkan virtual host untuk letak halaman web interface nagios core. Module mod_cgi harus diaktifkan agar Apache dapat mengakses file cgi.
Tambahkan
script
berikut
pada
bagian
paling
akhir
file
/usr/local/etc/apache24/httpd.conf seperti gambar 4.30
Gambar 4.30
Penambahan virtual host
Kemudian aktifkan module mod_cgi apache dengan hapus tanda [ # ] seperti gambar 4.31 serta ubah akses Apache dengan ditambah script Options +ExecCGI dan uncomment AddHandler cgi-script .cgi seperti pada gambar 4.32
Gambar 4.31
Gambar 4.32
Pengaktifan module mod_cgi
Penambahan konfigurasi script cgi
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
32
Proses restart program apache dan nagios core diperlukan untuk mengecek konfigurasi program seperti pada gambar 4.33
Gambar 4.33
Pengecekan konfigurasi apache dan nagios core
Akses web interface nagios cek dengan menggunakan web browser dengan url http://ipaddress/nagios
Gambar 4.34
Pengaksesan nagios core lewat web interface
Perlu pengisian username dan password untuk masuk kedalam sistem yang telah didefinisikan sebelumnya pada file konfigurasi. Klik Log In untuk masuk kedalam sistem network monitoring server dengan aplikasi nagios core. Jika berhasil maka muncul halaman utama nagios core via web interface seperti pada gambar 4.35
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
33
Gambar 4.35
Penampilan halaman utama nagios core
4.5.5 Menambah host dan service Pada konfigurasi default, nagios hanya memonitor sebuah host yaitu localhost. Tentunya server monitoring akan memantau host lainya. Untuk memonitor host lain maka diperlukan pendefinisian file konfigurasi tiap masing masing host. Langkah konfigurasi yang dilakukan sebagai berikut : 1) Penyalinan file konfigurasi untuk memonitoring host localhost ke dalam file konfigurasi serverA.cfg
Gambar 4.36
Penyalinan file localhost
2) Pengeditan dilakukan dan sesuaikan konfigurasi yang diinginkan untuk server. ServerA mempunyai ip address 203.6.148.115 tertera pada gambar 4.37. Service yang akan diaktifkan adalah ping, http, dan ssh.
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
34
Gambar 4.37
Pendefinisian host dan service pada serverA.cfg
3) Untuk memasukan ServerA ke group freebsd-servers diperlukan pengeditan bagian definisi hostgroup yang ada pada file localhost.cfg. Proses penambahan ServerA pada gambar 4.38
Gambar 4.38
Pendefinisian hostgroup untuk host
4) Pada bagian file /usr/local/etc/nagios/nagios.cfg perlu ada pengeditan untuk menambahkan
entri
konfigurasi
host
ServerA
dibawah
baris
cfg_file=/usr/local/etc/nagios/objects/localhost.cfg. Tampilanya ada pada gambar 4.39
Gambar 4.39
Pendefinisian file serverA.cfg di nagios.cfg
5) Pengecekan konfigurasi yang telah dipasang dilakukan agar valid atau tidak. Gambar 4.40 menunjukan proses verifikasi konfigurasi.
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
35
Gambar 4.40
Pengecekan konfigurasi nagios.cfg
6) Pembacaan konfigurasi nagios core yang baru dilakukan perlu proses restart service. Tampilannya terdapat pada gambar 4.41
Gambar 4.41
Pembacaan file konfigurasi
7) Dilihat melalui web browser pada menu host dan service maka akan tampak seperti gambar 4.42 dan gambar 4.43
Gambar 4.42
Gambar 4.43
Penampilan host
Penampilan service
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
36
Tabel 4.1 menampilkan pilihan pendefinisian host pada network monitoring server. Tabel 4.2 merupakan pilihan pendefinisian service pada network monitoring server. Tabel 4.1
Pendeskripsian host
Pilihan
Deskripsi
host_name
nama host
alias
deskripsi host
address
ip address atau nama domain parent
parents hostgroups
host,
biasanya
dipergunakan
untuk
menghubungkan antar host (switch, router) kumpulan dari beberapa host yang dikelompokan kata yang mendefinisikan command yang mengecek
check_command
kondisi host. nilai kembalian berupa ok yang merupakan status host up
check_interval retry_interval
mendefinisikan berapa menit host dicek mendefinisikan
berapa
menit
menunggu
untuk
mengecek kembali mendefinisikan berapa lama waktu memberikan
max_check_attempts
laporan host down sebelum diidentifikasi down oleh nagios jangka
check_period
waktu
yang
dipergunakan
host
untuk
menentukan waktu berapa kali tes untuk melihat host up
contacts
daftar kontak yang mendefinisikan penerima notifikasi
contact_groups
kelompok dari kontak
first_notification_delay
notification_period notification_options
mendefinisikan berapa menit menunggu sebelum host notification pertama dikirimkan mendefinisikan
periode
waktu
pengiriman
dikirimkan mendefinisikan type notification yang dikirimkan
commit to user
akan
perpustakaan.uns.ac.id
digilib.uns.ac.id
37
Tabel 4.2
Pendeskripsian service
Pilihan host_name hostgroup_name
Deskripsi mendeskripsikan host yang akan dicek servicenya mendeskripsikan
hostgroup
yang
akan
dicek
servicenya
service_description
sebagai identifikasi nama service
servicegroups
service yang dikelompokan kata yang mendefinisikan command yang mengecek
check_command
kondisi service. nilai kembalian berupa ok yang merupakan status service up
check_interval retry_interval
mendefinisikan berapa menit service dicek mendefinisikan
berapa
menit
menunggu
untuk
mengecek kembali mendefinisikan berapa lama waktu memberikan
max_check_attempts
laporan service down sebelum diidentifikasi down oleh nagios jangka waktu yang dipergunakan untuk menentukan
check_period
waktu berapa kali test untuk melihat service up
contacts
daftar kontak yang mendefinisikan penerima notifikasi
contact_groups
kelompok dari kontak
first_notification_
mendefinisikan berapa menit menunggu sebelum
delay
service notification pertama dikirimkan
notification_interval
mendefinisikan waktu selanjutnya service notification dikirim
notification_period
mendefinisikan
periode
waktu
pengiriman
akan
dikirimkan notification_options
mendefinisikan type notification yang dikirimkan
4.5.1 Konfigurasi contact nagios core Contact dipergunakan nagios core sebagai tujuan ketika ada pesan notifikasi baik berupa email atau sms dalam network monitoring server. Contact
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
38
mendefinisikan
daftar
administrator.
File
contact.cfg
terdapat
pada
/usr/local/etc/nagios/objects/ contact.cfg.
Gambar 4.44
Pendefinisian contact
Tabel 4.3 merupakan pilihan pendefinisian contact pada network monitoring server. Tabel 4.3
Pendeskripsian contact
Pilihan
Deskripsi
contact_name
nama kontak
alias
deskripsi nama kontak
contactgroups
mendefinisikan kelompok kontak
host_notifications_enabled
orang yang bisa menerima host notification
host_notification_period
mendefinisikan periode waktu yang menentukan berapa lama penerimaan host notification
host_notification_commands
command yang dipergunakan mendefinisikan pengiriman host notification
host_notification_options
pilihan pengiriman host notification
service_notifications_enabled
mendefinisikan orang
yang
berkepentingan
menerima service notification service_notification_period
mendefinisikan periode waktu yang menentukan berapa lama penerimaan service notification
service_notification_commands command yang dipergunakan mendefinisikan pengiriman service notification service_notification_options
pilihan pengiriman service notification
email
kontak email address
pager
kontak pager number
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
39
4.5.2 Command di nagios core Command nagios core dipergunakan untuk memproses perintah dari aplikasi eksternal (termasuk CGI) dan mengubah berbagai fungsi pemantauan berdasarkan perintah yang diterima. Command dapat mengirimkan perintah dengan mengeksekusi command line, yang secara periodik diproses oleh nagios core. File command.cfg terdapat di /usr/local/etc/nagios/objects/. Gambar 4.45 menunjukan contoh dari perintah command
Gambar 4.45
Pendefinisian command
Tabel 4.4 merupakan pilihan pendefinisian command pada network monitoring server. Tabel 4.4
Pendeskripsian command
Pilihan
4.6
Deskripsi
command_name
mendeskripsikan nama command
command_line
perintah yang dijalankan lewat command line
ANALISA NETWORK MONITORING SERVER Aplikasi yang berperan dalam network monitoring server yaitu web server dan nagios core. Nagios core berfungsi untuk mengecek host dan service yang dimonitoring, kemudian web server menampilkan hasil dari pengecekan yang dilakukan oleh nagios core. Beberapa file konfigurasi yang berperan dalam pengecekan oleh nagios core pada network monitoring server yaitu : 1) nagios.cfg File nagios.cfg adalah file yang pertama kali dibaca oleh service nagios core. File konfigurasi yang dibuat harus didefinisikan kedalam file nagios.cfg. Pendefinisian konfigurasi diterjemahkan oleh file resource.cfg
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
40
2) resource.cfg Administrator mendefinisikan variabel atau macro pada file resource.cfg. Letak pendefinisian file konfigurasi host dan service, password web interface disimpan dalam resource.cfg 3) cgi.cfg Service web interface pada aplikasi nagios core mengacu pada konfigurasi cgi.cfg. File cgi.cfg menguraikan konfigurasi data dari hasil pengecekan kedalam tampilan web interface. Tampilan web interface nagios core hanya bisa diakses oleh user yang telah didefinisikan pada file htpasswd.users 4) httpd.conf Web interface nagios core ditampilkan ketika dideskripsikan pada file httpd.conf berupa vhost untuk membuat multiple host. Sisi keamanan user yang mengakses web interface nagios core didefinisikan pada file .htaccess. 5) .htaccess Pendefinisian user yang bisa mengakses dan tidak didefinisikan pada file .htaccess. File ini mengubah akses yang ada pada user untuk tidak mengakses file seperti html, cgi dan php. 6) htpasswd.users User dan password yang bisa mengakses web interface nagios core disimpan pada file htpasswd.users Pembuatan network monitoring server menggunakan aplikasi nagios core ditampilkan pada gambar 4.46.
Gambar 4.46
Pendefinisian hubungan konfigurasi aplikasi
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
41
Skema hubungan antara file konfigurasi pada nagios core ditampilkan seperti pada gambar 4.47
Gambar 4.47
Penampilan hubungan file konfigurasi nagios
Beberapa keterkaitan
antara
file konfigurasi nagios
core
ketika
dipergunakan sebagai aplikasi network monitoring server yaitu sebagai berikut : 1) hosts.cfg Server maupun device yang dimonitoring didefinisikan dalam file host.cfg. File host.cfg menjadi komponen yang berjalan bersama service.cfg. Ketika mendefinisikan host, maka host tersebut juga harus didefisikan service yang akan dimonitoring. 2) services.cfg File
service.cfg
dipergunakan
untuk
mendefiniskan
service
yang
dipergunakan oleh host. Tanpa adanya service yang dicek maka host tidak sepenuhnya dimonitoring. 3) dependencies.cfg Host dan service ada kalanya failed ketika proses pembuatan konfigurasi. Pendefinisian host dan service dibuat bersifat object oriented dari host parent kemudian mempunyai child. Ketika parent dari host atau service failed otomatis file yang menggunakan parent juga akan failed.
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
42
4) checkcommands.cfg Pendefinisian perintah pengecekan host dan service disimpan dalam file checkcommand.cfg. File checkcommand.cfg berisikan command line untuk mengeksekusi perintah monitoring. 5) escalations.cfg Ketika proses pembuatan file konfigurasi failed maka secara otomatis service akan diabaikan dan dilanjutkan ke proses selanjutnya yaitu eksekusi monitoring host tanpa ada service yang dimonitoring 6) misccommands.cfg Pemberitahuan user tentang file yang failed diatur dan dikonfigurasi oleh file misccommands.cfg 7) timeperiods.cfg Proses
pengiriman
notifikasi
proses
monitoring
diatur
dalam
file
timeperiods.cfg yang mengambil data user pada file contact.cfg 8) contact.cfg File contact mendefinisikan orang atau admin yang bisa dihubungi untuk memperbaiki kesalahan host dan service 9) contactgroup.cfg Definisi dari contact dapat dibuat sebuah kelompok untuk menjalankan fungsi redudancy 10) hostgroup.cfg Definisi dari host dapat dibuat sebuah kelompok untuk menjalankan fungsi redundancy seperti contactgroup.cfg Pada perancangan network monitoring server dilakukan analisa hasil dari topologi sesuai dengan tahapan proses kerjanya. Dalam proses pengecekan dengan aplikasi nagios core dibutuhkan nagios plugin. Nagios plugin mempunyai beberapa program yang dieksekusi oleh command nagios core untuk pengecekan seperti check_http dan check_ssh. Pengecekan router dan switch menggunakan snmp dan kemudian diproses oleh mrtg. Skema dari network monitoring server pada pengecekan router, switch dan server ditampilkan seperti gambar 4.48
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
43
Gambar 4.48
Penampilan proses pengecekan host router dan server
Pada gambar 4.48 ditampilkan ada 4 proses pengecekan yang dilakukan oleh network monitoring server yaitu : 1) check_http Pengecekan untuk service http server dilakukan menggunakan plugin nagios core yang tersedia pada directory /usr/local/libexec/nagios. Plugin check_http memulai request kepada service http pada server dan dilakukan pengambilan status dari service http. Hasil yang diberikan dari service http ditampilkan seperti pada gambar 4.49
Gambar 4.49
Penampilan check_http
2) check_ssh Proses pengecekan ssh dilakukan oleh plugin check_ssh yang berasal dari aplikasi nagios core. Proses request dari network monitoring server kepada
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
44
remote host dan memberikan akses. Data yang disimpan dari check_ssh berupa version berserta protocol dari ssh seperti pada gambar 4.50
Gambar 4.50
Penampilan check_ssh
3) check_snmp Proses pengecekan dari check_snmp dipergunakan untuk mengecek status service snmp dari device yang dimonitoring. Check_snmp dieksekusi untuk melakukan laporan kepada snmp agent. Nilai dari variabel data yang akan diinputkan kedalam jenis service yang diminta contohnya statusPort. Permintaan variabel diterima dan disimpan kedalam tabel. Hasil dari variabel tersebut disampaikan dalam pesan status kemudian dikirimkan kembali ke network monitoring server seperti pada gambar 4.51
Gambar 4.51
Penampilan status port pada device switch
4) check_mrtg Pengecekan mrtg dilakukan untuk memonitoring trafik jaringan pada host yang dikelola network monitoring server. Hasil yang ditampilkan berupa halaman html yang berisi gambar yang menyediakan visualisasi secara langsung mengenai keadaan trafik jaringan. Pengecekan dari snmp request service kepada mrtg dilakukan dan disimpan dalam bentuk bilangan ascii setiap 5 menit dan selalu update secara otomatis. File ascii disimpan dalam file logging yang dibutuhkan dalam halaman web. Grafik dikonversi kedalam format GIF dari format PNM menggunakan tools pnmtogif mrtg. Gambar akan
disimpan
pada
network
monitoring
commit to user
server
dari
pengecekan
perpustakaan.uns.ac.id
digilib.uns.ac.id
45
check_mrtgtraf yang bisa diakses oleh administrator. Penampilan mtrg pada network monitoring server seperti pada gambar 4.52
Gambar 4.52 4.7
Penampilan mrtg pada device switch
IMPLEMENTASI GRAPHING NETWORK MONITORING SERVER Nagiosgraph mempunyai fitur memproses dan mengumpulkan data kinerja service seperti ping, http dan ssh yang dipantau oleh plugin nagios core kemudian menyimpannya ke dalam rrd(round robin database). Data dapat ditampilkan sebagai gambar grafik dan divisualisasikan agar lebih mudah dilihat oleh seorang administrator. Nagios core mempunyai fitur performance_data untuk memproses data dari status host berdasarkan service yang diberikan dalam bentuk file perfdata.log Nagiosgraph mempunyai script insert.pl yang berfungsi memproses kinerja status host, memparsing konfigurasi dengan map dan update data dalam bentuk RRD file. RRD file menyimpan service dan mengalokasikanya ke dalam satu direktori info mengenai status host yang dipantau. Nagiosgraph akan secara otomatis mendeteksi host dan service yang baru ditambahkan ke dalam nagios core. Adapun langkah konfigurasi dalam implementasi graphing network monitoring server sebagai berikut :
4.7.1 Pengaturan nagios core Konfigurasi plugin nagiosgraph perlu ada beberapa pengaturan pada sisi nagios core. Langkah konfigurasinya yaitu sebagai berikut :
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
46
1) Buka file nagios.cfg kemudian cari baris process performance data. Ubah process_performance_data=0
menjadi
bernilai
process_performance
_data=1. Tujuannya supaya nagios core mengizinkan adanya pengolahan data host dan service yang dimonitoring.
Gambar 4.53
Pengubahan mode process performance data
2) Buat file perfdata.log dan simpan di directory /var/spool/nagios/. File perfdata.log dipergunakan sebagai penyimpan data log semua host yang dimonitoring oleh nagios core. Pengubahan permission 755 agar user dapat menuliskan ke dalam file. Definisikan lokasi file perfdata.log di baris host_perfdata_file serta service_perfdata_file pada gambar 4.55
Gambar 4.54
Pembuatan file perfdata.log dan ubah permission
Gambar 4.55
Pendefinisian perfdata.log
3) Definisikan host_perfdata_file_template dan service_perfdata_ file_template agar host dapat diproses pada network monitoring server seperti gambar 4.56
Gambar 4.56
Pendefinisian host_perfdata_file dan service_perfdata_file
4) Perubahan mode penulisan untuk perfdata file dengan mode [a] dengan maksud penulisan akan di append ke file yang sebelumnya telah ada.
Gambar 4.57
Pengubahan mode penulisan perfdata
5) Host_perfdata_file_processing _interval didefiniskan 10 dimaksudkan untuk memproses perfdata dengan interval 10s
Gambar 4.58
Pengubahan interval penulisan perfdata
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
47
6) Pendefinisian command dipergunakan untuk perintah yang memproses perfdata_file
Gambar 4.59
Pendefinisian command perfdata
7) Definisikan command process-host-perfdata serta process-service-perfdata di file command.cfg. Nagiosgraph mempunyai file script yang berfungsi untuk memproses perfdata bernama insert.pl. Letak file insert.pl ada di directory /usr/local/libexec/nagiosgraph/
Gambar 4.60
Pendefinisian command pada nagios core
8) Pada gambar 4.61 pendefinisian service perlu ditambahkan pada file template.cfg yang mendefinisikan service nagiosgraph
Gambar 4.61
Pendefinisian service nagiosgraph
4.7.2 Pengaturan nagiosgraph Pengecekan kesalahan konfigurasi nagiosgraph dilakukan dengan dicek lewat web browser. Pada bagian url diketikan http://ipaddress/nagios/cgibin/nagiosgraph/showconfig.cgi Terlihat pada gambar 4.62 ada beberapa pesan error konfigurasi yang menunjukan file dan directory tidak diketemukan. File nagiosgraph.log, nagiosgraph-cgi.log, serta folder rrd seperti gambar 4.63 perlu dibuat agar error konfigurasi tidak ditemui.
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
48
Gambar 4.62
Pengecekan kesalahan konfigurasi pada nagiosgraph
Gambar 4.63
Penghapusan kesalahan pada nagiosgraph
Pengubahan permissions perlu dilakukan dari file yang dibuat agar nagios core dapat menuliskan ke dalam file dan folder yang didefinisikan pada nagiosgraph.conf. Tampilannya terdapat pada gambar 4.64
Gambar 4.64
Pengubahan permission file dan folder nagiosgraph
Definisikan letak file nagiosgraph.log, nagiosgraph-cgi.log, serta folder rrd pada file konfigurasi nagiosgraph.conf
Gambar 4.65
Pendefinisian konfigurasi nagiosgraph.conf
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
49
Pengecekan kembali dilakukan lewat browser untuk melihat konfigurasi yang error. Apabila konfigurasi sudah berhasil maka akan tampil gambar 4.66
Gambar 4.66
Pengecekan konfigurasi nagiosgraph
Definisikan service graphed-service ke dalam host yang dimonitoring supaya dapat memproses perfdata file. Sebagai contoh localhost yang menggunakan template generic-service pada pendefinisian service local-service maka tambahkan service graphed-service seperti gambar 4.67
Gambar 4.67
Pendefinisian graphed-service
Perintah nagios -v /usr/local/etc/nagios/nagios.cfg dilakukan sebagai pengecekan konfigurasi. Kemudian
lakukan restart service nagios core dan
service apache web server. Cek kembali pada browser seperti gambar 4.68 maka terlihat ada icon berupa grafik yang ada disamping masing service server yang sedang dimonitoring.
commit to user
masing host dan
perpustakaan.uns.ac.id
digilib.uns.ac.id
50
Gambar 4.68 4.8
Penampilan nagiosgraph pada nagios core
ANALISA GRAPHING NETWORK MONITORING SERVER Pendefinisian command ketika pengecekan kepada host mendapatkan sebuah data yang disebut performance data. Performance data tersebut berupa bilangan data dari respone time server, byte data yang bisa ditransfer, kemudian load cpu, dan jumlah memory. Performance data dieksekusi oleh nagios core untuk disimpan dalam perfdata.log nagios. Performance data diolah ke file map pada aplikasi nagiosgraph. Map berisikan variabel yang mengidentifikasi jenis service dan menentukan bagaimana penyimpanan dalam bentuk rrd file. File insert.pl dieksekusi untuk mengkonversi hasil performance data kedalam rrd file. File rrd dikirim kedalam konfigurasi nagiosgraph.conf untuk dijadikan sebuah file image berekstensi *.cgi. Pembacaan file image dilakukan oleh apache web server kemudian ditampilkan kedalam web interface network monitoring server. Skema jalannya proses perubahan dari performance data ke dalam file image *.cgi dengan diasumsikan host berupa www.uns.ac.id pada network monitoring server ditampilkan pada gambar 4.69
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
51
Gambar 4.69
Penampilan skema jalannya nagiosgraph
Pada gambar 4.69 dilakukan pengecekan kepada host www.uns.ac.id menghasilkan performance data point (1) ditampilkan seperti gambar 4.70
Gambar 4.70
Penampilan hasil performance data pada host
Hasil pengolahan pada network monitoring server dari performance data dikonversi oleh script insert.pl point (2) ke proses pembuatan rrd file yang ditampilkan seperti gambar 4.71. Script insert.pl selalu mengupdate data kedalam rrd file ketika ada perubahan status dari host yang dimonitoring.
Gambar 4.71
Penampilan rrd file pada host www.uns.ac.id
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
52
Konversi rrd file dilakukan guna mengubah file kedalam bentuk image agar mudah dibaca oleh seorang administrator. Hasil file image dibaca oleh apache web server kemudian ditampilkan pada halaman web interface network monitoring server yang menggunakan aplikasi nagios core pada point (3) seperti gambar 4.72
Gambar 4.72 4.9
Penampilan nagiosgraph pada www.uns.ac.id
IMPLEMENTASI EMAIL NOTIFICATION DAN SMS ALERT Dalam pembuatan network monitoring server dibagi menjadi 2 jenis pengiriman yaitu email notification dan sms alert. Pengiriman dilakukan ketika host dan service mengalami suatu masalah.
4.9.1 Konfigurasi email notification Email notification
dipergunakan
untuk
pengiriman kepada email
administrator berisikan tentang aktivitas dari host yang dimonitoring oleh network monitoring server. Status dari host berupa up tidak akan dikirim oleh nagios dan status down akan dikirimkan kepada email administrator. Pengetesan pengiriman email dilakukan dengan mengecek apakah network monitoring server mampu mengirim email dan pastikan port 25 pada jaringan utama tidak ditutup. Pendefinisian email receiver dilakukan agar administrator bisa mendapatkan notifikasi status server yang dikelola oleh network monitoring server. Konfigurasi pada email notification sebagai berikut : 1) Pengiriman email dilakukan dengan mail dan dicoba menggunakan command_line seperti pada gambar 4.73
Gambar 4.73
Pengiriman email menggunakan mail
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
53
2) Pengecekan email tujuan seorang administrator dilakukan untuk melihat bahwa email telah diterima
Gambar 4.74
Pengecekan kotak masuk email
3) Definisikan kontak administrator pada file konfigurasi contact.cfg seperti pada gambar 4.75
Gambar 4.75
Pendefinisian contact email
4) Command pengiriman email didefinisikan pada file command.cfg agar penerimaan email bisa mendapatkan status host dan service dari tiap server yang dikelola oleh network monitoring server
Gambar 4.76
Gambar 4.77
Pendefinisan command untuk notify host
Pendefinisian command untuk notify service
5) Pengecekan email notification pada inbox dilakukan guna melihat kondisi status server yang sedang berjalan seperti gambar 4.78
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
54
Gambar 4.78
Pengecekan pada kotak masuk email
4.9.2 Konfigurasi sms alert pada network monitoring server Penggunaan gammu difungsikan sebagai aplikasi pengirim pesan berupa status host(up,down) dan service(critical,unknown,warning, dan recovery) apabila terindikasi mengalami gangguan. Informasi pengiriman dilakukan dengan mengeksekusi gammu untuk memberikan output command line yang berada pada file command.cfg. Informasi tersebut berupa respons berisi sms yang dihasilkan dari pengecekan pada status host. Konfigurasi yang perlu dilakukan untuk gammu dan nagios core meliputi yaitu : 4.9.2.1 Konfigurasi sms alert di gammu Pemilihan port usb yang terpasang pada network monitoring server perlu pendefinisian agar modem dapat dikenali dan menjalankan perintah lewat command line. Pendefinisian jenis koneksi jaringan dibutuhkan untuk mengenali jenis provider yang dipergunakan. Pengetesan mengirim sms perlu dilakukan agar memastikan bahwa modem bisa dipergunakan untuk pengiriman sms dalam jumlah yang cukup banyak. Langkah yang dipergunakan untuk konfigurasi modem dengan aplikasi gammu sebagai berikut : 1) Gammu-config adalah perintah untuk mengkonfigurasi hardware modem yang terdeteksi pada network monitoring server lewat graphical user interface (gui) seperti terlihat pada gambar 4.79. Konfigurasi default gammu pada gambar 4.80
Gambar 4.79
Pendeteksian modem dengan gammu
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
55
Gambar 4.80
Penampilan konfigurasi default gammu
2) Port disesuaikan dengan modem yang terkoneksi sebagai pendefinisian letak perangkat modem yang terpasang. Default port serial yang dipergunakan FreeBSD10.0 adalah cuau0.0
Gambar 4.81
Pemilihan port serial gammu
3) Connection at115200 merupakan jenis koneksi jaringan modem gsm dengan provider yang dipergunakan adalah three (3) pada network monitoring server. Koneksi antara jaringan modem berbeda untuk masing - masing provider dan pastikan sinyal pada provider yang dipergunakan mencukupi ketika pengiriman sms dilakukan.
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
56
Gambar 4.82
Pemilihan jenis koneksi
4) Tentukan lokasi log file gammu sebagai contoh /var/log/gammu.log. Log format yang dipergunakan textall agar error pada gammu dapat ditulis
Gambar 4.83
Pemilihan jenis format log aplikasi gammu
5) Save semua konfigurasi gammu maka hasilnya seperti gambar 4.84. Kemudian ketikan gammu identify untuk mencoba mendeteksi modem yang terpasang dan telah dikonfigurasi seperti gambar 4.85
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
57
Gambar 4.84
Gambar 4.85
Penampilan konfigurasi gammu
Pendeteksian modem oleh aplikasi gammu
6) Pengecekan gammu sudah bisa melakukan pengiriman SMS dilakukan dengan mengirim kalimat ke nomer administrator. Code script kirim sms seperti pada gambar 4.86 Apabila status OK, berarti pengiriman berhasil
Gambar 4.86
Pengiriman sms oleh gammu
7) Tes pengiriman berhasil pada sisi administrator dengan penerimaan sms seperti pada gambar 4.87
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
58
Gambar 4.87
Penerimaan sms pada telepon admin
4.9.3 Konfigurasi sms alert di nagios core Script command perlu dituliskan di file command.cfg agar terdapat akses nagios core kepada gammu untuk memproses sms yang dikirim dari status host maupun service. Daemon process gammu terletak pada /usr/local/bin/gammu Pembuatan database dilakukan untuk menyimpan data status modem dan status pengiriman sms kepada seorang administrator.
Gambar 4.88
Pembuatan database smsd
Tabel untuk penyimpanan data status modem dan pengiriman sms ditampilkan dalam query serta trigger seperti pada gambar 4.89 CREATE TABLE IF NOT EXISTS `outbox` ( `UpdatedInDB` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `InsertIntoDB` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `SendingDateTime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `SendBefore` time NOT NULL DEFAULT '23:59:59', `SendAfter` time NOT NULL DEFAULT '00:00:00', `Text` text, `DestinationNumber` varchar(20) NOT NULL DEFAULT '', `TextDecoded` text NOT NULL, `ID` int(10) unsigned NOT NULL AUTO_INCREMENT, `SendingTimeOut` timestamp NULL DEFAULT '0000-00-00 00:00:00', `DeliveryReport` enum('default','yes','no') DEFAULT 'default', `StatusSend` text, PRIMARY KEY (`ID`), KEY `outbox_date` (`SendingDateTime`,`SendingTimeOut`), ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=107 ; DROP TRIGGER IF EXISTS `outbox_timestamp`; DELIMITER // CREATE TRIGGER `outbox_timestamp` BEFORE INSERT ON `outbox`
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
59
FOR EACH ROW BEGIN IF NEW.InsertIntoDB = '0000-00-00 00:00:00' THEN SET NEW.InsertIntoDB = CURRENT_TIMESTAMP(); END IF; IF NEW.SendingDateTime = '0000-00-00 00:00:00' THEN SET NEW.SendingDateTime = CURRENT_TIMESTAMP(); END IF; IF NEW.SendingTimeOut = '0000-00-00 00:00:00' THEN SET NEW.SendingTimeOut = CURRENT_TIMESTAMP(); END IF; END // DELIMITER ; CREATE TABLE IF NOT EXISTS `phones` ( `ID` text NOT NULL, `UpdatedInDB` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `InsertIntoDB` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `TimeOut` timestamp NOT NULL DEFAULT '0000 -00-00 00:00:00', `Status` text NOT NULL, PRIMARY KEY (`UpdatedInDB`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; DROP TRIGGER IF EXISTS `phones_timestamp`; DELIMITER // CREATE TRIGGER `phones_timestamp` BEFORE INSERT ON `phones` FOR EACH ROW BEGIN IF NEW.InsertIntoDB = '0000-00-00 00:00:00' THEN SET NEW.InsertIntoDB = CURRENT_TIMESTAMP(); END IF; IF NEW.TimeOut = '0000-00-00 00:00:00' THEN SET NEW.TimeOut = CURRENT_TIMESTAMP(); END IF; END // DELIMITER ;
Gambar 4.89
Penampilan query dan trigger pembuatan tabel
Pembuatan script pengiriman notify-host-by-sms ditampilkan seperti pada gambar 4.90 dengan nama file sendsmshost.sh dan pengiriman notify-service-bysms ditampilkan seperti pada gambar 4.91 dengan nama sendsmsservice.sh dan disimpan pada directory /usr/local/libexec/nagios/. #!/usr/local/bin/bash kata=$1; status=$2; nomer=$3; admin=$4; loger=$(echo "Pak $admin, device/server $kata kondisinya $status. Terimakasih" | sudo /usr/local/bin/gammu sendsms text $nomer);
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
60
mysql --host=localhost --user=nagios --password=nagios smsd << EOF INSERT INTO outbox ( DestinationNumber, TextDecoded, CreatorID, RelativeValidity, StatusSend ) VALUES ( '$nomer', 'Pak $admin device/server $kata kondisinya $status. Terimakasih', 'Program', '255', '$loger' ); EOF
Gambar 4.90
Penampilan script sendsmshost.sh
#!/usr/local/bin/bash kata=$1; services=$2; kondisi=$3; nomer=$4; admin=$5; loger=$(echo "Pak $admin, device/server $kata, servis $services kondisinya $kondisi. Terimakasih" | sudo /usr/local/bin/gammu sendsms text $nomer); mysql --host=localhost --user=nagios --password=nagios smsd << EOF INSERT INTO outbox ( DestinationNumber, TextDecoded, CreatorID, RelativeValidity, StatusSend ) VALUES ( '$nomer', 'Pak $admin device/server $kata, servis $services kondisinya $kondisi. Terimakasih', 'Program', '255', '$loger' ); EOF
Gambar 4.91
Penampilan script sendsmsservice.sh
define command { command_name notify-host-by-sms command_line $USER1$/sendsmshost.sh $HOSTSTATE$ $CONTACTPAGER$ $CONTACTALIAS$ register 1 } define command { command_name
notify-service-by-sms
commit to user
$HOSTNAME$
perpustakaan.uns.ac.id
digilib.uns.ac.id
61
command_line $USER1$/sendsmsservice.sh $HOSTNAME$ $SERVICEDESC$ $SERVICESTATE$ $CONTACTPAGER$ $CONTACTALIAS$ register 1 }
Gambar 4.92
Penulisan command pada pengiriman sms
Definisikan pula command yang dilakukan pada object contact di file templates.cfg terlihat pada gambar 4.93 dengan tujuan command notify-host-bysms dan notify-service-by-sms dapat diproses. Setelah itu definisikan pager di contact administrator agar gammu bisa mengirim ke nomer tujuan adminitrator seperti gambar 4.94
Gambar 4.93
Pendefinisian command untuk object contact
Gambar 4.94
Pendefinisian nomer tujuan gammu ke admin
Nagios core perlu proses pengecekan dengan script nagios
v
/usr/local/etc/nagios/nagios.cfg pada gambar 4.95 dan restart service nagios seperti gambar 4.96 untuk memproses konfigurasi baru di nagios core
Gambar 4.95
Gambar 4.96
Pengecekan konfigurasi nagios core
Pemrosesan restart service nagios
Hasil yang diberikan oleh network monitoring server dalam sms alert digambarkan seperti gambar 4.97
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
62
Gambar 4.97
Penampilan sms alert
4.10 ANALISA EMAIL NOTIFICATION DAN SMS ALERT Dalam perancangan alert dilakukan analisa kerja sesuai tahapan kerja dan kebutuhan. Hasil yang diberikan ketika proses implementasi email notification dan sms alert digambarkan dengan skema seperti 4.98
Gambar 4.98
Penampilan skema implementasi email dan sms alert
Pada gambar 4.98 ditampilkan skema implementasi email dan sms alert dibagi menjadi 3 bagian yaitu pengecekan, eksekusi, dan penerimaan. Untuk penjelasannya sebagai berikut : 1) Pengecekan Pengecekan dibagi menjadi dua bagian yaitu service PING dan service HTTP. Pengecekan service HTTP dilakukan dengan plugin check_http untuk host server. Status yang dikembalikan oleh check_http berupa down dan dikembalikan kepada service HTTP untuk ditampilkan kedalam web interface network
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
63
monitoring server. Pengecekan service PING dilakukan oleh check_ping juga down pada network monitoring server dan dikembalikan ke web interface pula. 2) Eksekusi Ketika proses pengecekan diketahui bahwa host statusnya down. Service PING dibuat menggunakan notifikasi sms kepada administrator dan service HTTP dikirimkan sebuah email notification. Pengiriman sms dilakukan dengan command dari nagios core yang mengeksekusi gammu untuk menjalankan modem sebagai pengiriman sms alert. Service gammu dipastikan bisa dieksekusi oleh user nagios. Pengiriman email dilakukan dengan command dari nagios core yang mengeksekusi aplikasi mail untuk mengirimkan email. Pastikan port 25 dari jaringan berstatus open agar tidak di blok sehingga bisa terkirim ke email tujuan. 3) Penerimaan Proses email notification bisa dilihat di web browser pada email tujuan dan sms alert dilihat ketika status server sedang update pada pager atau telepon. Pengiriman email notification dan sms alert dapat diperlihatkan pada network monitoring server seperti pada gambar 4.99
Gambar 4.99
Penampilan hasil pengiriman email dan sms alert
Pengujian dilakukan dalam jangka waktu dua minggu pada network monitoring server yang menggunakan beberapa host yang dimonitoring didapatkan grafik sebagai berikut :
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
64
Jumlah Pengiriman (Satuan)
Data Pengiriman Email dan SMS 100 90 80 70 60 50 40 30 20 10 0
89
51 24 4
9 0
2
7
6
13
10 0
Jumlah 5
2
Gambar 4.100 Data jumlah pengiriman email dan sms
Gambar 4.101 Penampilan pengecekan status modem
Gambar 4.102 Penampilan status pengiriman sms
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
65
4.11 IMPLEMENTASI EVENT HANDLER Event handler dilakukan untuk penanganan service http dan ssh server yang dikelola. Event handler menggunakan script pemrograman bash yang dipasang ke dalam nagios core. Nagios core akan menjalankan ketika ada kondisi host tidak normal (down) serta error service (critical, unknown, unreachable). Event handler dikhususkan pada network monitoring server dan server yang dimonitoring.
NRPE (Nagios remote plugin excecutor)
dipakai guna
menjalankan service event handler pada server yang dimonitoring. Aplikasi sudo dipergunakan untuk mengeksekusi perintah restart service http dan ssh dalam user
root.
Kemudian
definisikan
user
dan
group
nagios
pada
file
/usr/local/etc/sudoers dibuat tidak meminta password ketika mengeksekusi program. Script eventhandler ditaruh pada folder /usr/local/libexec/nagios/.
Gambar 4.103 Pendefinisian user nagios untuk tidak meminta password 4.11.1 Konfigurasi event handler localhost Perancangan event handler pada network monitoring server dilakukan untuk memperbaiki service apabila dalam melakukan monitoring mengalami gangguan. Gangguan tersebut berupa service http dan ssh. Konfigurasi yang dilakukan yaitu sebagai berikut : 1) Pembuatan script dilakukan agar nagios core dapat mengekseskusi command untuk restart service. #!/usr/local/bin/bash case "$1" in OK) ;; WARNING) ;; UNKNOWN) ;; CRITICAL) case "$2" in SOFT) case "$3" in 3) echo -n "Restarting HTTP Service State"
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
66
sudo service apache24 restart ;; esac ;; HARD) echo -n "Restart HTTP Service..." sudo service apache24 restart ;; esac ;; esac exit 0
Gambar 4.104 Penulisan script untuk restart service http #!/usr/local/bin/bash case "$1" in OK) ;; WARNING) ;; UNKNOWN) ;; CRITICAL) case "$2" in SOFT) case "$3" in 3) echo -n "Restarting SSH Service State" sudo service sshd restart ;; esac ;; HARD) echo -n "Restart SSH Service..." sudo service sshd restart ;; esac ;; esac exit 0
Gambar 4.105 Penulisan script untuk restart service ssh Simpan file script pada directory /usr/local/libexec/nagios/ dengan nama restart-http.sh dan restart-ssh.sh 2) Nagios core perlu command untuk mengeksekusi script event handler yang didefinisikan di file command.cfg
Gambar 4.106 Pendefinisian command restart-http
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
67
Gambar 4.107 Pendefinisian command restart-ssh 3) Definisikan event handler pada host atau service seperti pada gambar 4.108
Gambar 4.108 Pendefinisian event handler pada host localhost 4) Pengecekan dilakukan dengan mematikan service httpd pada server localhost untuk mengetes jalannya event handler yang telah terpasang. Jika berhasil maka service yang telah mati sebelumnya akan berjalan normal. 4.11.2 Konfigurasi event handler pada remote host Remote host perlu konfigurasi event handler dikarenakan tidak selamanya host yang dimonitoring aplikasinya berjalan lancar serta memberikan status berupa up namun bisa down. Event handler berjalan menggunakan plugin nrpe yang terinstall pada remote host yang ditambahkan command berupa restart service . Konfigurasi event handler pada remote host sebagai berikut : 1) Konfigurasi dimulai pada sisi remote host yang diinstall nrpe plugin dengan memberikan
permission
user
dan
group
nagios
pada
/usr/local/libexec/nagios
Gambar 4.109 Pemberian permission pada folder nagios
commit to user
folder
perpustakaan.uns.ac.id
digilib.uns.ac.id
68
2) Pada directory /usr/local/etc/ lakukan copy file nrpe2.cfg-sample ke file nrpe2.cfg. Berikan permission chmod u+x untuk file nrpe2.cfg
Gambar 4.110 Pengubahan permission pada file nrpe2.cfg 3) Pengeditan file nrpe2.cfg dengan mengganti allowed_hosts=127.0.0.1 dengan allowed_hosts=203.6.148.199 yang merupakan ip address dari network monitoring server
Gambar 4.111 Pendefinisian alamat ip address 4) Berikan
pada /etc/rc.conf untuk menjalankan
service nrpe ketika booting
Gambar 4.112 Penambahan script nrpe pada /etc/rc.conf 5) Penambahan nrpe2
5666/tcp
pada file /etc/services
berguna untuk
menjalankan service nrpe2 dengan port 5666/tcp
Gambar 4.113 Penambahan nrpe pada /etc/services 6) Berikan rule untuk network monitoring server dapat mengeksekusi command nrpe pada file /etc/hosts.allow seperti pada gambar 4.114
Gambar 4.114 Pemberian rule 7) Jalankan service nrpe2 dengan perintah /usr/local/etc/rc.d/nrpe2 start
Gambar 4.115 Jalankan service nrpe2 di remote host
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
69
8) Definisikan user dan group nagios pada /usr/local/etc/sudoers pada remote host agar tidak meminta password ketika mengeksekusi service
Gambar 4.116 Pendefinisian user dan group nagios 9) Pengecekan dari sisi network monitoring server dilakukan untuk melihat service nrpe sudah berjalan seperti pada gambar 4.117
Gambar 4.117 Pengecekan dari sisi network monitoring server 10) Pembuatan script restart-service pada sisi network monitoring server didefinisikan pada directory /usr/local/libexec/nagios dengan kode seperti pada gambar 4.118
Gambar 4.118 Pendefinisian script check_nrpe service remote host 11) Pendefinisian command restart-remote pada command.cfg agar nagios menjalankan script event handler
Gambar 4.119 Pendefinisian command pada network monitoring server
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
70
12) Definisikan event handler pada service yang akan dipasang. Dalam hal ini diasumsikan terdapat remote host dengan service check_http
Gambar 4.120 Pendefinisian event handler pada host 13) Pada sisi remote host, command pada nrpe perlu didefinisikan untuk eksekusi restart service http seperti gambar 4.121
Gambar 4.121 Pendefinisian command pada file nrpe2.cfg Pengecekan
event
handler
pada remote
host
dilakukan
dengan
menonaktifkan service apache22 maka network monitoring server akan secara otomatis mengeksekusi command restart-remote untuk menjalankan service yang mati. 4.12 ANALISA HASIL EVENT HANDLER Pada perancangan event handler dikerjakan sesuai langkah kerja maka dihasilkan proses skema jalannya event handler pada localhost dan remote host. Proses eksekusi event handler pada localhost dilakukan ketika ada pengecekan service http yang dideteksi service failed. Ketika terdeteksi failed plugin check_http mengirimkan status bahwa server down. Proses yang terjadi pada network monitoring server memilih untuk mengeksekusi event handler apa membiarkan kondisi begitu saja. Proses event handler dilakukan dengan eksekusi program bash yang terpasang pada network monitoring server. Script bash tersebut berisikan sebuah perintah yang menjalankan fungsi restart http server. Proses jalannya service event handler ditampilkan seperti gambar 4.122
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
71
Gambar 4.122 Penampilan skema jalannya event handler Proses event handler network monitoring server pada remote host dilakukan dengan bantuan plugin nrpe. Aplikasi diinstall pada remote host sebagai aplikasi pengecek service sekaligus pengeksekusi command dari network monitoring server. Skema remote host ditampilkan pada gambar 4.123
Gambar 4.123 Penampilan event handler remote host Pengecekan http diawali dengan mengeksekusi plugin check_http dari network monitoring server. Status yang diterima oleh check_http berupa service
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
72
failed atau down. Kondisi diterima oleh network monitoring server dan mengambil keputusan apakah akan eksekusi perintah event handler atau tidak. Proses event handler dijalankan dengan mengeksekusi script bash yang berisi eksekusi check_nrpe2. Check_nrpe2 tersebut berisikan perintah menjalankan command yang berada pada remote host untuk restart service http. Hasil yang diterima oleh check_nrpe2 berupa service http sudah berjalan berstatus OK. Proses pengecekan service localhost yang dilakukan untuk memastikan service event handler berjalan yaitu dengan menghentikan service apache24. Pengetikan service apache24 stop dilakukan untuk menghentikan service apache24
Gambar 4.124 Proses menghentikan service apache24 Pengecekan dilakukan dengan melihat log dari network monitoring server dan pastikan service http sudah berjalan ketika ditunggu beberapa menit lewat web browser. Tampilan log network monioring server ditunjukan seperti pada gambar 4.125
Gambar 4.125 Penampilan service event handler pada remote host Event handler remote host juga dilakukan dengan menghentikan service http pada remote host. Remote host pada pengecekan diasumsikan dengan host staff.uns.ac.id. Penghentian service apache staff.uns.ac.id ditampilkan seperti gambar 4.126
Gambar 4.126 Proses menghentikan service apache22 pada staff.uns.ac.id Untuk mengecek event handler pada remote host bisa dilihat pada log nagios.log untuk staff.uns.ac.id seperti gambar 4.127
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
73
Gambar 4.127 Penampilan proses event handler pada remote host Pengujian event handler dilakukan selama dua minggu dengan host staff.uns.ac.id, uns.ac.id, log.uns.ac.id. Selama pengujian dihasilkan beberapa hasil dari log dan dijadikan grafik seperti gambar 4.128
Pengujian Event Handler
Jumlah Restart (Satuan)
7 6 5 4
staff.uns.ac.id
3
uns.ac.id
2
log.uns.ac.id localhost
1 0
Gambar 4.128 Penampilan hasil pengujian event handler 4.13 IMPLEMENTASI LOG DAN HISTORY Network monitoring server difungsikan sebagai penyimpan log dan history dari masing - masing host dan service yang dimonitoring. Log dibutuhkan untuk melihat seberapa banyak terjadi error pada host yang berjalan pada jaringan. Log dari host tersebut disimpan database dikarenakan lebih mudah untuk pengolahan data. Konfigurasi perancangan log dibagi menjadi dua yaitu log pada network monitoring server dan log http dari akses serta error web server dari remote host yang dimonitoring. NDOUtils dipergunakan untuk menyimpan log network monitoring server. Penggunaan script perl dipakai untuk penyimpanan log http server dari remote host di dalam network monitoring server.
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
74
4.13.1 Konfigurasi NDOUtils NDOUtils merupakan plugin nagios yang berfungsi mengeksport data dan history dari satu atau lebih konfigurasi nagios kedalam database mysql. Konfigurasi untuk ndoutils sebagai berikut : 1) Pembuatan database perlu dilakukan untuk menyimpan data log dan history nagios core.
Gambar 4.129 Pembuatan database nagios 2) Penambahan script ndoutils pada /etc/rc.conf dipergunakan agar ndoutils berjalan otomatis ketika booting
Gambar 4.130 Pendefinisian ndoutils pada rc.conf 3) Import database sample ndoutils untuk mendefinisikan tabel yang berada dalam database nagios
Gambar 4.131 Import database ndoutils 4) Pemindahan sample konfigurasi dilakukan pada ndoutils seperti gambar 4.132
Gambar 4.132 Pemindahan konfigurasi ndoutils 5) Penambahan script dilakukan pada file ndoutils.cfg
Gambar 4.133 Penambahan script pada file ndoutils.cfg 6) Pengubahan konfigurasi ndomod.cfg dilakukan untuk menyesuaikan socket dan letak penyimpanan
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
75
Gambar 4.134 Pengubahan konfigurasi ndomod.cfg 7) Pengubahan ndo2mod.cfg dilakukan untuk konfigurasi database seperti pada gambar 4.135
Gambar 4.135 Pengubahan konfigurasi ndo2mod.cfg 8) Penambahan konfigurasi event_broker dilakukan pada file nagios.cfg
Gambar 4.136 Penambahan konfigurasi event_broker 9) Jalankan service ndoutils dengan mengetikan perintah seperti gambar 4.137
Gambar 4.137 Proses menjalankan service ndoutils Pengecekan isi database juga dilakukan untuk melihat service ndoutils telah berjalan dengan query database atau dalam tabel phpmyadmin seperti gambar 4.138. Apabila sudah berhasil maka tabel pada database nagios telah terisikan oleh data berupa log dan data dari host maupun service.
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
76
Gambar 4.138 Pengecekan isi database 4.13.2 Konfigurasi log http dengan perl Pada
perancangan
log
dan
history
network
monitoring
server
dipergunakan script perl yang menyimpan log http ke dalam database mysql. Konfigurasi yang dilakukan untuk menyimpan log http ke mysql yaitu sebagai berikut : 1) Pembuatan user pada sisi network monitoring server dilakukan agar database mysql server dapat diakses oleh server remote host
Gambar 4.139 Pembuatan user pada sisi network monitoring server 2) Pembuatan database perlu dilakukan agar data dapat disimpan didalamnya
Gambar 4.140 Pembuatan database pada network monitoring server 3) Pada sisi remote host, script disimpan pada direktori /home/<user>/ guna menjadikannya plugin dari network monitoring server. Dalam remote host diasumsikan user adalah nagios
Gambar 4.141 Pengaksesan folder plugin
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
77
4) Buat script dengan nama send_access.pl dan send_error.pl . Simpan pada directory /home/nagios/ dan ubah permission user untuk bisa execute program.
Gambar 4.142 Pembuatan file program 5) Listing program send_access.pl ditampilkan seperti pada gambar 4.143 #!/usr/bin/perl use strict; use warnings; use DBI; my %conf = ( "table_name" => "access_log" ); if(@ARGV < 2) { print "Usage: " . __FILE__ . " {log path(s)} {mysql db credentials}\n" . "Example: " . __FILE__ . " \"/dir1/log1, /dir2/log2\" " . "\"db_host:db_database:db_username:db_password\"\n\n"; exit; } my ($arg_logs) = $ARGV[0]; my ($arg_db) = $ARGV[1]; my @logs = split(',', $arg_logs); my @db = split(':', $arg_db); if(@db < 4) { print "Failed to continue, settings\n\n"; exit; }
invalid
DB
configuration
my $lines = 0; foreach(@logs) { my $log = $_; $log =~ s/^\s+//; # rem lead spaces $log =~ s/\s+$//; # rem tail spaces processLog($log); } print "\nTotal log entries inserted: " . $lines . "\n\n";
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
78
sub processLog { no warnings; my $log = $_[0]; print "\nProcessing log \"" . $log . "\"...\n"; open my $data, $log or die "\nFailed to open log file: \"" . $log . "\"\n\n"; my $dbc = DBI->connect('DBI:mysql:' . $db[1] . ':' . $db[0], $db[2], $db[3], { RaiseError => 1 }) or die "\nFailed to connect to database \"" . $db[1] . "\""; initDB($dbc); while(my $line = <$data>) { chomp($line); $line =~ s/'/\\'/g; # ' to \' for db if(length($line) > 1) { my ($host, $ident_user, $auth_user, $date, $time, $time_zone, $method, $url, $protocol, $status, $bytes) = $line =~ /^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\] "(\S+) (.+?) (\S+)" (\S+) (\S+)$/; my $conf{'table_name'}
$q
=
"INSERT
IGNORE
INTO
"
.
. "(log, stored, created, times, byte, ip_address, message, mhash) VALUES('" . $log . "', NOW(),'" . $date . "','". $time . "','" . $bytes . "','" . $host . "','" . $method . " " . $protocol . " ". $url . "',md5('" . $url . "'));"; my $dbs = $dbc->prepare($q); $lines = $lines + $dbs->execute() or print "\nFailed to insert line \"" . $line . "\"\n"; } } $dbc->disconnect; close $data; close $log; # flush log file `echo '' > $log`; } my $is_db_ready = 0; sub initDB { if(!$is_db_ready) { print "Initializing database...\n";
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
79
my $dbc = $_[0]; my $dbs = $dbc->prepare(" CREATE TABLE IF NOT EXISTS `" . $conf{'table_name'} . "` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `log` varchar(255) NOT NULL, `stored` timestamp NULL DEFAULT NULL, `created` varchar(255) DEFAULT NULL, `times` varchar(255) DEFAULT NULL, `byte` varchar(50) DEFAULT NULL, `ip_address` varchar(255) DEFAULT NULL, `message` mediumtext NOT NULL, `mhash` char(32) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `entry_unique` (`log`,`byte`,`mhash`) ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; "); $dbs->execute()
or
die
"\nFailed
to
execute
create
table \"" . $conf{'table_name'} . "\" query\n"; $is_db_ready = 1; } }
Gambar 4.143 Listing program send_access.pl 6) Berikut listing program send_error.pl seperti pada gambar 4.144 #!/usr/bin/perl use strict; use warnings; use DBI; my %conf = ( "table_name" => "error_log" ); if(@ARGV < 2) { print "Usage: " . __FILE__ . " {log path(s)} {mysql db credentials}\n" . "Example: " . __FILE__ . " \"/dir1/log1, /dir2/log2\" " . "\"db_host:db_database:db_username:db_password\"\n\n"; exit; } my my my my
($arg_logs) = $ARGV[0]; ($arg_db) = $ARGV[1]; @logs = split(',', $arg_logs); @db = split(':', $arg_db);
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
80
if(@db < 4) { print "Failed settings\n\n"; exit; }
to
continue,
invalid
DB
configuration
my $lines = 0; foreach(@logs) { my $log = $_; $log =~ s/^\s+//; # rem lead spaces $log =~ s/\s+$//; # rem tail spaces processLog($log); } print "\nTotal log entries inserted: " . $lines . "\n\n"; sub processLog { no warnings; my $log = $_[0]; print "\nProcessing log \"" . $log . "\"...\n"; open my $data, $log or die "\nFailed to open log file: \"" . $log . "\"\n\n"; my $dbc = DBI->connect('DBI:mysql:' . $db[1] . ':' . $db[0], $db[2], $db[3], { RaiseError => 1 }) or die "\nFailed to connect to database \"" . $db[1] . "\""; initDB($dbc); while(my $line = <$data>) { chomp($line); $line =~ s/'/\\'/g; # ' to \' for db if(length($line) > 1) { my ($created, $type, $ip, $msg) = $line =~ m/^\[([^\]]+)\]\s\[([^\]]+)\]\s\[(?:client\s)?([^\]]+)\]\s?( .*)/; my $conf{'table_name'}
$q
=
"INSERT
IGNORE
INTO
"
.
. "(log, stored, created, type, ip, message, mhash) VALUES('" . $log . "', NOW(),'" . $created . "','" . $type . "','" . $ip . "','" . $msg . "',md5('" . $msg . "'));"; my $dbs = $dbc->prepare($q); $lines = $lines + $dbs->execute() or print "\nFailed to insert line \"" . $line . "\"\n"; } } $dbc->disconnect;
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
81
close $data; close $log; # flush log file `echo '' > $log`; } my $is_db_ready = 0; sub initDB { if(!$is_db_ready) { print "Initializing database...\n"; my $dbc = $_[0]; my $dbs = $dbc->prepare(" CREATE TABLE IF NOT EXISTS `" . $conf{'table_name'} . "` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `log` varchar(255) NOT NULL, `stored` timestamp NULL DEFAULT NULL, `created` varchar(255) DEFAULT NULL, `type` varchar(50) DEFAULT NULL, `ip` varchar(255) DEFAULT NULL, `message` mediumtext NOT NULL, `mhash` char(32) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `entry_unique` (`log`,`type`,`mhash`) ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; "); $dbs->execute() or die "\nFailed to execute create table \"" . $conf{'table_name'} . "\" query\n"; $is_db_ready = 1; } }
Gambar 4.144 Listing program send_error.pl 7) Penggunaan script perl untuk memasukan log http kepada network monitoring server ditulis seperti gambar 4.145
Gambar 4.145 Penggunaan script perl 8) Tuliskan command line seperti gambar 4.146 untuk eksekusi program perl
Gambar 4.146 Eksekusi program untuk menyimpan log 9) Tampilan apabila script telah dijalankan maka muncul pemberitahuan bahwa di network monitoring server akan terisi data seperti pada gambar 4.147
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
82
Gambar 4.147 Notifikasi hasil penyimpanan log kedalam database 10) Hasil ketika data access log telah dimasukan kedalam database httplogging akan muncul seperti gambar 4.148. Data error log hasilnya ditampilkan seperti pada gambar 4.149
Gambar 4.148 Penampilan access log ketika data dimasukan
Gambar 4.149 Penampilan error log ketika data dimasukan 11) Pendefinisian script perl pada crontab agar script berjalan otomatis setiap 10 menit. Letak pada file /etc/crontab dan sisipkan script seperti gambar 4.150 */10 * * * * root /home/nagios/perl/access_mysql.pl "/var/log/httpd-access.log" "203.6.148.199:httplogging:loghttp:lognagios" */10 * * * * root /home/nagios/perl/error_mysql.pl "/var/log/httpd-error.log" "203.6.148.199:httplogging:loghttp:lognagios"
Gambar 4.150 Pendefinisian script perl pada crontab 12) Pengubahan nama tabel disesusaikan dengan kebutuhan dan nama host untuk network monitoring server.
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
83
Gambar 4.151 Pengubahan nama tabel pada script perl Pembuatan file query.php dilakukan untuk menampilkan hasil log ke dalam halaman html.
or
die("Gagal
// write your SQL query here (you may use parameters from $_GET or $_POST if you need them) $query = mysql_query('select ip_address, count(*) as count from accessblogstaff group by ip_address order by count desc limit 20;'); $table = array(); $table['cols'] = array( /* Disini kita mendefinisikan fata pada tabel database * masing-masing kolom akan kita ubah menjadi array * Kolom tersebut adalah parameter (string) dan nilai (integer/number) * Pada bagian ini kita juga memberi penamaan pada hasil chart nanti */ array('label' => 'ip_address', 'type' => 'string'), array('label' => 'Jumlah', 'type' => 'number') ); // melakukan query yang akan menampilkan array data $rows = array(); while($r = mysql_fetch_assoc($query)) { $temp = array(); // masing-masing kolom kita masukkan sebagai array sementara $temp[] = array('v' => $r['ip_address']); $temp[] = array('v' => (int) $r['count']); $rows[] = array('c' => $temp); } // mempopulasi row tabel $table['rows'] = $rows; // encode tabel ke bentuk json $jsonTable = json_encode($table); // set up header untuk JSON, wajib. header('Cache-Control: no-cache, must-revalidate'); header('Expires: Mon, 30 Jul 2014 05:00:00 GMT'); header('Content-type: application/json'); // menampilkan data hasil query ke bentuk json echo $jsonTable; ?>
Gambar 4.152 Penampilan halaman query.php
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
84
Pembuatan file chart.php dilakukan untuk membuat class yang merender halaman chart dari Google API. <script type="text/javascript" src="https://www.google.com/jsapi"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min. js"> <script type="text/javascript"> // Meload paket API dari Google Chart google.load('visualization', '1', {'packages':['corechart']}); // Membuat Callback yang meload API visualisasi Google Chart google.setOnLoadCallback(drawChart); function drawChart() { var json = $.ajax({ url: 'query.php', // file json hasil query database dataType: 'json', async: false }).responseText; // Mengambil nilai JSON var data = new google.visualization.DataTable(json); var options = { title: 'Access staff.uns.ac.id', colors: ['#88d066'], width: 1200, height: 600, vAxis: {title: "IP Address"}, hAxis: {title: "Total Request"} }; // API Chart yang akan menampilkan ke dalam div id var chart = new google.visualization.BarChart(document.getElementById('tampil_char t')); chart.draw(data, options); }
Gambar 4.153 Pembuatan file chart.php Pembuatan file tampilerror.php dilakukan untuk menampilkan hasil error log pada remote host. Error log http://www.staff.uns.ac.id
";
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
85
$query = mysql_query("select * from errorblogstaff order by id desc limit 30;", $link); echo "
"; echo "
"; echo " No | Date and Time | Request IP | Message |
"; $i=1; while ($baris = mysql_fetch_array($query, MYSQL_ASSOC)) { printf(" %s | %s | %s | %s |
", $i, $baris["created"], $baris["ip"], $baris["message"]); $i++; } echo "
"; echo "
"; mysql_close($link); ?>
Gambar 4.154 Penampilan file tampilerror.php 4.14 ANALISA LOG DAN HISTORY Pada perancangan log dan history pada network monitoring server dikerjakan sesuai langkah kerja maka dihasilkan proses skema jalannya berupa penyimpanan log dari nagios.log serta penyimpanan log http server. Skema jalannya network monitoring server digambarkan seperti gambar 4.155
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
86
Gambar 4.155 Proses skema jalannya penyimpanan log dan history Proses jalannya penyimpanan log pada network monitoring server menggunakan aplikasi ndoutils. Ndoutils mengeksekusi module ndomod yang berjalan
pada
service
untuk
meload
nagios.log
dari
directory
/var/spool/nagios/nagios.log. Hasil yang diberikan berupa text dan dilakukan pendefinisian berupa letak database serta jenis database pada proses log2ndo utility. Proses yang dilakukan selanjutnya mengeksekusi service ndomod daemon untuk memasukan data text dari nagios.log ke dalam database mysql. Proses penyimpanan dilakukan dengan protocol tcp/unix socket yang selalu mengupdate data secara terus menerus. Network monitoring server akan request kepada remote host berupa proses pengecekan chek_http. Check_http dilakukan untuk melihat proses jalannya web server pada remote host. Request yang diberikan oleh web client ketika request kepada web server akan menyimpan data berupa http-error.log dan httpaccess.log. File tersebut diproses oleh script perl yang berfungsi memecah karakter ke dalam beberapa bagian. Hasil text tersebut di parsing kemudian dimasukan kedalam database mysql. Proses crontab untuk penjadwalan dilakukan guna memastikan data yang dikirim akan selalu update ke dalam network monitoring server.
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
87
Tabel 4.5 dijelaskan script dari send_access.pl pada network monitoring server. Tabel 4.6 dijelaskan script dari send_error.pl pada network monitoring server. Tabel 4.5
Penjelasan script send_access.pl
Script
Penjelasan
#!/usr/bin/perl
Pendefinisian lokasi progam perl
use strict; use warnings; use DBI;
Program mengimport library dari perl.
Warning
menampilkan
pesan dan DBI untuk koneksi ke dalam database my %conf = ( "table_name" => "access_log" );
Pendefinisian nama tabel yang dipergunakan untuk menyimpan log database
if(@ARGV < 2) { print "Usage: " . __FILE__ . " {log path(s)} {mysql db credentials}\n" . "Example: " . __FILE__ . " \"/dir1/log1, /dir2/log2\" " . "\"db_host:db_database:db_username:d b_password\"\n\n"; exit; }
Pendefinisian cara penggunaan program
log
http.
Apabila
database tidak terhubung maka muncul notifikasi failed
my ($arg_logs) = $ARGV[0]; my ($arg_db) = $ARGV[1]; my @logs = split(',', $arg_logs); my @db = split(':', $arg_db); if(@db < 4) { print "Failed to continue, invalid DB configuration settings\n\n"; exit; } my $lines = 0; foreach(@logs) { my $log = $_; $log =~ s/^\s+//; # rem lead spaces $log =~ s/\s+$//; # rem tail
Proses perulangan untuk membuka file log. Proses penyimpanan selesai muncul notifikasi Total log entries
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
88
spaces processLog($log); } print "\nTotal log entries inserted: " . $lines . "\n\n"; sub processLog { no warnings; my $log = $_[0]; print "\nProcessing log \"" . $log . "\"...\n"; open my $data, $log or die "\nFailed to open log file: \"" . $log . "\"\n\n"; my $dbc = DBI>connect('DBI:mysql:' . $db[1] . ':' . $db[0], $db[2], $db[3], { RaiseError => 1 }) or die "\nFailed to connect to database \"" . $db[1] . "\"";
Pada program disamping terdapat no warning. Perintah tersebut untuk tidak menampilkan error pada program. Langkah
selanjutnya
proses
pembukaan letak log http dan memulai koneksi database. Perlu proses pembagian per baris dengan perintah chomp berdasarkan regular expressions yang telah didefinisikan.
initDB($dbc); while(my $line = <$data>) { chomp($line); $line =~ s/'/\\'/g; # ' to \' for db if(length($line) > 1) { my ($host, $ident_user, $auth_user, $date, $time, $time_zone, $method, $url, $protocol, $status, $bytes) = $line =~ /^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\] "(\S+) (.+?) (\S+)" (\S+) (\S+)$/; my $q = "INSERT IGNORE INTO " . $conf{'table_name'} . "(log, stored, created, times, byte, ip_address, message, mhash) VALUES('" . $log . "', NOW(),'" . $date . "','" . $time . "','" . $bytes . "','" . $host . "','" . $method . " " . $protocol . " ". $url . "',md5('" . $url . "'));";
Pendefinisian regex dibuat untuk mendapatkan variabel data yang akan
dimasukan
kedalam
database. Data tersebut berupa ip address dan message log. Berikut daftar penjelasan regex pada script send_access.log 1. / --> regex dimulai 2. ^ --> memulai titik permulaan 3. (\S+) --> penentuan $host 4. \ --> space 5. (\S+) --> penentuan $ident_user 6. \ --> space 7. (\S+) --> penentuan $auth_user 8. \ --> space
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
89
my
$dbs
=
$dbc-
>prepare($q); $lines = $lines + $dbs->execute() or print "\nFailed to insert line \"" . $line . "\"\n"; } }
9. \[([^:]+) --> penentuan $date 10. : --> : 11. (\d+:\d+:\d+) --> penentuan $time 12. \ --> space
$dbc->disconnect;
13. ([^\]]+)--> penentuan
close $data; close $log;
$time_zone
`echo '' > $log`;
14. \]\ " --> string '] "'
}
15. (\S+) --> penentuan $method 16. \ --> space 17. (.+?) --> penentuan $url 18. \ --> space 19. (\S+) --> penentuan $protocol 20. "\ --> string '" ' 21. (\S+)--> penentuan $status 22. \ --> space 23. (\S+)--> penentuan $bytes 24. $ --> titik selesai 25. /x; --> regex berakhir
my $is_db_ready = 0; sub initDB { if(!$is_db_ready) { print "Initializing database...\n";
Potongan merupakan
$dbs
=
disamping
proses
pembuatan
tabel untuk memasukan data log network monitoring server
my $dbc = $_[0]; my
program
$dbc-
>prepare(" CREATE TABLE IF NOT EXISTS `" . $conf{'table_name'} . "` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `log` varchar(255) NOT NULL, `stored` timestamp NULL DEFAULT NULL,
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
90
`created` varchar(255) DEFAULT NULL, `times` varchar(255) DEFAULT NULL, `byte` varchar(50) DEFAULT NULL, `ip_address` varchar(255) DEFAULT NULL, `message` mediumtext NOT NULL, `mhash` char(32) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `entry_unique` (`log`,`byte`,`mhash`) ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; "); "\nFailed \""
$dbs->execute() or die to execute create table
. $conf{'table_name'} . "\" query\n"; $is_db_ready = 1; } }
Tabel 4.6
Penjelasan script send_error.pl
Script
Penjelasan
#!/usr/bin/perl
Pendefinisian lokasi progam perl
use strict; use warnings; use DBI;
Program mengimport library dari perl.
Warning
menampilkan
pesan dan DBI untuk koneksi ke dalam database my %conf = ( "table_name" => "remoteaccess" );
Pendefinisian nama tabel yang dipergunakan untuk menyimpan log database
if(@ARGV < 2) { print "Usage: " . __FILE__ . " {log path(s)} {mysql db credentials}\n" . "Example: " . __FILE__ . " \"/dir1/log1, /dir2/log2\" "
Pendefinisian cara penggunaan program
log
http.
Apabila
database tidak terhubung maka
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
91
. "\"db_host:db_database:db_username:d b_password\"\n\n"; exit; }
muncul notifikasi failed
my ($arg_logs) = $ARGV[0]; my ($arg_db) = $ARGV[1]; my @logs = split(',', $arg_logs); my @db = split(':', $arg_db); if(@db < 4) { print "Failed to continue, invalid DB configuration settings\n\n"; exit; } my $lines = 0; foreach(@logs) { my $log = $_; $log =~ s/^\s+//; # rem lead spaces $log =~ s/\s+$//; # rem tail spaces processLog($log); } print "\nTotal log entries inserted: " . $lines . "\n\n"; sub processLog { no warnings; my $log = $_[0]; print "\nProcessing log \"" . $log . "\"...\n"; open my $data, $log or die "\nFailed to open log file: \"" . $log . "\"\n\n"; my $dbc = DBI>connect('DBI:mysql:' . $db[1] . ':' . $db[0], $db[2], $db[3], { RaiseError => 1 }) or die "\nFailed to connect to database \"" . $db[1] . "\""; initDB($dbc); while(my $line = <$data>) { chomp($line); $line =~ s/'/\\'/g; # ' to \' for db if(length($line) > 1) {
Proses perulangan untuk membuka file log. Ketika proses penyimpanan telah selesai maka muncul notifikasi Total log entries
Pada program disamping terdapat no warning. Perintah tersebut untuk tidak menampilkan error pada program. Langkah
selanjutnya
proses
pembukaan letak log http dan memulai koneksi database. Perlu proses pembagian per baris dengan perintah chomp berdasarkan regular expressions yang telah didefinisikan. Pendefinisian regex dibuat untuk
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
92
my ($created, $type, $ip, $msg) = $line =~
mendapatkan variabel data yang akan
m/^\[([^\]]+)\]\s\[([^\]]+)\]\ s\[(?:client\s)?([^\]]+)\]\s?(.*)/; my $q = "INSERT IGNORE INTO " . $conf{'table_name'} . "(log, stored, created, type, ip, message, mhash) VALUES('" . $log . "', NOW(),'" . $created . "','" . $type . "','" . $ip . "','" . $msg . "',md5('" . $msg . "'));"; my $dbs = $dbc>prepare($q); $lines = $lines + $dbs->execute() or print "\nFailed to insert line \"" . $line . "\"\n"; } }
dimasukan
kedalam
database. Data tersebut berupa ip address dan message log.
$dbc->disconnect; close $data; close $log; # flush log file `echo '' > $log`; } my $is_db_ready = 0; sub initDB { if(!$is_db_ready) { print "Initializing database...\n"; my $dbc = $_[0]; my $dbs = $dbc>prepare(" CREATE TABLE IF NOT EXISTS `" . $conf{'table_name'} . "` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `log` varchar(255) NOT NULL, `stored` timestamp NULL DEFAULT NULL, `created` varchar(255) DEFAULT NULL, `type` varchar(50) DEFAULT NULL, `ip` varchar(255) DEFAULT NULL, `message` mediumtext NOT NULL,
Potongan merupakan
program
disamping
proses
pembuatan
tabel untuk memasukan data log network monitoring server
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
93
`mhash`
char(32)
PRIMARY
KEY
NOT NULL, (`id`), UNIQUE KEY `entry_unique` (`log`,`type`,`mhash`) ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; "); $dbs->execute() or die "\nFailed to execute create table \"" . $conf{'table_name'} . "\" query\n"; $is_db_ready = 1; } }
Pengolahan data hasil penyimpanan log web server dilakukan dengan membuat sebuah grafik yang bisa menampilkan status log server. Data yang ditampilkan berdasarkan request ip address terbanyak yang mengakses web server. Grafik juga menampilkan jumlah log harian pada web server yang diakses. Error log web server ditampilkan dalam sebuah tabel yang dilihat pada web interface network monitoring server. Log tersebut berisikan ip address yang request dan pesan error yang terjadi pada web server. Tampilan grafik untuk log access dilihat pada gambar 1.156 dan gambar 1.57. Log error ditampilkan seperti pada gambar 1.58
Gambar 4.156 Penampilan log access pada ip address
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
94
Gambar 4.157 Penampilan log access pada log harian
Gambar 4.158 Penampilan log error web server 4.15 IMPLEMENTASI WEB INTERFACE KONFIGURASI Pada perancangan web interface untuk konfigurasi digunakan aplikasi nagiosql. Skema instalasi nagiosql pada network monitoring server yaitu sebagai berikut : 1) Nagiosql memerlukan beberapa spesifikasi minimum ketika instalasi pada server. Kebutuhan instalasinya yaitu sebagai berikut (Martin, 2012) : a. Apache web server b. MySQL Server version 4.1 c. PHP version 5.2 d. Nagios 2.x or 3.x
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
95
2) Pembuatan directory untuk penyimpanan file host dan service dilakukan kemudian pengumbahan permission pada directory yang telah dibuat dengan user dan group nagios
Gambar 4.159 Pembuatan directory pada nagiosql
Gambar 4.160 Pengubahan permission pada directory 3) Penyisipan script seperti pada gambar 4.161 dilakukan pada file httpd.conf
Gambar 4.161 Penyisipan script pada file httpd.conf 4) Proses restart service apache24 dilakukan untuk membaca file konfigurasi yang baru dipasang
Gambar 4.162 Pembacaan file konfigurasi yang baru 5) Pembukaan
alamat
http://
/nagiosql/install/index.php
dilakukan untuk memulai tahapan instalasi. Instalasi awal muncul seperti gambar 4.163
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
96
Gambar 4.163 Proses awal instalasi nagiosql 6) Proses instalasi dengan klik START INSTALLATION dan memulai proses pengecekan requirements software
Gambar 4.164 Pengecekan requirement software 7) Pengaturan jenis koneksi dilakukan untuk mendefinisikan letak penyimpanan ke
database.
Konfigurasi
nagiosql
path
didefinisikan
dengan
/usr/local/www/nagiosql/ serta konfigurasi nagios config path didefinisikan dengan /usr/local/etc/nagios/
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
97
Gambar 4.165 Pengaturan nagiosql untuk database 8) Tampilan apabila nagiosql telah berhasil diinstall seperti pada gambar 4.166. Langkah terakhir hapus directory install untuk mengakhiri proses instalasi.
Gambar 4.166 Penampilan instalasi nagiosql 4.16 ANALISA HASIL WEB INTERFACE Implementasi dari web interface telah dilakukan dan diujikan untuk membuat file konfigurasi server. Langkah yang dilakukan untuk pembuatan konfigurasi server yaitu sebegai berikut : 1) Pembuatan konfigurasi server dilakukan dengan membuat host yang mendefinisikan nama server dan ip address
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
98
Gambar 4.167 Pembuatan host untuk server staff.uns.ac.id 2) Pendefinisian service juga dilakukan untuk host yang telah dikonfigurasi seperti pada gambar 4.168
Gambar 4.168 Pendefinisian service pada staff.uns.ac.id 3) Pengecekan file konfigurasi dilakukan untuk mengetahui kesalahan pada file konfigurasi host yang telah terbuat
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
99
Gambar 4.169 Proses pengecekan file konfigurasi host 4) Restart service nagios untuk pembacaan file konfigurasi baru pada network monitoring server
Gambar 4.170 Proses restart service pada network monitoring server
commit to user