├── README.md ├── Scheduler BANDWIDTH-MONITORING ├── Scheduler RESET-RXTX └── mikrotik bandwidth monitoring script.png /README.md: -------------------------------------------------------------------------------- 1 | ## Mikrotik Bandwidth Monitoring Script 2 | 3 | Script Bandwidth monitoring ini hampir 100% akurat mungkin seakurat Cacti Monitoring, sebenarnya rencana awal saya gunakan untuk memantau FUP Quota Indihome namun saya tidak memahami algoritma yang digunakan sistem telkom seperti apa, makanya hasil selalu berbeda, mungkin ini berkaitan dengan streaming yang tidak termasuk dalam sistem FUP mereka. 4 | 5 | ![image](https://user-images.githubusercontent.com/42666125/111258795-40f16680-8650-11eb-94db-859fbe740518.png) 6 | 7 | Silahkan paste script ini di terminal mikrotik 8 | 9 | /system scheduler add interval="00:00:00" name="RXByte.log" on-event="1" start-time="00:00:00" 10 | /system scheduler add interval="00:00:00" name="RXByteCur.log" on-event="1" start-time="00:00:00" 11 | /system scheduler add interval="00:00:00" name="TXByte.log" on-event="1" start-time="00:00:00" 12 | /system scheduler add interval="00:00:00" name="TXByteCur.log" on-event="1" start-time="00:00:00" 13 | /system scheduler add interval="00:01:00" name="RESET-RXTX" start-time=startup 14 | /system scheduler add interval="00:0:030" name="BANDWIDTH-MONITORING" start-time=startup 15 | 16 | Copy Paste Script reset bulanan ini dalam file Scheduler RESET-RXTX 17 | 18 |
 19 |  ################################################################  
 20 |  # Script by Agus Ramadhani  
 21 |  # fb.com/buananet.pangkalanbun  
 22 |  # http://www.o-om.com  
 23 |  # SCRIPT MIKROTIK BANDWIDTH MONITORING  
 24 |  # Version 1.0  
 25 |  ################################################################  
 26 |  # Fungsi untuk reset Bulanan Setiap tanggal 1  
 27 |  ################################################################  
 28 |  :local varDate;  
 29 |  :local varDay;  
 30 |  :set varDate [/system clock get date];  
 31 |  :set varDay [:pick $varDate 4 6];  
 32 |  :if ($varDay = "01") do={   
 33 |  # jika har ini tanggal 1 reset RXTX ke nilai awal  
 34 |  /system scheduler set RXByte.log comment="1" on-event="1"  
 35 |  /system scheduler set RXByteCur.log comment="1" on-event="1"  
 36 |  /system scheduler set TXByte.log comment="1" on-event=$RXByteCount  
 37 |  /system scheduler set TXByteCur.log comment="1" on-event="1"  
 38 |  /system scheduler disable [/system scheduler find name="RESET-RXTX"]  
 39 |  }  
 40 |  ################################################################  
 41 |  
42 | 43 | Copy Paste Script Monitoring ini dalam file Scheduler BANDWIDTH-MONITORING 44 | 45 |
 ################################################################  
 46 |  # Script by Agus Ramadhani  
 47 |  # fb.com/buananet.pangkalanbun  
 48 |  # http://www.o-om.com  
 49 |  # SCRIPT MIKROTIK BANDWIDTH MONITORING  
 50 |  # Version 1.0  
 51 |  ################################################################  
 52 |  :local INTMon WAN-WARNET;  
 53 |  # silahkan ganti dengan interface (ether) yang ingin dipantau  
 54 |  ################################################################  
 55 |  :local TOTQuota 500;  
 56 |  # Set total quota dalam GB misalkan ISP hanya memberikan hanya 500GB  
 57 |  ################################################################  
 58 |  :local RXByteCur [/interface get $INTMon rx-byte];  
 59 |  # Mengambil nilai RX-Byte saat ini pada interface terpilih  
 60 |  ################################################################  
 61 |  :local RXByteCount [/system scheduler get RXByteCur.log on-event];  
 62 |  # Mengambil nilai RX-Byte dalam file log RXByteCur  
 63 |  ################################################################  
 64 |  :local RXByte [/system scheduler get RXByte.log on-event];  
 65 |  # Mengambil nilai RX-Byte sebelumnya dalam file log RXByte  
 66 |  ################################################################  
 67 |  :local TXByteCur [/interface get $INTMon tx-byte];  
 68 |  # Mengambil nilai TX-Byte saat ini pada interface terpilih  
 69 |  ################################################################  
 70 |  :local TXByteCount [/system scheduler get TXByteCur.log on-event];  
 71 |  # Mengambil nilai TX-Byte saat ini dalam file log TXByteCur  
 72 |  ################################################################  
 73 |  :local TXByte [/system scheduler get TXByte.log on-event];  
 74 |  # Mengambil nilai TX-Byte saat ini dalam file Log TXByte  
 75 |  ################################################################  
 76 |  :local ifReboot 0;  
 77 |  # kita perlu mengetahui apakah router reboot   
 78 |  ################################################################  
 79 |  :if ($RXByteCur>=$RXByteCount) do={} else={:set $ifReboot ($ifReboot+1);}  
 80 |  :if ($TXByteCur>=$TXByteCount) do={} else={:set $ifReboot ($ifReboot+1);}  
 81 |  # Tandai jika nilai RXTX-Byte saat ini lebih besar dari RXTX-Byte pada log  
 82 |  ################################################################  
 83 |  :if ($ifReboot>=1) do={  
 84 |  # Cek Jika Router Reboot  
 85 |  ################################################################  
 86 |  :set $RXByte ($RXByte+$RXByteCount);  
 87 |  /system scheduler set RXByte.log comment=$RXByte on-event=$RXByte  
 88 |  # jika komputer reboot jumlahkan total RX-Byte  
 89 |  ################################################################  
 90 |  :set $TXByte ($TXByte+$TXByteCount);  
 91 |  /system scheduler set TXByte.log comment=$TXByte on-event=$TXByte  
 92 |  } else={  
 93 |  # jika komputer reboot jumlahkan total TX-Byte  
 94 |  ################################################################  
 95 |  }  
 96 |  :set RXByteCount ($RXByteCur);  
 97 |  /system scheduler set RXByteCur.log comment=$RXByteCount on-event=$RXByteCount  
 98 |  # Perbaharui nilai RX-Byte saat ini pada file log RXByteCur  
 99 |  ################################################################  
100 |  :set TXByteCount ($TXByteCur);  
101 |  /system scheduler set TXByteCur.log comment=$TXByteCount on-event=$TXByteCount  
102 |  # Perbaharui nilai TX-Byte saat ini pada file log TXByteCur  
103 |  ################################################################  
104 |  :local RXTot ($RXByte+$RXByteCur);  
105 |  :local RXMB ($RXTot / 1024 / 1024);  
106 |  :local RXGB ($RXTot / 1024 / 1024 / 1024);  
107 |  # kalkulasi nilai RX-BYTE dalam MB dan GB  
108 |  ################################################################  
109 |  :local TXTot ($TXByte+$TXByteCur);  
110 |  :local TXMB ($TXTot / 1024 / 1024);  
111 |  :local TXGB ($TXTot / 1024 / 1024 / 1024);  
112 |  # kalkulasi nilai TX-BYTE dalam MB dan GB  
113 |  ################################################################  
114 |  :local RXTX ($RXTot+$TXTot);  
115 |  :local RXTXMB ($RXMB+$TXMB);  
116 |  :local RXTXGB ($RXGB+$TXGB);  
117 |  # Total kalkulasi nilai Total RXTX  
118 |  ################################################################  
119 |  :log warning "###############################################";  
120 |  :log warning "BANDWIDTH MONITORING [ Router Identity: $[/system identity get name] ]";  
121 |  :log warning "###############################################";  
122 |  :log warning "Interface Monitoring For: $INTMon";  
123 |  /interface monitor-traffic [/interface find name=$INTMon] once do={  
124 |  :local tx (tx-bits-per-second / 1024);  
125 |  :local rx (rx-bits-per-second / 1024);  
126 |  :log warning "Live Monitor RX = $rx kbps / TX = $tx kbps";  
127 |  }  
128 |  # hanya untuk menampilkan rxtx saat ini  
129 |  ###############################################################  
130 |  :log warning "Total RX = $RXGB GB / $RXMB MB / $RXTot Bytes";  
131 |  :log warning "Total TX = $TXGB GB / $TXMB MB / $TXTot Bytes";  
132 |  :log warning "Total (RX+TX) = $RXTXGB GB / $RXTXMB MB / $RXTX Bytes";  
133 |  :local percent ($RXTXGB*100 / $TOTQuota);  
134 |  :log error "Used Quota On This Month = $RXTXGB GB = $percent% from $TOTQuota GB";  
135 |  :log warning "###############################################";  
136 |  # Tampilkan Info pada LOG Mikrotik   
137 |  ################################################################  
138 |  :local varDate;  
139 |  :local varDay;  
140 |  :set varDate [/system clock get date];  
141 |  :set varDay [:pick $varDate 4 6];  
142 |  :if ($varDay = "29") do={   
143 |  # jika hari ini tanggal 29 aktifkan RESET-RXTX  
144 |  /system scheduler enable [/system scheduler find name="RESET-RXTX"];  
145 |  }  
146 |  ################################################################  
147 | 
148 | 149 | jangan lupa ganti nama ether dalam script sesuai interface masing2 yang ingin dipantau 150 | 151 | :local INTMon WAN-WARNET; 152 | 153 | jangan Lupa ganti total quota yang diberikan ISP masing2 dicontoh adalah 500GB 154 | 155 | :local TOTQuota 500; 156 | 157 | 158 | ## License
159 | [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) 160 | ![License: CC0-1.0](https://img.shields.io/badge/License-CC0_1.0-lightgrey.svg) 161 | -------------------------------------------------------------------------------- /Scheduler BANDWIDTH-MONITORING: -------------------------------------------------------------------------------- 1 | ################################################################ 2 | # Script by Agus Ramadhani 3 | # fb.com/buananet.pangkalanbun 4 | # http://www.o-om.com 5 | # SCRIPT MIKROTIK BANDWIDTH MONITORING 6 | # Version 1.0 7 | ################################################################ 8 | :local INTMon WAN-WARNET; 9 | # silahkan ganti dengan interface (ether) yang ingin dipantau 10 | ################################################################ 11 | :local TOTQuota 500; 12 | # Set total quota dalam GB misalkan ISP hanya memberikan hanya 500GB 13 | ################################################################ 14 | :local RXByteCur [/interface get $INTMon rx-byte]; 15 | # Mengambil nilai RX-Byte saat ini pada interface terpilih 16 | ################################################################ 17 | :local RXByteCount [/system scheduler get RXByteCur.log on-event]; 18 | # Mengambil nilai RX-Byte dalam file log RXByteCur 19 | ################################################################ 20 | :local RXByte [/system scheduler get RXByte.log on-event]; 21 | # Mengambil nilai RX-Byte sebelumnya dalam file log RXByte 22 | ################################################################ 23 | :local TXByteCur [/interface get $INTMon tx-byte]; 24 | # Mengambil nilai TX-Byte saat ini pada interface terpilih 25 | ################################################################ 26 | :local TXByteCount [/system scheduler get TXByteCur.log on-event]; 27 | # Mengambil nilai TX-Byte saat ini dalam file log TXByteCur 28 | ################################################################ 29 | :local TXByte [/system scheduler get TXByte.log on-event]; 30 | # Mengambil nilai TX-Byte saat ini dalam file Log TXByte 31 | ################################################################ 32 | :local ifReboot 0; 33 | # kita perlu mengetahui apakah router reboot 34 | ################################################################ 35 | :if ($RXByteCur>=$RXByteCount) do={} else={:set $ifReboot ($ifReboot+1);} 36 | :if ($TXByteCur>=$TXByteCount) do={} else={:set $ifReboot ($ifReboot+1);} 37 | # Tandai jika nilai RXTX-Byte saat ini lebih besar dari RXTX-Byte pada log 38 | ################################################################ 39 | :if ($ifReboot>=1) do={ 40 | # Cek Jika Router Reboot 41 | ################################################################ 42 | :set $RXByte ($RXByte+$RXByteCount); 43 | /system scheduler set RXByte.log comment=$RXByte on-event=$RXByte 44 | # jika komputer reboot jumlahkan total RX-Byte 45 | ################################################################ 46 | :set $TXByte ($TXByte+$TXByteCount); 47 | /system scheduler set TXByte.log comment=$TXByte on-event=$TXByte 48 | } else={ 49 | # jika komputer reboot jumlahkan total TX-Byte 50 | ################################################################ 51 | } 52 | :set RXByteCount ($RXByteCur); 53 | /system scheduler set RXByteCur.log comment=$RXByteCount on-event=$RXByteCount 54 | # Perbaharui nilai RX-Byte saat ini pada file log RXByteCur 55 | ################################################################ 56 | :set TXByteCount ($TXByteCur); 57 | /system scheduler set TXByteCur.log comment=$TXByteCount on-event=$TXByteCount 58 | # Perbaharui nilai TX-Byte saat ini pada file log TXByteCur 59 | ################################################################ 60 | :local RXTot ($RXByte+$RXByteCur); 61 | :local RXMB ($RXTot / 1024 / 1024); 62 | :local RXGB ($RXTot / 1024 / 1024 / 1024); 63 | # kalkulasi nilai RX-BYTE dalam MB dan GB 64 | ################################################################ 65 | :local TXTot ($TXByte+$TXByteCur); 66 | :local TXMB ($TXTot / 1024 / 1024); 67 | :local TXGB ($TXTot / 1024 / 1024 / 1024); 68 | # kalkulasi nilai TX-BYTE dalam MB dan GB 69 | ################################################################ 70 | :local RXTX ($RXTot+$TXTot); 71 | :local RXTXMB ($RXMB+$TXMB); 72 | :local RXTXGB ($RXGB+$TXGB); 73 | # Total kalkulasi nilai Total RXTX 74 | ################################################################ 75 | :log warning "###############################################"; 76 | :log warning "BANDWIDTH MONITORING [ Router Identity: $[/system identity get name] ]"; 77 | :log warning "###############################################"; 78 | :log warning "Interface Monitoring For: $INTMon"; 79 | /interface monitor-traffic [/interface find name=$INTMon] once do={ 80 | :local tx (tx-bits-per-second / 1024); 81 | :local rx (rx-bits-per-second / 1024); 82 | :log warning "Live Monitor RX = $rx kbps / TX = $tx kbps"; 83 | } 84 | # hanya untuk menampilkan rxtx saat ini 85 | ############################################################### 86 | :log warning "Total RX = $RXGB GB / $RXMB MB / $RXTot Bytes"; 87 | :log warning "Total TX = $TXGB GB / $TXMB MB / $TXTot Bytes"; 88 | :log warning "Total (RX+TX) = $RXTXGB GB / $RXTXMB MB / $RXTX Bytes"; 89 | :local percent ($RXTXGB*100 / $TOTQuota); 90 | :log error "Used Quota On This Month = $RXTXGB GB = $percent% from $TOTQuota GB"; 91 | :log warning "###############################################"; 92 | # Tampilkan Info pada LOG Mikrotik 93 | ################################################################ 94 | :local varDate; 95 | :local varDay; 96 | :set varDate [/system clock get date]; 97 | :set varDay [:pick $varDate 4 6]; 98 | :if ($varDay = "29") do={ 99 | # jika hari ini tanggal 29 aktifkan RESET-RXTX 100 | /system scheduler enable [/system scheduler find name="RESET-RXTX"]; 101 | } 102 | ################################################################ 103 | -------------------------------------------------------------------------------- /Scheduler RESET-RXTX: -------------------------------------------------------------------------------- 1 | ################################################################ 2 | # Script by Agus Ramadhani 3 | # fb.com/buananet.pangkalanbun 4 | # http://www.o-om.com 5 | # SCRIPT MIKROTIK BANDWIDTH MONITORING 6 | # Version 1.0 7 | ################################################################ 8 | # Fungsi untuk reset Bulanan Setiap tanggal 1 9 | ################################################################ 10 | :local varDate; 11 | :local varDay; 12 | :set varDate [/system clock get date]; 13 | :set varDay [:pick $varDate 4 6]; 14 | :if ($varDay = "01") do={ 15 | # jika har ini tanggal 1 reset RXTX ke nilai awal 16 | /system scheduler set RXByte.log comment="1" on-event="1" 17 | /system scheduler set RXByteCur.log comment="1" on-event="1" 18 | /system scheduler set TXByte.log comment="1" on-event=$RXByteCount 19 | /system scheduler set TXByteCur.log comment="1" on-event="1" 20 | /system scheduler disable [/system scheduler find name="RESET-RXTX"] 21 | } 22 | ################################################################ 23 | -------------------------------------------------------------------------------- /mikrotik bandwidth monitoring script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buananetpbun/Mikrotik-Bandwidth-Monitoring-Script/21518d7e4ef025048ba12b97beb1d43ea81eed49/mikrotik bandwidth monitoring script.png --------------------------------------------------------------------------------