SlideShare ist ein Scribd-Unternehmen logo
1 von 20
BMS (Bandwidth Management System)  Akses Internet Nyoman Bogi Nurul Fitria
Apa itu BMS ? BMS (Bandwidth Management System) adalah suatu sistem untuk mengontrol penggunaan bandwidth agar efisien. Mengapa perlu BMS ? Bandwidth sebagai suatu resource yang tidak tak terbatas dan tidak free, penggunaannya perlu dikontrol karena tingkat kepentingan suatu trafik dan user berbeda-beda. Apa yang bisa dilakukan BMS ? ,[object Object],[object Object],[object Object],[object Object]
Mengapa IM Telkom perlu BMS ? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Implementasi BMS di IM Telkom Pendahuluan BMS diimplementasikan pada link Internet karena sifatnya yang terbatas (hanya 2Mbps) namun memiliki utilitas yang sangat tinggi (semua user ingin koneksi ke Internet). Di IM Telkom agar dapat terkoneksi ke Internet, user harus terlebih dahulu login menggunakan VPN (autentikasi user) dan selanjutnya menggunakan proxy (accounting dan web caching) untuk dapat browsing ke Internet, maka implementasi BMS harus disesuaikan dengan kondisi tersebut.
Implementasi BMS di IM Telkom Diagram Blok
Analisa BMS di IM Telkom Skenario 1. Pengujian bandwidth untuk masing masing kelas Skenario X.1.1  Kelas1  download    Kelas 2 + Kelas 3   idle Skenario X.1.2  Kelas 2   download    Kelas 1 + Kelas 3   idle Skenario X.1.3  Kelas 1 + kelas 2   idle  Kelas 3   download  2. Pengujian proses peminjaman bandwidth Skenario X.2.1  Kelas 1   idle  Kelas 2 + Kelas 3   download  Skenario X.2.2   Kelas 2    idle   Kelas 1 + kelas 3   download Skenario X.2.3   Kelas 3    idle  Kelas 1 + kelas 2   download  Skenario X.2.4  Kelas 1 + Kelas 2 + Kelas 3    download 3. SQUID (Skenario A.3) Pengaruh ke jumlah Hit / Miss di  access.log. 4. Processor dan memory server (Skenario A.4) Analisa jumlah proses yang ada disistem, status penggunaan CPU, dan status penggunaan memory.
Analisa BMS di IM Telkom Analisa Trafik Gambar 4.1 Trafik Pimpinan  Gambar  4.2 Trafik Pegawai Gambar 4.3 Trafik Mahasiswa
Analisa BMS di IM Telkom Analisa Trafik Gambar 4.4 Trafik Pimpinan untuk proses peminjaman bandwidth   Gambar  4.5 Trafik Pegawai untuk proses peminjaman bandwidth   Gambar 4.6 Trafik Mahasiswa untuk proses peminjaman bandwidth
Analisa BMS di IM Telkom Analisa System Gambar 4.7. Grafik Persentase Hit  suatu object ada di web cache Gambar 4.9. Grafik Persentase utilitas CPU Total dan utilitas SQUID di server Gambar 4.8. Grafik Jumlah Proses  yang running di server Gambar 4.10. Grafik Persentase Utilitas Memory di server
Kesimpulan ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lampiran /etc/pf.conf ext_if = "fxp0“ altq on $ext_if cbq bandwidth 10240Kb queue { deflt, bms } queue deflt bandwidth 80% cbq(default) queue bms bandwidth 20% cbq(borrow red) { pimpinan , staf , mahasiswa } queue  pimpinan bandwidth 12.5% priority 1 cbq(borrow red) queue  staf bandwidth 25% priority 2 cbq(borrow red) queue  mahasiswa bandwidth 62.5% priority 3 cbq(borrow red) pass in on $ext_if inet proto tcp from 172.16.1.0/24 to 172.16.1.1 port 8080 keep state queue pimpinan pass in on $ext_if inet proto tcp from 172.16.5.0/24 to 172.16.1.1 port 8080 keep state queue staf pass in on $ext_if inet proto tcp from 172.16.10.0/21 to 172.16.1.1 port 8080 keep state queue mahasiswa pass in on $ext_if inet proto tcp from 172.16.16.0/20 to 172.16.1.1 port 8080 keep state queue mahasiswa pass out on $ext_if inet proto tcp from any to any keep state pass in  on $ext_if inet proto tcp from any to any keep state pass out on $ext_if inet all keep statepass in on $ext_if inet proto tcp from 172.16.3.0/24 to 172.16.1.1 port 8080 keep state queue mahasiswa pass out on $ext_if inet proto tcp from any to any port 22 keep state pass in  on $ext_if inet proto tcp from any to any port 22 keep state pass out on $ext_if inet all keep state
Lampiran crontab */5 * * * * /root/update_traffic_counter.sh */5 * * * * /root/update_system_status.sh Keterangan :  system menjalankan program shell script tersebut secara otomatis setiap  5 menit sekali
Lampiran Script update_system_status.sh #!/bin/sh /usr/bin/top -u -d1 > ./top1.txt /usr/bin/top -u -d2 > ./top2.txt PROCESS=`/bin/cat ./top1.txt | /usr/bin/grep 'processes' | /usr/bin/awk '{print $1}'` CPU=`/bin/cat ./top2.txt | /usr/bin/grep 'CPU states' | /usr/bin/awk '{print $11}'` MEM_A=`/bin/cat ./top1.txt | /usr/bin/grep 'Mem' | /usr/bin/awk '{print $2}'` MEM_I=`/bin/cat ./top1.txt | /usr/bin/grep 'Mem' | /usr/bin/awk '{print $4}'` MEM_W=`/bin/cat ./top1.txt | /usr/bin/grep 'Mem' | /usr/bin/awk '{print $6}'` MEM_C=`/bin/cat ./top1.txt | /usr/bin/grep 'Mem' | /usr/bin/awk '{print $8}'` MEM_B=`/bin/cat ./top1.txt | /usr/bin/grep 'Mem' | /usr/bin/awk '{print $10}'` MYSQLD=`/bin/cat ./top1.txt | /usr/bin/grep 'mysqld' | /usr/bin/awk '{print $10}'` SQUID=`/bin/cat ./top1.txt | /usr/bin/grep 'squid' | /usr/bin/awk '{print $10}'` MPD=`/bin/cat ./top1.txt | /usr/bin/grep 'mpd' | /usr/bin/grep -v 'snmpd' | /usr/bin/awk '{print $10}'` HTTPD=`/bin/cat ./top1.txt | /usr/bin/grep 'httpd' |/usr/bin/awk '{print $10}'` VPN=`/sbin/ifconfig | /usr/bin/grep -c '172.16'` TODAY=`date "+%Y%m%d%H%M"` /usr/local/bin/mysql -u user -ppassword -Dstatus --execute="insert into system_status set time=${TODAY},process='${PROCESS}',cpu='${CPU}', mem='${MEM_A}',mem_inact='${MEM_I}',mem_wired='${MEM_W}',mem_cache='${MEM_C}',mem_buf='${MEM_B}',mysqld=left('${MYSQLD}', locate('%','${MYSQLD}')),squid=left('${SQUID}',locate('%','${SQUID}')),mpd=left('${MPD}',locate('%','${MPD}')),httpd=left('${HTTPD}', locate('%','${HTTPD}')),vpn='${VPN}'" /usr/local/bin/php /root/cpu.php /usr/local/bin/php /root/memory.php /usr/local/bin/php /root/service.php /usr/local/bin/php /root/vpn.php
Lampiran Script graph.php (part 1) <?php function graph() { $arg=func_num_args();$filename=func_get_arg(0);$x=func_get_arg(1); if ($arg>=3) $y1=func_get_arg(2);if ($arg>=4) $y2=func_get_arg(3);if ($arg>=5) $y3=func_get_arg(4); if ($arg>=6) $y4=func_get_arg(5);if ($arg>=7) $y5=func_get_arg(6); $total_data_x=count($x)-1; $total_data_y=count($y1)-1; if ($total_data_x!=$total_data_y) {return (&quot;number of x values must be the same with y values&quot;);} $total_data=$total_data_x; header(&quot;Content-type: image/png&quot;); $imgWidth=600; $imgHeight=170; $image=imagecreate($imgWidth, $imgHeight); $colorWhite=imagecolorallocate($image, 255, 255, 255);$colorGrey=imagecolorallocate($image, 220, 220, 220); $colorBlack=imagecolorallocate($image, 0, 0, 0);$colorDarkBlue=imagecolorallocate($image, 0, 0, 196); $colorLightBlue=imagecolorallocate($image, 184, 212, 250);$colorRed=imagecolorallocate($image, 255, 0, 0); $colorGreen=imagecolorallocate($image, 0, 196, 0);$colorYellow=imagecolorallocate($image, 200, 200, 0); $colorMagenta=imagecolorallocate($image, 0, 200, 200); $offset_x=50; $offset_y=40; imagefilledrectangle($image, $offset_x, $offset_y, $offset_x+440, $offset_y+100, $colorWhite); $interval=floor(440/$total_data); $j=0; for ($i=1; $i<=$total_data; $i++){ if (!strcmp(substr($x[$i],10,2),&quot;00&quot;)) { imagedashedline($image, $offset_x+($i*$interval), $offset_y+4, $offset_x+($i*$interval), $offset_y+96, $colorGrey); $j=$j+1; if (($j%2)==1) { imagestringup($image, 1, $offset_x+($i*$interval)-3, $offset_y+125, substr($x[$i],8,2).'.00', $colorBlack); }  }  }
Lampiran Script graph.php (part 2) $max_y=0; for ($i=1; $i<=$total_data; $i++){ if ($arg>=3) if ($max_y<$y1[$i]) {$max_y=$y1[$i];} if ($arg>=4) if ($max_y<$y2[$i]) {$max_y=$y2[$i];} if ($arg>=5) if ($max_y<$y3[$i]) {$max_y=$y3[$i];} if ($arg>=6) if ($max_y<$y4[$i]) {$max_y=$y4[$i];} if ($arg>=7) if ($max_y<$y5[$i]) {$max_y=$y5[$i];} } $max_y=ceil($max_y/25)*25; if ($max_y==0) $max_y=100; for ($i=1; $i<4; $i++){ imageline($image, $offset_x+4, $offset_y+($i*100/4), $offset_x+436, $offset_y+($i*100/4), $colorGrey); } imagestring($image, 1, $offset_x-10, 138, 0, $colorBlack); imagestring($image, 1, $offset_x-15, 88, $max_y/2, $colorBlack); imagestring($image, 1, $offset_x-20, 38, $max_y, $colorBlack); imagestring($image, 3, $offset_x, $offset_y-30, $x[0], $colorBlack); if ($arg>=3) { for ($i=2; $i<=$total_data; $i++) imageline($image, $offset_x+($i*$interval), $offset_y+100-round($y1[$i]/$max_y*100), $offset_x+(($i-1)*$interval),$offset_y+100-round($y1[$i-1]/$max_y*100), $colorRed); imagefilledrectangle($image, $offset_x+450, $offset_y+10, $offset_x+455, $offset_y+15, $colorRed); imagestring($image, 1, $offset_x+460, $offset_y+9, $y1[0], $colorBlack); } if ($arg>=4) { for ($i=2; $i<=$total_data; $i++) imageline($image, $offset_x+($i*$interval), $offset_y+100-round($y2[$i]/$max_y*100), $offset_x+(($i-1)*$interval),$offset_y+100-round($y2[$i-1]/$max_y*100), $colorGreen); imagefilledrectangle($image, $offset_x+450, $offset_y+25, $offset_x+455, $offset_y+30, $colorGreen); imagestring($image, 1, $offset_x+460, $offset_y+24, $y2[0], $colorBlack); }
Lampiran Script graph.php (part 3) if ($arg>=5) { for ($i=2; $i<=$total_data; $i++) imageline($image, $offset_x+($i*$interval), $offset_y+100-round($y3[$i]/$max_y*100), $offset_x+(($i-1)*$interval),$offset_y+100-round($y3[$i-1]/$max_y*100), $colorDarkBlue); imagefilledrectangle($image, $offset_x+450, $offset_y+40, $offset_x+455, $offset_y+45, $colorDarkBlue); imagestring($image, 1, $offset_x+460, $offset_y+39, $y3[0], $colorBlack); } if ($arg>=6) { for ($i=2; $i<=$total_data; $i++) imageline($image, $offset_x+($i*$interval), $offset_y+100-round($y4[$i]/$max_y*100), $offset_x+(($i-1)*$interval),$offset_y+100-round($y4[$i-1]/$max_y*100), $colorYellow); imagefilledrectangle($image, $offset_x+450, $offset_y+55, $offset_x+455, $offset_y+60, $colorYellow); imagestring($image, 1, $offset_x+460, $offset_y+54, $y4[0], $colorBlack); } if ($arg>=7) { for ($i=2; $i<=$total_data; $i++) imageline($image, $offset_x+($i*$interval), $offset_y+100-round($y5[$i]/$max_y*100), $offset_x+(($i-1)*$interval),$offset_y+100-round($y5[$i-1]/$max_y*100), $colorMagenta); imagefilledrectangle($image, $offset_x+450, $offset_y+70, $offset_x+455, $offset_y+75, $colorMagenta); imagestring($image, 1, $offset_x+460, $offset_y+69, $y5[0], $colorBlack); } imagepng($image, $filename); imagedestroy($img); imagedestroy($image); } ?>
Lampiran Script mem.php <?php include(&quot;graph.php&quot;); $link=mysql_connect(&quot;localhost&quot;,“user&quot;,“password&quot;); $result=mysql_query(&quot;select count(*) from status.system_status&quot;,$link); $jml_data=mysql_fetch_row($result);mysql_free_result($result); $jml_data[0]=$jml_data[0]-440; $result1=mysql_query(&quot;select time,mem,mem_inact,mem_wired,mem_cache,mem_buf from status.system_status  order by nomor asc limit $jml_data[0],440&quot;,$link); $x=array(0); $x[0] ='Persentase Utilitas Memory'; $y1=array(0);$y1[0]='Active Memory'; $y2=array(0);$y2[0]='Inactive Memory'; $y3=array(0);$y3[0]='Wired Memory'; $y4=array(0);$y4[0]='Cache Memory'; $y5=array(0);$y5[0]='Buffer Memory'; $max_mem=2500; for ($i=1; $i<=440; $i++){ $row=mysql_fetch_row($result1); $x[]=$row[0]; $y1[]=floor(100*$row[1]/$max_mem); $y2[]=floor(100*$row[2]/$max_mem); $y3[]=floor(100*$row[3]/$max_mem); $y4[]=floor(100*$row[4]/$max_mem); $y5[]=floor(100*$row[5]/$max_mem); } mysql_close($link);mysql_free_result($result1);$filename=&quot;memory.png&quot;; graph($filename,$x,$y1,$y2,$y3,$y4,$y5); ?>
Lampiran Script cpu.php <?php include(&quot;graph.php&quot;); $link=mysql_connect(&quot;localhost&quot;,“user&quot;,“password&quot;); $result=mysql_query(&quot;select count(*) from status.system_status&quot;,$link); $jml_data=mysql_fetch_row($result); mysql_free_result($result); $jml_data[0]=$jml_data[0]-440; $result1=mysql_query(&quot;select time,cpu from status.system_status order by nomor asc limit $jml_data[0],440&quot;,$link); $x=array(0); $x[0] ='Persentase Utilitas CPU'; $y1=array(0);$y1[0]='CPU usage'; for ($i=1; $i<=440; $i++){ $row=mysql_fetch_row($result1); $x[]=$row[0]; $y1[]=100-$row[1]; } mysql_close($link);mysql_free_result($result1); $filename=&quot;cpu.png&quot;; graph($filename,$x,$y1); ?>
Lampiran Script hitmiss.sh #!/bin/sh TODAY=`date &quot;+%Y%m%d%H%M&quot;` SQUID=&quot;/usr/local/sbin/squid&quot; SQUID_OPTION=&quot;-f /usr/local/etc/squid/squid.conf -k rotate&quot; TEMP_FOLDER=&quot;/data/log&quot; /bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep 'MISS' | /usr/bin/awk '{print $3 &quot;&quot; $5}' > ${TEMP_FOLDER}/usage.txt HIT=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -c 'HIT'` MISS=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -c 'MISS'` OTHER=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -v 'HIT' | /usr/bin/grep -v 'MISS' | /usr/bin/grep -c ''`
http://www.imtelkom.ac.id

Weitere ähnliche Inhalte

Mehr von Telkom Institute of Management

Mehr von Telkom Institute of Management (20)

AT Rapier Usecase Document
AT Rapier Usecase DocumentAT Rapier Usecase Document
AT Rapier Usecase Document
 
Building a Secure Web Application
Building a Secure Web ApplicationBuilding a Secure Web Application
Building a Secure Web Application
 
SAMP (Solaris, Apache, MySQL, PHP)
SAMP (Solaris, Apache, MySQL, PHP)SAMP (Solaris, Apache, MySQL, PHP)
SAMP (Solaris, Apache, MySQL, PHP)
 
Oracle on Solaris
Oracle on SolarisOracle on Solaris
Oracle on Solaris
 
FreeBSD VPN Server
FreeBSD VPN ServerFreeBSD VPN Server
FreeBSD VPN Server
 
FreeBSD Proxy Server
FreeBSD Proxy ServerFreeBSD Proxy Server
FreeBSD Proxy Server
 
FreeBSD Name Server
FreeBSD Name ServerFreeBSD Name Server
FreeBSD Name Server
 
FreeBSD POP3/IMAP Server
FreeBSD POP3/IMAP ServerFreeBSD POP3/IMAP Server
FreeBSD POP3/IMAP Server
 
FreeBSD Securing Mail Server
FreeBSD Securing Mail ServerFreeBSD Securing Mail Server
FreeBSD Securing Mail Server
 
FreeBSD Mail Server
FreeBSD Mail ServerFreeBSD Mail Server
FreeBSD Mail Server
 
FreeBSD PHP
FreeBSD PHPFreeBSD PHP
FreeBSD PHP
 
FreeBSD Web Server
FreeBSD Web ServerFreeBSD Web Server
FreeBSD Web Server
 
FreeBSD Installation
FreeBSD InstallationFreeBSD Installation
FreeBSD Installation
 
FreeBSD FTP Server
FreeBSD FTP ServerFreeBSD FTP Server
FreeBSD FTP Server
 
FreeBSD Bandwidth Management
FreeBSD Bandwidth ManagementFreeBSD Bandwidth Management
FreeBSD Bandwidth Management
 
FreeBSD Firewall
FreeBSD FirewallFreeBSD Firewall
FreeBSD Firewall
 
FreeBSD Basic Setting
FreeBSD Basic SettingFreeBSD Basic Setting
FreeBSD Basic Setting
 
FreeBSD Installation
FreeBSD InstallationFreeBSD Installation
FreeBSD Installation
 
FreeBSD Installation
FreeBSD InstallationFreeBSD Installation
FreeBSD Installation
 
Resource Reservation Protocol
Resource Reservation ProtocolResource Reservation Protocol
Resource Reservation Protocol
 

Bandwidth Management System - Case Study

  • 1. BMS (Bandwidth Management System) Akses Internet Nyoman Bogi Nurul Fitria
  • 2.
  • 3.
  • 4. Implementasi BMS di IM Telkom Pendahuluan BMS diimplementasikan pada link Internet karena sifatnya yang terbatas (hanya 2Mbps) namun memiliki utilitas yang sangat tinggi (semua user ingin koneksi ke Internet). Di IM Telkom agar dapat terkoneksi ke Internet, user harus terlebih dahulu login menggunakan VPN (autentikasi user) dan selanjutnya menggunakan proxy (accounting dan web caching) untuk dapat browsing ke Internet, maka implementasi BMS harus disesuaikan dengan kondisi tersebut.
  • 5. Implementasi BMS di IM Telkom Diagram Blok
  • 6. Analisa BMS di IM Telkom Skenario 1. Pengujian bandwidth untuk masing masing kelas Skenario X.1.1 Kelas1  download Kelas 2 + Kelas 3  idle Skenario X.1.2 Kelas 2  download Kelas 1 + Kelas 3  idle Skenario X.1.3 Kelas 1 + kelas 2  idle Kelas 3  download 2. Pengujian proses peminjaman bandwidth Skenario X.2.1 Kelas 1  idle Kelas 2 + Kelas 3  download Skenario X.2.2 Kelas 2  idle Kelas 1 + kelas 3  download Skenario X.2.3 Kelas 3  idle Kelas 1 + kelas 2  download Skenario X.2.4 Kelas 1 + Kelas 2 + Kelas 3  download 3. SQUID (Skenario A.3) Pengaruh ke jumlah Hit / Miss di access.log. 4. Processor dan memory server (Skenario A.4) Analisa jumlah proses yang ada disistem, status penggunaan CPU, dan status penggunaan memory.
  • 7. Analisa BMS di IM Telkom Analisa Trafik Gambar 4.1 Trafik Pimpinan Gambar 4.2 Trafik Pegawai Gambar 4.3 Trafik Mahasiswa
  • 8. Analisa BMS di IM Telkom Analisa Trafik Gambar 4.4 Trafik Pimpinan untuk proses peminjaman bandwidth Gambar 4.5 Trafik Pegawai untuk proses peminjaman bandwidth Gambar 4.6 Trafik Mahasiswa untuk proses peminjaman bandwidth
  • 9. Analisa BMS di IM Telkom Analisa System Gambar 4.7. Grafik Persentase Hit suatu object ada di web cache Gambar 4.9. Grafik Persentase utilitas CPU Total dan utilitas SQUID di server Gambar 4.8. Grafik Jumlah Proses yang running di server Gambar 4.10. Grafik Persentase Utilitas Memory di server
  • 10.
  • 11. Lampiran /etc/pf.conf ext_if = &quot;fxp0“ altq on $ext_if cbq bandwidth 10240Kb queue { deflt, bms } queue deflt bandwidth 80% cbq(default) queue bms bandwidth 20% cbq(borrow red) { pimpinan , staf , mahasiswa } queue pimpinan bandwidth 12.5% priority 1 cbq(borrow red) queue staf bandwidth 25% priority 2 cbq(borrow red) queue mahasiswa bandwidth 62.5% priority 3 cbq(borrow red) pass in on $ext_if inet proto tcp from 172.16.1.0/24 to 172.16.1.1 port 8080 keep state queue pimpinan pass in on $ext_if inet proto tcp from 172.16.5.0/24 to 172.16.1.1 port 8080 keep state queue staf pass in on $ext_if inet proto tcp from 172.16.10.0/21 to 172.16.1.1 port 8080 keep state queue mahasiswa pass in on $ext_if inet proto tcp from 172.16.16.0/20 to 172.16.1.1 port 8080 keep state queue mahasiswa pass out on $ext_if inet proto tcp from any to any keep state pass in on $ext_if inet proto tcp from any to any keep state pass out on $ext_if inet all keep statepass in on $ext_if inet proto tcp from 172.16.3.0/24 to 172.16.1.1 port 8080 keep state queue mahasiswa pass out on $ext_if inet proto tcp from any to any port 22 keep state pass in on $ext_if inet proto tcp from any to any port 22 keep state pass out on $ext_if inet all keep state
  • 12. Lampiran crontab */5 * * * * /root/update_traffic_counter.sh */5 * * * * /root/update_system_status.sh Keterangan : system menjalankan program shell script tersebut secara otomatis setiap 5 menit sekali
  • 13. Lampiran Script update_system_status.sh #!/bin/sh /usr/bin/top -u -d1 > ./top1.txt /usr/bin/top -u -d2 > ./top2.txt PROCESS=`/bin/cat ./top1.txt | /usr/bin/grep 'processes' | /usr/bin/awk '{print $1}'` CPU=`/bin/cat ./top2.txt | /usr/bin/grep 'CPU states' | /usr/bin/awk '{print $11}'` MEM_A=`/bin/cat ./top1.txt | /usr/bin/grep 'Mem' | /usr/bin/awk '{print $2}'` MEM_I=`/bin/cat ./top1.txt | /usr/bin/grep 'Mem' | /usr/bin/awk '{print $4}'` MEM_W=`/bin/cat ./top1.txt | /usr/bin/grep 'Mem' | /usr/bin/awk '{print $6}'` MEM_C=`/bin/cat ./top1.txt | /usr/bin/grep 'Mem' | /usr/bin/awk '{print $8}'` MEM_B=`/bin/cat ./top1.txt | /usr/bin/grep 'Mem' | /usr/bin/awk '{print $10}'` MYSQLD=`/bin/cat ./top1.txt | /usr/bin/grep 'mysqld' | /usr/bin/awk '{print $10}'` SQUID=`/bin/cat ./top1.txt | /usr/bin/grep 'squid' | /usr/bin/awk '{print $10}'` MPD=`/bin/cat ./top1.txt | /usr/bin/grep 'mpd' | /usr/bin/grep -v 'snmpd' | /usr/bin/awk '{print $10}'` HTTPD=`/bin/cat ./top1.txt | /usr/bin/grep 'httpd' |/usr/bin/awk '{print $10}'` VPN=`/sbin/ifconfig | /usr/bin/grep -c '172.16'` TODAY=`date &quot;+%Y%m%d%H%M&quot;` /usr/local/bin/mysql -u user -ppassword -Dstatus --execute=&quot;insert into system_status set time=${TODAY},process='${PROCESS}',cpu='${CPU}', mem='${MEM_A}',mem_inact='${MEM_I}',mem_wired='${MEM_W}',mem_cache='${MEM_C}',mem_buf='${MEM_B}',mysqld=left('${MYSQLD}', locate('%','${MYSQLD}')),squid=left('${SQUID}',locate('%','${SQUID}')),mpd=left('${MPD}',locate('%','${MPD}')),httpd=left('${HTTPD}', locate('%','${HTTPD}')),vpn='${VPN}'&quot; /usr/local/bin/php /root/cpu.php /usr/local/bin/php /root/memory.php /usr/local/bin/php /root/service.php /usr/local/bin/php /root/vpn.php
  • 14. Lampiran Script graph.php (part 1) <?php function graph() { $arg=func_num_args();$filename=func_get_arg(0);$x=func_get_arg(1); if ($arg>=3) $y1=func_get_arg(2);if ($arg>=4) $y2=func_get_arg(3);if ($arg>=5) $y3=func_get_arg(4); if ($arg>=6) $y4=func_get_arg(5);if ($arg>=7) $y5=func_get_arg(6); $total_data_x=count($x)-1; $total_data_y=count($y1)-1; if ($total_data_x!=$total_data_y) {return (&quot;number of x values must be the same with y values&quot;);} $total_data=$total_data_x; header(&quot;Content-type: image/png&quot;); $imgWidth=600; $imgHeight=170; $image=imagecreate($imgWidth, $imgHeight); $colorWhite=imagecolorallocate($image, 255, 255, 255);$colorGrey=imagecolorallocate($image, 220, 220, 220); $colorBlack=imagecolorallocate($image, 0, 0, 0);$colorDarkBlue=imagecolorallocate($image, 0, 0, 196); $colorLightBlue=imagecolorallocate($image, 184, 212, 250);$colorRed=imagecolorallocate($image, 255, 0, 0); $colorGreen=imagecolorallocate($image, 0, 196, 0);$colorYellow=imagecolorallocate($image, 200, 200, 0); $colorMagenta=imagecolorallocate($image, 0, 200, 200); $offset_x=50; $offset_y=40; imagefilledrectangle($image, $offset_x, $offset_y, $offset_x+440, $offset_y+100, $colorWhite); $interval=floor(440/$total_data); $j=0; for ($i=1; $i<=$total_data; $i++){ if (!strcmp(substr($x[$i],10,2),&quot;00&quot;)) { imagedashedline($image, $offset_x+($i*$interval), $offset_y+4, $offset_x+($i*$interval), $offset_y+96, $colorGrey); $j=$j+1; if (($j%2)==1) { imagestringup($image, 1, $offset_x+($i*$interval)-3, $offset_y+125, substr($x[$i],8,2).'.00', $colorBlack); } } }
  • 15. Lampiran Script graph.php (part 2) $max_y=0; for ($i=1; $i<=$total_data; $i++){ if ($arg>=3) if ($max_y<$y1[$i]) {$max_y=$y1[$i];} if ($arg>=4) if ($max_y<$y2[$i]) {$max_y=$y2[$i];} if ($arg>=5) if ($max_y<$y3[$i]) {$max_y=$y3[$i];} if ($arg>=6) if ($max_y<$y4[$i]) {$max_y=$y4[$i];} if ($arg>=7) if ($max_y<$y5[$i]) {$max_y=$y5[$i];} } $max_y=ceil($max_y/25)*25; if ($max_y==0) $max_y=100; for ($i=1; $i<4; $i++){ imageline($image, $offset_x+4, $offset_y+($i*100/4), $offset_x+436, $offset_y+($i*100/4), $colorGrey); } imagestring($image, 1, $offset_x-10, 138, 0, $colorBlack); imagestring($image, 1, $offset_x-15, 88, $max_y/2, $colorBlack); imagestring($image, 1, $offset_x-20, 38, $max_y, $colorBlack); imagestring($image, 3, $offset_x, $offset_y-30, $x[0], $colorBlack); if ($arg>=3) { for ($i=2; $i<=$total_data; $i++) imageline($image, $offset_x+($i*$interval), $offset_y+100-round($y1[$i]/$max_y*100), $offset_x+(($i-1)*$interval),$offset_y+100-round($y1[$i-1]/$max_y*100), $colorRed); imagefilledrectangle($image, $offset_x+450, $offset_y+10, $offset_x+455, $offset_y+15, $colorRed); imagestring($image, 1, $offset_x+460, $offset_y+9, $y1[0], $colorBlack); } if ($arg>=4) { for ($i=2; $i<=$total_data; $i++) imageline($image, $offset_x+($i*$interval), $offset_y+100-round($y2[$i]/$max_y*100), $offset_x+(($i-1)*$interval),$offset_y+100-round($y2[$i-1]/$max_y*100), $colorGreen); imagefilledrectangle($image, $offset_x+450, $offset_y+25, $offset_x+455, $offset_y+30, $colorGreen); imagestring($image, 1, $offset_x+460, $offset_y+24, $y2[0], $colorBlack); }
  • 16. Lampiran Script graph.php (part 3) if ($arg>=5) { for ($i=2; $i<=$total_data; $i++) imageline($image, $offset_x+($i*$interval), $offset_y+100-round($y3[$i]/$max_y*100), $offset_x+(($i-1)*$interval),$offset_y+100-round($y3[$i-1]/$max_y*100), $colorDarkBlue); imagefilledrectangle($image, $offset_x+450, $offset_y+40, $offset_x+455, $offset_y+45, $colorDarkBlue); imagestring($image, 1, $offset_x+460, $offset_y+39, $y3[0], $colorBlack); } if ($arg>=6) { for ($i=2; $i<=$total_data; $i++) imageline($image, $offset_x+($i*$interval), $offset_y+100-round($y4[$i]/$max_y*100), $offset_x+(($i-1)*$interval),$offset_y+100-round($y4[$i-1]/$max_y*100), $colorYellow); imagefilledrectangle($image, $offset_x+450, $offset_y+55, $offset_x+455, $offset_y+60, $colorYellow); imagestring($image, 1, $offset_x+460, $offset_y+54, $y4[0], $colorBlack); } if ($arg>=7) { for ($i=2; $i<=$total_data; $i++) imageline($image, $offset_x+($i*$interval), $offset_y+100-round($y5[$i]/$max_y*100), $offset_x+(($i-1)*$interval),$offset_y+100-round($y5[$i-1]/$max_y*100), $colorMagenta); imagefilledrectangle($image, $offset_x+450, $offset_y+70, $offset_x+455, $offset_y+75, $colorMagenta); imagestring($image, 1, $offset_x+460, $offset_y+69, $y5[0], $colorBlack); } imagepng($image, $filename); imagedestroy($img); imagedestroy($image); } ?>
  • 17. Lampiran Script mem.php <?php include(&quot;graph.php&quot;); $link=mysql_connect(&quot;localhost&quot;,“user&quot;,“password&quot;); $result=mysql_query(&quot;select count(*) from status.system_status&quot;,$link); $jml_data=mysql_fetch_row($result);mysql_free_result($result); $jml_data[0]=$jml_data[0]-440; $result1=mysql_query(&quot;select time,mem,mem_inact,mem_wired,mem_cache,mem_buf from status.system_status order by nomor asc limit $jml_data[0],440&quot;,$link); $x=array(0); $x[0] ='Persentase Utilitas Memory'; $y1=array(0);$y1[0]='Active Memory'; $y2=array(0);$y2[0]='Inactive Memory'; $y3=array(0);$y3[0]='Wired Memory'; $y4=array(0);$y4[0]='Cache Memory'; $y5=array(0);$y5[0]='Buffer Memory'; $max_mem=2500; for ($i=1; $i<=440; $i++){ $row=mysql_fetch_row($result1); $x[]=$row[0]; $y1[]=floor(100*$row[1]/$max_mem); $y2[]=floor(100*$row[2]/$max_mem); $y3[]=floor(100*$row[3]/$max_mem); $y4[]=floor(100*$row[4]/$max_mem); $y5[]=floor(100*$row[5]/$max_mem); } mysql_close($link);mysql_free_result($result1);$filename=&quot;memory.png&quot;; graph($filename,$x,$y1,$y2,$y3,$y4,$y5); ?>
  • 18. Lampiran Script cpu.php <?php include(&quot;graph.php&quot;); $link=mysql_connect(&quot;localhost&quot;,“user&quot;,“password&quot;); $result=mysql_query(&quot;select count(*) from status.system_status&quot;,$link); $jml_data=mysql_fetch_row($result); mysql_free_result($result); $jml_data[0]=$jml_data[0]-440; $result1=mysql_query(&quot;select time,cpu from status.system_status order by nomor asc limit $jml_data[0],440&quot;,$link); $x=array(0); $x[0] ='Persentase Utilitas CPU'; $y1=array(0);$y1[0]='CPU usage'; for ($i=1; $i<=440; $i++){ $row=mysql_fetch_row($result1); $x[]=$row[0]; $y1[]=100-$row[1]; } mysql_close($link);mysql_free_result($result1); $filename=&quot;cpu.png&quot;; graph($filename,$x,$y1); ?>
  • 19. Lampiran Script hitmiss.sh #!/bin/sh TODAY=`date &quot;+%Y%m%d%H%M&quot;` SQUID=&quot;/usr/local/sbin/squid&quot; SQUID_OPTION=&quot;-f /usr/local/etc/squid/squid.conf -k rotate&quot; TEMP_FOLDER=&quot;/data/log&quot; /bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep 'MISS' | /usr/bin/awk '{print $3 &quot;&quot; $5}' > ${TEMP_FOLDER}/usage.txt HIT=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -c 'HIT'` MISS=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -c 'MISS'` OTHER=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -v 'HIT' | /usr/bin/grep -v 'MISS' | /usr/bin/grep -c ''`