IPutil for Monitoring High Performance Computing system
Hari ini tanggal 22 Juli 2014, bertepatan dengan penetapan rekapitulisasi total perolehan suara Capres oleh KPU. Saya berharap kepada Presiden terpilih agar menjalankan amanah kepemimpinan ini dengan sebaik-baiknya, semoga rakyat Indonesia semakin sejahtera dibawah kepemimpinan beliau kelak.
Biarlah KPU menyelesaikan tugasnya sampai tuntas 😀 , kali ini kita akan mengupas bagaimana caranya memonitor salah satu system High Performace Computing yang kami kelola yaitu Sistem Informasi Akademik (SIAKAD) Unila. Mengapa dan untuk apa dimonitor ?? tentu pertanyaan ini akan muncul dibenak pembaca, baiklah saya coba ulas sedikit bagaimana konsep proyek rekayasa perangkat lunak yang umumnya diimplementasikan oleh kebanyakan developer sistem informasi, sebagian besar dari mereka mengadopsi konsep Sistem Development Life Cycle (SDLC).
SDLC terdiri dari 6 Fase Siklus yang berkelanjutan yaitu; Fase Planning, Fase Analysis, Fase Design, Fase Implementation, Fase Support. Secara spesifik proses Monitor System Performance dilakukan pada fase ke 6 (Support) setelah seluruh sistem dipastikan telah berjalan dengan baik dan sesuai dengan requirement yang ada. Measuring Performance sangat penting dilakukan untuk mengukur tingkat kehandalan/endurance suatu sistem terutama ketika dihadapkan dengan serangkaian beban kerja/load besar, dari hasil analisis selanjutnya akan dijadikan pertimbangan apakah sistem existing sudah stable atau perlu dilakukan scalling out, scalling up untuk meningkatkan kinerja. Saya kira cukup sekian penjelasannya, kesimpulannya proses monitoring ini penting… titik !!! 😀
Ok Lets move to another point, kita punya sistem dengan resource komputasi tinggi, kira kira aplikasi apa yang cocok digunakan untuk memonitor ?? , karena platform virtualization berbasis VMWare Enterprise sebagai backend aplikasi maka sebetulnya VCentre yang reliable melakukan tugas ini, namun berhubung kita tidak punya lisensinya makanya beralih ke skenario alternatif lainnya. Ahaa Ai Ce… there is Simple Network Management Protocol (SNMP) technology yang dapat digenerate dengan aplikasi third party semacam Solarwind, PRTG, MRTG dan sebangsanya, tapi menurut saya itu terlalu Main Streaammm sodaraa sodaraa hehehe. Kita coba dengan “hard way” yaitu build from the scrath menggunakan Python programming. hmmm…. Whatttt ?? Python maniiing Python maniiing kagak bosen lu Ndrooooo 😀 , ya kagak lah bro…. namanya juga belajar, ibarat kate pepateh “Lifelong learning is the ongoing, voluntary, and self-motivated” jadi akan terus berproses gak pake bosen 🙂 .
Yap kita siapkan dulu alat dan bahan yang dibutuhkan, gak perlu ke warung, mini market, apalagi indo maret, cukup siapkan Python dengan library Matplotlib, Numpy, Scipy, Python Psutil, Python MySQL Library, MySQL database, dan yang terpenting adalah “self motifated” tadi. Jika sudah kira kira ini source code hasil experiment saya, silahkan anda compile sendiri;
- Listing program capturing memory utilization
#!/usr/bin/python #By-Gigih-F, iseng-iseng aja : 17-07-2014 13:38 WIB) import time import datetime now = datetime.datetime.now() jam= now.strftime("%Y-%m-%d %H:%M") import MySQLdb import os try: import psutil except ImportError: print "Cannot import psutil module - this is needed for this application."; print "Exiting..." sys.exit(); try: import re # Needed for regex except ImportError: print "Cannot import re module - this is needed for this application."; print "Exiting..." sys.exit(); # # Routine to add commas to a float string # def commify3(amount): amount = str(amount) amount = amount[::-1] amount = re.sub(r"(\d\d\d)(?=\d)(?!\d*\.)", r"\1,", amount) return amount[::-1] # end def commify3(amount): # =================== # Main Python section # =================== if __name__ == '__main__': # memory usage: mem = psutil.virtual_memory(); used = mem.total - mem.available; a1 = str(int(used / 1024 / 1024)) + "M"; a2 = str(int(mem.total / 1024 / 1024)) + "M"; a3 = commify3(a1) + "/" + commify3(a2); memtot = int(mem.total / 1024 / 1024); memavailable = int(mem.available / 1024 / 1024); memuse= memtot - memavailable mempercent = (mem.percent); muse1bufcache = int(mem.used / 1024 / 1024); memfree = int(mem.free / 1024 / 1024); memactive = int(mem.active / 1024 / 1024); meminactive = int(mem.inactive/ 1024 / 1024); membuffers = int(mem.buffers / 1024 / 1024); memcache = int(mem.cached / 1024 / 1024); conn = MySQLdb.connect(host= "192.168.xxx.yyy", user="username", passwd="xxxyyy", db="siakad_monitor") x = conn.cursor() try: x.execute("""INSERT INTO memory VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""", (now,memtot,memavailable,memuse,muse1bufcache,mempercent,memfree,mema ctive,meminactive,membuffers,memcache,swaptot,swapused,swapfree,swappercent,swapin,swapout )) conn.commit() except: conn.rollback() # end if
- Listing program plotting from database
##By-Gigih-F, iseng-iseng aja : 16-07-2014 13:52 WIB) import matplotlib matplotlib.use('Agg') import Image import MySQLdb as mdb import sys import matplotlib.pyplot as plt import datetime import shutil now = datetime.datetime.now() print now #Inisialisasi ke Database conn = mdb.connect('192.168.xxx.yyy', 'usernamemysql', 'xyzxyz', 'siakad_monitor'); with conn: cursor = conn.cursor () cursor.execute ("SELECT memory.date,memory.memtot,memory.memavailable,memory.memuse,memory.muse1bufcache,memory.mempercent,memory.memfree,memory.memactive,memory.mem inactive,memory.membuffers,memory.memcache FROM memory WHERE DATE (date) = DATE(NOW()) ") row = cursor.fetchall() print "RESULT:", row[0] date,memtot,memavailable,memuse,muse1bufcache,mempercent,memfree,memactive,meminactive,membuffers,memcache=zip(*row) #Fetching setiap row def plot1(): fig = matplotlib.pyplot.gcf() fig.set_size_inches(18.5,10.5) ax = plt.subplot(111) plt.plot(date,memuse,marker='+',linestyle='-',color='c',label='Utilisasi Memory Usage') plt.legend(loc=10) plt.ylabel('Memory Usage (MByte) ') #Label pada sumbu Y plt.xlabel('Waktu') #Label pada sumbu X plt.grid() plt.title(' Memory Usage SIAKAD tgl : [%s] (Credit to Python+MySQL)'%(now)) #Judul Grafik plt.savefig('/var/xxx/yyy/SIAKAD/siakadmemuse.png', dpi=100) #Simpan file dengan judul xxx.png plt.close() def plot2(): fig = matplotlib.pyplot.gcf() fig.set_size_inches(18.5,10.5) ax = plt.subplot(111) plt.plot(date,memavailable,marker='+',linestyle='-',color='c',label='Available Memory (MByte)') plt.legend(loc=10) plt.ylabel('Available Memory (MByte) ') #Label pada sumbu Y plt.xlabel('Waktu') #Label pada sumbu X plt.grid() plt.title(' Available Memory Server SIAKAD tgl : [%s] (Credit to Python+MySQL)'%(now)) #Judul Grafik plt.savefig('/var/xxx/yyy/SIAKAD/siakadmemavailable.png', dpi=100) #Simpan file dengan judul xxx.png plt.close() def plot3(): fig = matplotlib.pyplot.gcf() fig.set_size_inches(18.5,10.5) ax = plt.subplot(111) plt.plot(date,memuse,marker='+',linestyle='-',color='c',label='Memory Usage (MByte)') plt.legend(loc=10) plt.ylabel('Memory Usage (MByte) ') #Label pada sumbu Y plt.xlabel('Waktu') #Label pada sumbu X plt.grid() plt.title(' Memory Usage Server SIAKAD tgl : [%s] (Credit to Python+MySQL)'%(now)) #Judul Grafik plt.savefig('/var/xxx/yyy/SIAKAD/siakadmemuse.png', dpi=100) #Simpan file dengan judul xxx.png plt.close() def plot4(): fig = matplotlib.pyplot.gcf() fig.set_size_inches(18.5,10.5) ax = plt.subplot(111) plt.plot(date,muse1bufcache,marker='+',linestyle='-',color='c',label='Memory + Cache Usage (MByte)') plt.legend(loc=10) plt.ylabel('Memory + Cache Usage (MByte) ') #Label pada sumbu Y plt.xlabel('Waktu') #Label pada sumbu X plt.grid() plt.title(' Memory + Cache Usage Server SIAKAD tgl : [%s] (Credit to Python+MySQL)'%(now)) #Judul Grafik plt.savefig('/var/xxx/yyy/SIAKAD/siakadmuse1bufcache.png', dpi=100) #Simpan file dengan judul xxx.png plt.close() def plot5(): fig = matplotlib.pyplot.gcf() fig.set_size_inches(18.5,10.5) ax = plt.subplot(111) plt.plot(date,mempercent,marker='+',linestyle='-',color='c',label='Persentage Memory Utilization') plt.legend(loc=10) plt.ylabel('Percentage Memory Utilization') #Label pada sumbu Y plt.xlabel('Waktu') #Label pada sumbu X plt.grid() plt.title(' Persentage Memory Utilization: tgl : [%s] (Credit to Python+MySQL)'%(now)) #Judul Grafik plt.savefig('/var/xxx/yyy/SIAKAD/siakadmempercent.png', dpi=100) #Simpan file dengan judul xxx.png plt.close() def plot6(): fig = matplotlib.pyplot.gcf() fig.set_size_inches(18.5,10.5) ax = plt.subplot(111) plt.plot(date,memfree,marker='+',linestyle='-',color='c',label='Free Memory SIAKAD') plt.legend(loc=10) plt.ylabel('Free Memory (MByte) ') #Label pada sumbu Y plt.xlabel('Waktu') #Label pada sumbu X plt.grid() plt.title(' Free Memory SIAKAD tgl : [%s] (Credit to Python+MySQL)'%(now)) #Judul Grafik plt.savefig('/var/xxx/yyy/SIAKAD/siakadmemfree.png', dpi=100) #Simpan file dengan judul xxx.png plt.close() def plot7(): fig = matplotlib.pyplot.gcf() fig.set_size_inches(18.5,10.5) ax = plt.subplot(111) plt.plot(date,memactive,marker='+',linestyle='-',color='c',label='Memory Active (Mbyte)') plt.legend(loc=10) plt.ylabel('Memory Active (Mbyte) ') #Label pada sumbu Y plt.xlabel('Waktu') #Label pada sumbu X plt.grid() plt.title(' Memory Active tgl : [%s] (Credit to Python+MySQL)'%(now)) #Judul Grafik plt.savefig('/var/xxx/yyy/SIAKAD/siakadmemactive.png', dpi=100) #Simpan file dengan judul xxx.png plt.close() def plot8(): fig = matplotlib.pyplot.gcf() fig.set_size_inches(18.5,10.5) ax = plt.subplot(111) plt.plot(date,meminactive,marker='+',linestyle='-',color='c',label='Memory Inactive (MByte)') plt.legend(loc=10) plt.ylabel('Memory Inactive (MByte) ') #Label pada sumbu Y plt.xlabel('Waktu') #Label pada sumbu X plt.grid() plt.title(' Memory Inactive tgl : [%s] (Credit to Python+MySQL)'%(now)) #Judul Grafik plt.savefig('/var/xxx/yyy/SIAKAD/siakadmeminactive.png', dpi=100) #Simpan file dengan judul xxx.png plt.close() def plot9(): fig = matplotlib.pyplot.gcf() fig.set_size_inches(18.5,10.5) ax = plt.subplot(111) plt.plot(date,membuffers,marker='+',linestyle='-',color='c',label='Memory Buffer (MByte)') plt.legend(loc=10) plt.ylabel('Memory Buffer (MByte) ') #Label pada sumbu Y plt.xlabel('Waktu') #Label pada sumbu X plt.grid() plt.title(' Memory Buffer tgl : [%s] (Credit to Python+MySQL)'%(now)) #Judul Grafik plt.savefig('/var/xxx/yyy/SIAKAD/siakadmembuffers.png', dpi=100) #Simpan file dengan judul xxx.png plt.close() def plot10(): fig = matplotlib.pyplot.gcf() fig.set_size_inches(18.5,10.5) ax = plt.subplot(111) plt.plot(date,memcache,marker='+',linestyle='-',color='c',label='Memory Cache (Mbyte)') plt.legend(loc=10) plt.ylabel('Memory Cache (Mbyte) ') #Label pada sumbu Y plt.xlabel('Waktu') #Label pada sumbu X plt.grid() plt.title(' Memory Cache tgl : [%s] (Credit to Python+MySQL)'%(now)) #Judul Grafik plt.savefig('/var/xxx/yyy/SIAKAD/siakadmemcache.png', dpi=100) #Simpan file dengan judul xxx.png plt.close() def plot11(): fig = matplotlib.pyplot.gcf() fig.set_size_inches(18.5,10.5) ax = plt.subplot(111) plt.plot(date,memtot,marker='+',linestyle='-',color='c',label='Total Memory (MByte) ') plt.legend(loc=10) plt.ylabel('Memory Usage (MByte) ') #Label pada sumbu Y plt.xlabel('Waktu') #Label pada sumbu X plt.grid() plt.title(' Total Memory SIAKAD tgl : [%s] (Credit to Python+MySQL)'%(now)) #Judul Grafik plt.savefig('/var/xxx/yyy/SIAKAD/siakadmemory.png', dpi=100) #Simpan file dengan judul xxx.png plt.close() plot1() plot2() plot3() plot4() plot5() plot6() plot7() plot8() plot9() plot10() plot11()
Kira kira hasil akhir plotting grafik load memorynya seperti berikut.
Thanks to Google, Python and Friends.
Keutamaan menjalin silaturahmi
SILATURAHMI… satu kata yang sering kita dengar, punya makna mendalam dan mendatangkan faedah luar biasa dalam hidup dan kehidupan kita. Memang pada dasarnya manusia adalah mahluk sosial, kita niscaya tidak dapat hidup sendiri dan akan membutuhkan keberadaan orang/mahluk lainnya. Pada tautan berikut http://ustadzkholid.com/keutamaan-silaturahmi/ disampaikan manfaat dalam bersilaturahmi, salah satunya bahwa Alloh akan memberikan kelapangan rezeki bagi siapa saja yang menjalin tali silaturahmi kepada sesama.
Terkait bahasan silaturahmi ini, beberapa hari lalu saya dikontak oleh Pak Hasan, teman lama yang bekerja di perusahaan Charoen Pokphan Group, teman ini dulunya adalah rekan kerja satu tim di bawah Departemen IT CP Group. Kami saling bertanya kabar dan kondisi masing-masing, Alhamdulillah meskipun sudah sejak tahun 2005 lalu tidak bersua, karena silaturahmi kala menjadi tim berjalan baik kami pun tidak canggung dalam berkomunikasi. rupanya beliau sudah berdomisili di Bandar Lampung. Di akhir percakapan, beliau menyampaikan permintaan agar saya berkenan membantu dalam mengupgrade network untuk pabrik FishMill yang baru selesai dibangun, pabrik baru tersebut berlokasi di daerah Sutami Tanjung Bintang. Saya diminta untuk membuat estimasi dan part apa saja yang dibutuhkan dalam upgrading ini.
Saya menyanggupi dan berlekas mempersiapkan estimasi kebutuhan untuk kegiatan ini. Pertama kali kami mengunjungi lokasi pabrik baru agar mendapatkan gambaran jelas requirement specification, rupanya posisi pabrik berada di depan Central Pertiwi Bahari-CPB (tempat dulu saya ngetem) dan sudah beroperasi hampir 1 tahun dalam memproduksi pakan ikan.
Setelah survey pertama dilakukan dan didapat gambaran jelas, info ini kemudian kami sampaikan ke Pak Hasan berikut estimasi anggaran yang dibutuhkan. Alhamdulillah pengajuan tersebut disetujui dan bisa langsung dikerjakan. O iya lingkup pengerjaannya adalah upgrading dari Link ADSL existing menggunakan Link Fiber Optic, dari penuturan pengelola fishmill performance Link ADSL ini berjalan kurang maksimal makanya ada rekomendasi untuk di upgrade.
Setelah semua material lengkap dan fase uji fungsi berjalan baik, tim mengunjungi area pabrik dan segera melakukan proses upgrading ini. Sementara tim bekerja saya, Pak Hasan dan Pak Imbar ngobrol santai di ruangan sambil bercerita dan bernostalgia kisah masa lalu. Tak lupa pula kami mendiskusikan topik hangat yang saat ini tengah banyak diperbincangkan yaitu hasil quick qount 😀 , serulah pokoknya diskusi kemarin.
Tanpa terasa hari sudah beranjak sore, pekerjaan upgrading network ini pun sudah selesai, pengujian dilakukan beberapa kali untuk memastikan kehandalan network yang baru ini, setelah benar benar OK sayapun pamit karena ada janji sore bertemu di Lab untuk membahasa progress project MP3EI yang melibatkan beberapa rekan Dosen dan Mahasiswa.
Inti dari posting ini kurang lebihnya, tali silaturahmi yang membuka pintu pintu rezeki, semoga silaturahmi tetap terjaga, amin.
Akreditasi Program Studi Teknik Elektro Unila
Akreditasi Program Studi Teknik Elektro Universitas Lampung akan habis masa berlakunya pada tahun 2015, dalam rangka persiapan reakreditasi Prodi telah dibentuk tim kecil yang bertugas mempersiapkan data pendukung, tim dibagi dalam 7 kelompok sesuai dengan standar penilaian BAN-PT. Pada Tanggal 8 Juli kemarin Ketua Jurusan mengundang Ketua Tim Akreditasi beserta tim untuk menyampaikan progress capaian tim kerja. Selain Panitia Kerja (PanJa) Jurusan, Kajur turut mengundang pimpinan di level Fakultas dengan harapan mendapatkan dukungan penuh pimpinan selama proses akreditasi ini berlangsung, Alhamdulillah Pak Dekan, PD 1, PD2, serta Kabag TU Fakultas berkesempatan hadir dalam pemaparan PanJa. Banyak masukan dari Jurusan terkait upaya peningkatan kualitas layanan akademik, Semoga beroleh hasil yang maksimal.
Ritual rutin sebelum memulai puasa 1435 H
Pada tanggal 28 Juni 2014 lalu adalah H-1 Ramadhan 1435 H , seperti biasa agenda sebelum puasa kami sekeluarga berkunjung ke Pagelaran Pringsewu untuk bersilaturahmi dengan Ombay Masnun tercinta, o iya bagi yang belum tahu, Ombay merupakan Nomenklatur bahasa Kumoring untuk memanggil Nenek :-).Ombay dari pihak Papa satu satunya Tetua yang masih ada di keluarga kami, Akas sudah terlebih dahulu dipanggil sang Khalik, sedangkan Ombay dan Akas dari sebelah Mama juga telah lebih dahulu meninggalkan kami.
Alhamdulillah di usia sepuh Ombay yang telah menginjak umur lebih dari 80 tahun, kondisi beliau terlihat cukup sehat, masih dikaruniai nikmat pendengaran dan penglihatan yang cukup baik, dibuktikan dengan ‘teriakan’ khas saya memanggil dari luar rumah masih bisa dikenali baik oleh Ombay 😀 , Ombay masih dapat mengidentifikasi nama dan paras seluruh cucung-nya , bahkan hingga ke Cicit beliau juga mampu mengenali dengan baik.
Bila bertemu Ombay saya biasanya memberanikan diri untuk berbicara dalam bahasa Kumoring, FYI hingga saat ini level penguasaan bahasa daerah saya masih di tingkatan beginner hehe, jadi sering selip ketika ngomong Kumoring tercampur dengan bahasa Indonesa, tapi it’s Ok lah kalau ada kumpulan keluarga bisa ikutan nimbrung.
Setelah bercengkrama dan memastikan bahwa Ombay dalam kondisi sehat, kami sekeluarga bertolak menuju ke ladang peninggalan Akas Prabu untuk menyusul Papa dan Om yang sudah terlebih dahulu berada di balong ikan. Hari itu merupakan jadwal penyortiran ikan Mas pertama kali untuk siklus panen triwulan kedua tahun ini. Biasanya dalam satu periode panen akan dilakukan 3 kali proses sortir.
Di tengah proses sortir kami dikejutkan oleh suara gaduh berasal dari depan Gubug, rupanya pegawai yang sedang kerja membawa seekor lele berukuran jumbo yang terperangkap jaring pada saat proses sortir berlangsung, ukuran lele ini tergolong besar dengan lingkar badan kurang lebih seukuran betis orang dewasa. Bagi petani ikan Mas, ikan lele, gabus dan biawak merupakan musuh bebuyutan utama dan sangat mengganggu karena kesemuanya itu adalah hewan predator pemangsa ikan mas di kolam, apabila teridentifikasi adanya hama ini maka harus cepat disingkirkan.
Tanpa berfikir panjang kami pun bersegera mencari peralatan ‘tempur’ untuk memproses lele yang sudah tertangkap basah tadi, lele jumbo yang gagah berani dan berdiameter sama dengan sandal ukuran 43 saya tadi, akhirnya bertransformasi wujud menjadi ukuran kecil dalam bentuk daging filled hehe…
Nah karena keluarga banyak request untuk memanggang ikan mas dan nila maka kita tinggalkan lele jumbo filled tadi , saya kemudian meminta pegawai yang kerja untuk menyiapkan ikan mas dan nila segar untuk dipanggang, sembari ikan mas dan nila segar sedang dalam proses pembersihan, saya dan beberapa orang lainnya mengumpulkan sabut kelapa kering untuk dijadikan bara memanggang ikan.
Karena amunisinya bukan dari arang maka produksi asap tebal pun dimulai 🙂 , mata pedes, idung panas, keringet ngucur, wiyy mantap lah pokoknya , banyak keluarga yang komentar “Eh.. ini Ikan bakar ape Ikan Asep tuh ?? “ saya timpali “tenaaangg.. yang penting hasil akhir… terima mateng sazalah… nyampur asep plus keringet dikit gak papa lah 😀 ” ,
Prosesi pemanggangan(pengasapan) ikan pun selesai, selanjutnya menginjak agenda utama yang paling ditunggu tunggu yaitu makan bersama keluarga, jam tangan menunjukkan sudah pukul 12.00 WIB lebih, jam biologis dari perutpun sudah memberikan alarm bahwa waktu makan sudah tiba.
Kumpul bersama diatas gubug di pinggir kolam dengan beralas tikar, bermenu ikan bakar/asep, pindang, lalapan dan sambal terasi, tanpa menunggu lama kami sekeluarga bersama para pegawai yg kerja menyantap hidangan istimewa tadi, sesekali saya menyeka keringat yang deras mengalir dan meneguk air putih pertanda bahwa sedang berselera 🙂 . Sungguh lezat hidangan makan siang saat itu, dengan ini saya nyatakan bahwa Rumah Kayu, Gubuk Mas, Pindang MakWar lewaaaaatt….. 😀 😀 😀 ,
Hari beranjak sore, terlihat sudah beberapa calon pembeli yang mendatangi kolam ikan, ada dua mobil pickup dan sepeda motor antri untuk membeli ikan mas segar, info dari supir bahwa ikan tersebut akan dipasarkan ke Jambi dan daerah Bandar Lampung. Karena sudah sore kami pun beranjak pulang, Alhamdulillah masih merasakan nikmatnya kebersamaan.
Fabiaayiaalaairobbikuma tukadzzibaan. “Dan Nikmat Tuhanmu yang manakah yang engkau dustakan ??”
Last Comment