Kumpulan script monitoring mikrotik

 Halo Sobat Hamtronik,

mikrotik routerboard


Kali ini kita akan berbagi beberapa scritp untuk memonitor mikrotik, tentunya akan sangat berguna sekali ketika kita akan membuat monitor dengan interface external misal dengan arduino.

Baik beerikut beberapa script yang dapat digunakan:

BarisKode SkripPenjelasan Fungsi
1:local sysnumber [/system identity get name]Mendefinisikan variabel lokal bernama sysnumber. Variabel ini akan menyimpan nama identitas sistem (nama router) yang diambil dari konfigurasi /system identity. (Meskipun didefinisikan, variabel ini tidak digunakan di baris-baris berikutnya dalam skrip yang Anda berikan).
2/interface monitor-traffic "ether1 - ISP 1" once do={...}Ini adalah perintah utama. Perintah ini memantau trafik pada interface yang bernama "ether1 - ISP 1".
3:local upload ((($"tx-bits-per-second")/1024)/1024)Mendefinisikan variabel lokal bernama upload. Nilai yang disimpan adalah kecepatan transmisi (tx-bits-per-second atau upload saat ini), yang kemudian dibagi 1024 dua kali (dibagi 1024 untuk menjadi Kilobit, lalu dibagi 1024 lagi untuk menjadi Megabit per detik atau Mbps).
4:local download ((($"rx-bits-per-second")/1024)/1024)Mendefinisikan variabel lokal bernama download. Nilai yang disimpan adalah kecepatan penerimaan (rx-bits-per-second atau download saat ini), yang kemudian dibagi 1024 dua kali untuk menjadi Megabit per detik (Mbps).
5/tool fetch url="http://192.168.60.1/log/bandwidth\?upload=$upload&download=$download" mode=http keep-result=noPerintah untuk mengirimkan permintaan HTTP (biasanya GET) ke alamat URL tertentu.
BarisKode SkripPenjelasan Fungsi
1/tool ping 8.8.8.8 count=5 do={...}Menjalankan perintah ping ke alamat 8.8.8.8 sebanyak 5 kali.
2:local avg_rtt $min-rttMendefinisikan variabel lokal avg_rtt. PENTING: Saat dieksekusi dalam do={...} dari tool ping, variabel khusus $min-rtt, $avg-rtt, dan $max-rtt akan berisi hasil ping. Di sini, kita menggunakan $min-rtt sebagai contoh, tetapi Anda bisa menggunakan $avg-rtt (rata-rata) atau $max-rtt (maksimum).
3/tool fetch url="http://192.168.60.1/log/latency\?rtt=$avg_rtt" mode=http keep-result=noMengirimkan data RTT (Round Trip Time) atau latency ke server monitoring eksternal.
BarisKode SkripPenjelasan Fungsi
1:local temp [/system health get temperature]Mendefinisikan variabel lokal temp. Nilainya adalah suhu CPU (dalam Celcius) yang diambil dari /system health.
2:local voltage [/system health get voltage]Mendefinisikan variabel lokal voltage. Nilainya adalah tegangan input (dalam Volt) yang diambil dari /system health.
3/tool fetch url="http://192.168.60.1/log/health\?temp=$temp&volt=$voltage" mode=http keep-result=noMengirimkan data Suhu dan Tegangan ke server monitoring eksternal.
BarisKode SkripPenjelasan Fungsi
1:local cpuuse [/system resource get cpu-load]Mendefinisikan variabel lokal cpuuse. Nilainya diambil dari persentase beban CPU saat ini di /system resource.
2:local memfree [/system resource get free-memory]Mendefinisikan variabel lokal memfree. Nilainya adalah jumlah memori bebas (dalam Byte) yang tersedia di router.
3:local memtotal [/system resource get total-memory]Mendefinisikan variabel lokal memtotal. Nilainya adalah jumlah total memori (dalam Byte) pada router.
4:local mempercent (100 - (($memfree * 100) / $memtotal))Menghitung persentase penggunaan Memori saat ini: 100 - ((Memori Bebas * 100) / Total Memori).
5/tool fetch url="http://192.168.60.1/log/resource\?cpu=$cpuuse&mem=$mempercent" mode=http keep-result=noMengirimkan data persentase CPU dan persentase Memori ke server monitoring eksternal.

🚀 Skrip Monitoring Gabungan Lengkap

Skrip ini akan mengukur data dan mengirimkannya dalam dua permintaan HTTP terpisah untuk menjaga keterbacaan data di sisi server eksternal (192.168.60.1).

:local sysid [/system identity get name]


## 1. MENGAMBIL DATA TRAFIK (BANDWIDTH)

/interface monitor-traffic "ether1 - ISP 1" once do={

   :local upload ((($"tx-bits-per-second")/1024)/1024)

   :local download ((($"rx-bits-per-second")/1024)/1024)

   /tool fetch url="http://192.168.60.1/log/bandwidth\?id=$sysid&upload=$upload&download=$download" mode=http keep-result=no

}


## 2. MENGAMBIL DATA SUMBER DAYA & HEALTH

:local cpuuse [/system resource get cpu-load]

:local memfree [/system resource get free-memory]

:local memtotal [/system resource get total-memory]

:local temp [/system health get temperature]

:local voltage [/system health get voltage]


# Hitung persentase memori terpakai

:local mempercent (100 - (($memfree * 100) / $memtotal))


# Kirim data Sumber Daya dan Health

/tool fetch url="http://192.168.60.1/log/resource\?id=$sysid&cpu=$cpuuse&mem=$mempercent&temp=$temp&volt=$voltage" mode=http keep-result=no


## 3. MENGAMBIL DATA LATENCY (KETERLAMBATAN)

/tool ping 8.8.8.8 count=3 interval=0.2 do={

   :local avg_rtt $avg-rtt

   # Hapus karakter "ms" dari hasil jika ada, untuk memastikan nilai murni (opsional)

   :if ([:find $avg_rtt "ms"] > 0) do={

      :set avg_rtt [:replace $avg_rtt "ms" ""]

   }

   /tool fetch url="http://192.168.60.1/log/latency\?id=$sysid&rtt=$avg_rtt" mode=http keep-result=no

}


📝 Penjelasan Tambahan dan Penerapan

1. Variabel Global (sysid)

Di baris pertama, saya menambahkan variabel :local sysid yang mengambil Nama Identitas Sistem. Variabel ini disertakan dalam setiap permintaan fetch (id=$sysid) agar server eksternal Anda tahu router mana yang mengirimkan data tersebut.

2. Pengiriman Data

  • Data Trafik dikirimkan ke: http://192.168.60.1/log/bandwidth

  • Data Sumber Daya/Health dikirimkan ke: http://192.168.60.1/log/resource

  • Data Latency dikirimkan ke: http://192.168.60.1/log/latency

3. Penerapan di Scheduler

Untuk menjalankan skrip ini secara otomatis (misalnya, setiap 60 detik), Anda harus menambahkannya ke System Scheduler:

  1. Buka System > Scheduler.

  2. Klik tombol '+' untuk menambah baru.

  3. Name: Monitor-Semua-Data

  4. Start Date: Sep/01/2025 (atau tanggal hari ini)

  5. Start Time: 00:00:00

  6. Interval: 1m (untuk berjalan setiap 1 menit)

  7. Salin dan tempelkan seluruh kode skrip di atas ke kolom On Event.

  8. Klik OK.

Dengan begini, setiap menit, router akan mengukur semua metrik yang ditentukan dan mengirimkannya ke server eksternal Anda.



Post a Comment

Lebih baru Lebih lama