Seminar Nasional Sistem dan Informatika 2012; Bali, November 17, 2012

MONITORING PERFORMA PERANGKAT KERAS PADA SERVER DENGAN PSUTIL PYTHON LIBRARY DAN RESTFUL WEB SERVICE MENGGUNAKAN DEPLOY ENGINE
Winarno Sugeng1) Muhammad Ichwan2) Agus Brata3) Institut Teknologi Nasional, Bandung winarno.sugeng@gmail.com1) ichwanm@yahoo.com2) agusbrata@gmail.com3) ABSTRACT The server has a central role in an information system on a network, therefore the stability of the server's performance must be maintained to keep it in optimal condition. However problems often arise interfere with the functionality and stability of the server, especially in terms of hardware. Then to support the stability of server performance needs to do maintenance on a regular basis and monitoring of all hardware resources on a server that works in realtime. Monitoring of the hardware is done by implement the techniques of monitoring using a computerized system, which can provide the latest information about the activities of all hardware resources for administrator. To complete it, monitor server performance will be implemented by utilizing Psutil python library and Restful web service using the deploy engine system. So expect the evaluation process can be quickly performed when server susceptible to interference, so as not to adversely affect to the overall server performance and activity of the system are connected in a network. Keyword : performance monitoring hardware, psutil python library, restful web service

1.

Pendahuluan

Sistem monitoring performa perangkat keras merupakan teknik pemantauan yang bekerja untuk mengidentifikasi adanya gejala yang sering terjadi dan berpotensi mengganggu stabilitas performa pada server. Stabilitas performa server menjadi prioritas utama, karena fungsinya yang sentral terhadap seluruh sistem yang terhubung dalam jaringan. 1.1 Latar Belakang Server memiliki peran sentral dalam sebuah sistem informasi pada suatu jaringan, oleh karena itu stabilitas performa server harus tetap terjaga agar selalu dalam kondisi optimal. Namun seringkali timbul masalah yang mengganggu fungsionalitas dan stabilitas server terutama dari sisi perangkat keras. Masalah umum yang sering ditemukan ditandai dengan gejala yang berbeda-beda, seperti komputer error akibat penggunaan CPU yang terlalu berat, server mengalami memory dump akibat penggunaan memory terlalu besar atau secara tiba-tiba seluruh komputer dalam jaringan tidak dapat mengakses sebuah web yang disebabkan karena mesin server down. Hal tersebut mengakibatkan seluruh kinerja server mengalami kelumpuhan dan aktifitas pengguna menjadi terganggu, oleh karena itu untuk menunjang stabilitas performa server perlu dilakukan perawatan secara berkala dan melakukan pemantauan secara realtime terhadap seluruh sumber daya perangkat keras yang bekerja pada server. Pemantauan yang dilakukan adalah dengan menerapkan teknik-teknik monitoring menggunakan sistem komputerisasi, yang mengadobsi beberapa disiplin ilmu. Disiplin ilmu yang diterapkan kedalam aplikasi bertujuan agar dapat memberikan informasi terbaru dan riil mengenai aktifitas seluruh sumber daya perangkat keras yang bekerja kepada administrator. Dengan adanya sistem monitoring yang mencakup seluruh environtment server, administrator dapat mempersiapkan tindakan-tindakan yang tepat apabila sistem mengalami gangguan. Sehingga diharapkan proses evaluasi dapat dengan cepat dilakukan pada saat server mengalami gangguan, agar tidak berdampak buruk kepada performa server secara keseluruhan dan aktifitas sistem yang terhubung dalam jaringan. 1.2 Tujuan Tujuan penelitian ini adalah melakukan pembangunan sistem monitoring performa perangkat keras pada server secara realtime, dengan psutil python library dan restful web service menggunakan deploy engine. 1.3 Rumusan Masalah Dari penjelasan latar belakang dalam point 1.1., maka dapat dirumuskan suatu permasalahan sebagai berikut. 1) Bagaimana cara merancang dan menampilkan informasi monitoring performa perangkat keras pada server dalam bentuk web dan email, yang meliputi informasi CPU usage, memory usage, virtual memory usage, hardisk usage dan IO network traffic serta identifikasi sistem up/down mesin server? 2) Apa saja kebutuhan perangkat keras dan perangkat lunak untuk membangun sistem monitoring performa perangkat keras pada server ini ? 1.4 Batasan Masalah Untuk memfokuskan tujuan penelitian maka pembahasan akan dibatasi. Adapun yang menjadi batasan masalah adalah sebagai berikut. 1) Kebutuhan user interface menggunakan layanan web monitoring sistem yang dapat diakses melalui sebuah browser. 1

Seminar Nasional Sistem dan Informatika 2012; Bali, November 17, 2012

2) Performa perangkat keras yang di pantau meliputi CPU usage, memory usage, virtual memory usage, hardisk usage dan IO network traffic serta identifikasi up/down mesin server? 3) Jenis identifikasi gejala dilakukan dengan menggunakan batasan maksimum persentase (75 %) dalam pemakaian CPU usage, memory usage, virtual memory usage, dan hardisk usage, serta diteruskan dengan memberi peringatan kepada administrator melalui email. 4) Setiap server dibangun menggunakan operating sistem ubuntu server dengan versi 32 bit dan 64 bit.

2. Landasan Teori
2.1 Monitoring[1] Monitoring (bahasa indonesia : pemantauan) adalah pemantauan yang dapat dijelaskan sebagai kesadaran (awarenees) tentang apa yang ingin diketahui, pemantauan berkadar tingkat tinggi dilakukan agar dapat membuat pengukuran melalui waktu yang menunjukan pergerakan ke arah tujuan atau menjauh dari itu. Monitoring akan memberikan informasi tentang status dan kecenderungan bahwa pengukuran dan evaluasi yang diselesaikan berulang dari waktu ke waktu, pemantauan umumnya dilakukan untuk tujuan tertentu, untuk memeriksa terhadap proses berikut objek atau untuk mengevaluasi kondisi serta kemajuan menuju tujuan hasil manajemen atas efek tindakan dari beberapa jenis antara lain tindakan untuk mempertahankan manajemen yang sedang berjalan. 2.2 Bahasa Pemgrograman Python[2] Python adalah bahasa pemrograman tingkat tinggi yang bersifat interpreter, interaktif, object-oriented dan dapat beroperasi di hampir semua platform, seperti keluarga UNIX, Mac, Windows, amiga, symbian, OS/2 ataupun platform lainnya. Python diklaim sebagai bahasa yang menggabungkan kapabilitas, kemampuan, dengan sintaksis kode yang jelas, serta dilengkapi dengan fungsionalitas pustaka standar yang besar dan komprehensif. Sebagai bahasa tingkat tinggi, python sudah mampu untuk mengkombinasikan sintaks dengan penggunaan modul-modul yang siap pakai dan struktur data tingkat tinggi yang efisien. 2.3 Psutil Python Libarary [3] Psutil adalah modul library python yang menyediakan sebuah interface untuk mengambil informasi pada semua proses yang berjalan dan pemanfaatan sistem (CPU, memory, hardisk) dengan cara yang sederhana menggunakan python. Selain itu psutil mampu membuat fungsi yang mirip dengan tools-tools sederhana seperti yang ada di beberapa sistem operasi, seperti perintah ‘ps’, ‘top’, ‘df’, ‘kill’, ‘free’, ‘lsof’, ‘netstat’, ‘ifconfig’, dan ’nice’. 2.4 RESTful Web Service[4] RESTful Web Service adalah gaya arsitektur perangkat lunak untuk sistem terdistribusi seperti World Wide Web. RESTful telah muncul sebagai model layanan web desain dominan, dimana satu set prinsip arsitektur dapat merancang layanan web yang berfokus pada sumber daya sistem, termasuk bagaimana sumber daya dibahas dan ditransfer melalui jalur HTTP oleh berbagai macam client yang ditulis dalam berbagai bahasa pemrograman.

3. Metodologi Penelitian
Aktifitas yang akan diterapkan dalam pembangunan aplikasi meliputi beberapa tahapan sebagai berikut. 1) Mempelajari bagian-bagian mengenai monitoring performa perangkat keras pada server, 2) Mendeteksi gejala-gejala yang berpengaruh terhadap kinerja perangkat keras, 3) Menentukan disiplin ilmu sebagai landasan teori dan membuat perancangan sistem, 4) Membuat sampel prototype, 5) Membangun sistem prototype menggunakan bahasa pemrograman python, dengan menggunakan modul pendukung dan tools-tools yang dibutuhkan, 6) Melakukan pengembangan sistem, 7) Melakukan penyempurnaan sistem prototype , hasil dari dokumentasi pengembangan sistem.

4. Perancangan
Dalam pembangunan aplikasi yang diberi nama MPHS ini akan dibuat sebuah perancangan yang dapat menunjang seluruh kebutuhan sistem, aktifitas yang dilakukan dengan membuat perencanaan melalui sebuah workflow untuk mengetahui alur sistem serta membuat perancangan flowchart yang dilengkapi dengan sourcecode program dan usecase. 4.1 Workflow Untuk menggambarkan cara kerja sistem dari aplikasi yang dibangun, akan dibuat sebuah workflow. Workflow merupakan suatu gambaran ringkas antara input dan output yang dihasilkan sistem. Gambar 1 merupakan workflow dari aplikasi MPHS yang menggambarkan alur kerja sistem.

2

Seminar Nasional Sistem dan Informatika 2012; Bali, November 17, 2012

Gambar 1. Workflow Berikut ini adalah penjelasan tahapan workflow pada aplikasi MPHS. 1. Administrator membuka sebuah browser melalui pc client, kemudian mengakses url address IP server monitoring yang merupakan tempat penyimpanan aplikasi MPHS (melalui http://192.168.XX.XXX:8000). 2. Setelah tampil laman aplikasi MPHS melalui browser, administrator diharuskan melakukan login untuk proses validasi sistem. Pada saat proses validasi login berhasil, selanjutnya administrator melakukan deploy paket service monitoring terhadap host server menggunakan konektifitas SSH. 3. Setelah proses deploy berhasil, maka file yang terdapat pada paket service monitoring mulai aktif berjalan sebagai sebuah service yang berfungsi untuk menangkap informasi perangkat keras dari server yang dipantau. Seluruh data tangkapan monitoring akan disimpan didalam temp database server menggunakan berkeleydb. 4. Data yang telah disimpan kedalam temp database, kemudian disalurkan kedalam agent RESTful web service, yang berfungsi untuk menyediakan layanan data monitoring. 5. Kemudian data agent dibaca dan ditransfer oleh server monitoring menggunakan menggunakan pymongo sebagai client mongoDB, yang diakses melalui perintah get_data() . 6. Data yang telah diambil oleh updater engine, kemudian disimpan kedalam mongodb sebagai sebuah file log. 7. Kemudian data log diambil kembali oleh updater engine untuk dikonversi menjadi sebuah informasi monitoring , kemudian data tersebut dikirim pada template aplikasi menggunakan STOMP service. 8. Proses get_report() bertujuan untuk mengendalikan informasi yang masuk kedalam template aplikasi secara realtime setiap satu menit sekali. Report yang dikirim akan ditampilkan dalam bentuk grafik, text dan angka. 9. Penyampaian informasi apabila terjadi perubahan pada agent data collection mengenai penggunaan CPU, hardisk dan memory serta apabila mesin host server mengalami down, secara otomatis sistem akan mengirim sebuah notifikasi peringatan melalui email. 4.2 Main Flowchart Flowchart sistem berfungsi untuk menunjukkan alur kerja sistem secara keseluruhan dan menjelaskan urutan dari prosedur-prosedur yang ada di dalam sistem.

Gambar 2. Main Flowchart Gambar 2 merupakan perancangan dari main flowchart sistem yang akan diterapkan pada aplikasi MPHS. Setiap proses memiliki fungsionalitas masing-masing sesuai dengan kebutuhan sistem. Sehingga diharapkan proses pembangunan program dapat dilakukan secara struktural. 3

Seminar Nasional Sistem dan Informatika 2012; Bali, November 17, 2012

4.3 Flowchart Deploy Engine Dalam flowchart deploy engine akan digambarkan bagaimana proses untuk menyalin file monitor engine, checker engine, rest_service engine, Psutil python library dan pembentukan RESTful web serice kedalam host server.

Gambar 3. Flowchart Deploy Engine Gambar 3 merupakan perancangan dari flowchart deploy engine yang akan diterapkan pada aplikasi MPHS. Setiap proses memiliki fungsionalitas masing-masing dan tujuan dari proses deploy ini ialah untuk membentuk paket service monitoring yang berguna untuk memberikan seluruh data-data monitoring dari environtment server yang dipantau. Dalam pembentukan paket service monitoring, RESTful engine memiliki peran penting untuk menyalurkan data-data monitoring dari environtment server. Data-data tersebut merupakan hasil tangkapan monitor engine yang berjalan sebagai service, monitor engine merupakan file yang dikonfigurasi dengan menggunakan script python beserta modul-modul yang memiliki fungsi untuk mengambil seluruh parameter-parameter perangkat keras yang terpasang pada server. Dalam pembangunannya modul psutil library python merupakan core utama dari aplikasi MPHS, karena dengan memanfaatkan fungsi modul tersebut, data-data mengenai performa perangkat keras pada server dapat dikonversi menjadi sebuah informasi yang dapat dimanfaatkan oleh administrator untuk mengetahui status keadaan perangkat keras yang terpasang pada server. Berikut source code yang digunakan untuk mengambil environtment memory pada server. >>import psutil >> psutil.phymem_usage() >>usage(total=19682099920L, used=1168859136L, free=799350784L, percent=9.990999996) >> psutil.phymem_usage().percent >>9.990999996 Source code berikut merupakan program untuk mengambil environtment hardisk. Dimana data penggunaan hardisk, kapasitas total hardisk dan kapasitas hardisk yang masih tersedia dapat ditampilkan menggunakan psutil python library. >>import psutil >>psutil.disk_usage('/') >>usage(total=30699118592L, used=10270355456L, free=18869321728L, percent=33.5) psutil.disk_usage('/').percent >>33.5 4.4 Flowchart Report Dalam flowchart report akan digambarkan bagaimana proses untuk menampilkan informasi monitoring global (seluruh server dapat dilihat berdasarkan IP) dan menampilkan informasi detail (grafik, text dan angka).

Gambar 4. Flowchart Report Gambar 4 merupakan perancangan dari flowchart report yang akan diterapkan pada aplikasi MPHS. Setiap proses memiliki fungsionalitas masing-masing dan tujuan dari proses report ini ialah untuk menampilkan informasi monitoring secara keseluruhan. Selaint itu pada tampilan global aplikasi, sistem mampu melakukan remove_data pada host server. 4

Seminar Nasional Sistem dan Informatika 2012; Bali, November 17, 2012

4.5 Use Case Use case diagram merupakan diagram yang menggambarkan semua kasus (case) yang akan ditangani oleh sistem dan perangkat lunak dengan beberapa aksi dari pelakunya.

Gambar 5. Use Case Gambar 5 menjelaskan interaksi antara administrator (aktor) dengan komponen-komponen utama pada sistem yaitu konfigurasi webserver pada sistem root server monitoring, dan aktifitas deploy serta view informasi monitoring pada sistem aplikasi MPHS.

5. Implementasi
Pada tahap implementasi akan dilakukan instalasi kebutuhan sistem dan konfigurasi sistem untuk menjalankan aplikasi MPHS. Tahapan tersebut dilakukan pada PC server monitoring dan PC server yang akan di deploy. 5.1 Instalasi Kebutuhan Server Monitoring Untuk membangun aplikasi MPHS dibutuhkan library python dan beberapa modul library python yang berguna untuk mempermudah proses development program. Tahap instalasi kebutuhan sistem pada server monitoring ini secara keseluruhan dibangun menggunakan terminal, ketentuan tersebut digunakan pada server monitoring. 1) Update Repository Ubuntu Tahap pertama lakukan update repository operating sistem ubuntu desktop pada PC server monitoring. # apt-get update 2) Instalasi Library Python, Ssh dan Gcc Melakukan instalasi seluruh kebutuhan library python untuk melakukan development program dan melakukan instalasi konektifitas SSH (secure shell) serta compiler C yang digunakan untuk mengeksekusi pemrograman python. # apt-get install python-dev python-setuptools python-pip mongodb gcc openssh-server Fungsi yang dijalankan pada perintah diatas adalah sebagai berikut. [1] Python-dev, instalasi python development, yang berfungsi untuk mengintegrasi semua modul eksternal python. [2] Python-setuptools, utilitas tambahan yang dapat mempermudah instalasi paket dari pypi.python.org. [3] Python-pip, pip adalah paket library tambahan pengganti untuk easy_install (installer python) [4] Mongodb, database yang akan digunakan untuk pembangunan sistem. [5] Gcc, berfungsi sebagai kompiler program yang digunakan untuk mengeksekusi pemroraman python. [6] Openssh-server, berfungsi sebagai protokol jaringan yang memungkinkan pertukaran data melalui saluran aman. 3) Instalasi Modul Library Python Tahapan selanjutnya melakukan instalasi modul-modul pendukung melalui file requirements.txt yang ada dalam folder “MPHS”, dalam requirements.txt ini sudah dipersiapkan list modul library python dan tools yang dibutuhkan untuk konfigurasi aplikasi MPHS. Tujuan dibuatnya file requirements.txt ini adalah agar proses instalasi yang dibutuhkan oleh sistem dapat diakses dengan satu kali perintah, untuk itu dibuat sebuah terobosan baru dengan mengabungkan seluruh kebutuhan modul-modul pendukung menjadi satu paket. # pip install –r requirements.txt 5.2 Instalasi Kebutuhan Sistem Host Server Tahap instalasi kebutuhan sistem host server ini secara keseluruhan dibangun menggunakan terminal. Pada implementasi host server akan dilakukan pada Mail server yang telah dilakukan instalasi ubuntu server 32 bit. 1) Update Repository Ubuntu Tahap pertama lakukan update repository operating sistem ubuntu server pada PC host server. # apt-get update 5

Seminar Nasional Sistem dan Informatika 2012; Bali, November 17, 2012

2) Instalasi openssh-server dan Gcc Setelah proses update repository telah berhasil, selanjutnya lakukan instalasi openssh-server, pada umumnya instalasi telah dilakukan pada saat melakukan konfigurasi package saat instalasi pembangunan operating sistem. Kemudian instalasi GNU Compiler Collection atau gcc merupakan salah satu dari kompiler C yang digunakan untuk melakukan kompilasi program. Tidak hanya bahasa C yang memerlukan compiler gcc, karena bahasa pemrograman python juga memerlukan bantuan gcc untuk melakukan kompilasi dari script yang telah dibuat untuk dijalankan pada host server. # sudo apt-get install openssh-server gcc 5.3 Konfigurasi Sistem Server Monitoring Setelah melakukan instalasi kebutuhan sistem library, tahapan selanjutnya adalah dengan melakukan beberapa konfigurasi agar aplikasi monitoring performa server dapat berjalan pada PC server monitoring. 1) Konfigurasi Django Untuk mulai menjalankan django web server kita dapat mengubah konfigurasinya dengan membentuk sebuah daemon yang dapat bekerja dibelakang layar. #python manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 & 2) Konfigurasi STOMP Client (Updater Proses) Tahap selanjutnya adalah menjalankan updater engine melalui terminal. Updater engine berfungsi untuk mengambil source yang dihasilkan oleh monitor engine, tujuannya agar data terbaru yang telah diambil dapat ditampilkan pada web. #python updater.py > /dev/null 2>&1 & Jika kedua konfigurasi ini telah berhasil dilakukan, maka proses development server monitoring telah selesai dan aplikasi MPHS sudah dapat digunakan.

6. Pengujian
Berikut adalah beberapa pengujian yang dilakukan dalam penelitian. Pengujian tersebut mencakup bagaimana sistem memberikan respon setelah administator melakukan deploy, diantaranya menampilkan notifikasi email ketika penggunaan CPU dan memory sedang tinggi dan menampilkan informasi monitoring performa perangkat keras melalui tampilan grafik. Dimana setiap grafik menampilkan ruang lingkup yang berbeda-beda sesuai dengan jenis perangkatnya. 6.1 Tampilan Notifikasi Gangguan Gambar 6 merupakan bentuk peringatan yang dikirim oleh sistem melalui email ketika penggunaan memory, CPU dan hardisk melebihi batas penggunaan. Hal tersebut menandakan bahwa persentase peggunaan salah satu perangkat keras melebihi 75%, sehingga hal tersebut diindikasi oleh sistem sebagai hal yang tidak wajar.

Gambar 6. Notifikasi Email 6.2 Tampilan Informasi Monitoring Dalam informasi monitoring akan dilakukan pengujian sistem terhadap performa perangkat keras pada server. Dimana seluruh parameter ditampilkan melalui sebuah grafik,teks dan angka oleh aplikasi MPHS. Tampilan utama informasi monitoring pada aplikasi MPHS terdiri dari empat buah grafik yang berguna untuk mengukur performa dari sumber daya perangkat keras yang sedang bekerja. Berikut rincian setiap grafik hasil monitoring aplikasi MPHS.

Gambar 7. Tampilan Informasi Memory dan Swap Memory Gambar 7 merupakan tampilan informasi monitoring sumber daya memory dan swap memory. Pada tampilan tersebut penggunaan memory diinisialisasikan menggunakan garis linear berwarna merah sedangkan swap berwarna hijau. 6

Seminar Nasional Sistem dan Informatika 2012; Bali, November 17, 2012

Gambar 8 Tampilan Informasi Hardisk Gambar 8 merupakan tampilan dari informasi penggunaan hardisk pada host server, diinisialisasikan menggunakan garis linear berwarna biru muda.

Gambar 9 Tampilan Informasi CPU Gambar 9 merupakan tampilan dari informasi penggunaan CPU pada host server, diinisialisasikan menggunakan garis linear berwarna biru tua. Seluruh tampilan grafik tersebut memanfaatkan Highcharts JS, yang memiliki fitur untuk mengkonversi grafik menjadi sebuah bentuk image (.jpg , .png) serta dapat melakukan zoom terhadap uraian waktu terkecil. Berikut tampilan detail mengenai informasi monitoring dari aplikasi MPHS yang akan ditunjukan pada Gambar 10.

Gambar 10 Tampilan Informasi Monitoring

7. Penutup
7.1 Kesimpulan Penelitian ini telah berhasil melakukan pengembangan sistem monitoring performa perangkat keras pada server secara realtime, dengan memanfaatkan modul psutil python library dan restful web service menggunakan deploy engine. Namun penelitian ini masih memerlukan adanya pengembangan dan penyempurnaan lebih lanjut agar dapat meningkatkan optimalisasi dan kehandalan dari aplikasi MPHS.

7

Seminar Nasional Sistem dan Informatika 2012; Bali, November 17, 2012

Besar harapan, pengembangan selanjutnya dapat melakukan monitoring performa server yang dapat diimplementasikan pada operating sistem selain ubuntu (32 dan 64 bit) dan memperbanyak fitur yang dapat menunjang aspek inovatif dan kenyamanan bagi pengguna aplikasi MPHS. Salah satunya dengan mengembangkan sistem penyampaian informasi menggunakan layanan sms gateway, yang disertai dengan pengenalan gejala yang lebih banyak. Sehingga diharapkan pengembangan dari aplikasi MPHS ini tidak berhenti pada penelitian ini.

Daftar Pustaka
[1] Emergency Operations Manual.(2002). “Monitoring, Evaluation and Audit in Emergencies”, Technical
Reference Paper prepared by the OIG and EPC. [2] Noprianto. (2002). “Python dan Pemrograman LINUX”. Penerbit ANDI : Yogyakarta. [3] Turin, G.R dan Jersey, J.L.N.(2009).“Psutil : A cross-platform process and system utilities module for Python”. Turin, Italy. [4] Alex Rodriguez.(2008).”RESTful Web services: The basics”. IBM corporation.

8