Server

Monitoring Jaringan dengan Cacti: Dari Instalasi Debian 13 hingga MikroTik

Tutorial membangun monitoring jaringan dengan Cacti di Debian 13 (VirtualBox) dan memantau MikroTik lewat SNMP.

fahreja · 23 Oktober 2026 · 10 menit baca

Monitoring jaringan membantu kita mengetahui kondisi perangkat, penggunaan bandwidth, dan perubahan trafik dari waktu ke waktu. Pada tutorial ini kita membangun server monitoring menggunakan Cacti di Debian 13 yang berjalan di VirtualBox, lalu menghubungkannya ke perangkat MikroTik melalui SNMP.

Alurnya: VirtualBox → konfigurasi jaringan → repository → Apache, PHP, MariaDB, SNMP → Cacti → tambah device MikroTik. Di bagian akhir ada daftar error umum beserta cara memperbaikinya.

Cara Menginstall VirtualBox

Cara Menginstall Debian di VirtualBox

Info

Catatan: Tutorial ini disusun untuk praktik lab. Pahami alasan di balik setiap perintah, jangan hanya menyalinnya. Nama interface, IP, dan versi paket bisa berbeda di setiap lingkungan.

text
Adapter 1 (NAT)     ──► internet, untuk apt update
Adapter 2 (Bridged) ──► jaringan lokal, untuk akses Cacti / SSH
Debian 13 (Cacti) ── SNMP ── MikroTik

1. Siapkan Virtual Machine

Buka VirtualBox, pilih VM Debian yang sudah dibuat, lalu klik Settings → Network. Atur dua adapter jaringan:

text
Adapter 1 : NAT              # akses internet (apt update, download paket)
Adapter 2 : Bridged Adapter  # diakses dari jaringan lokal / host

Pada Adapter 2, pilih NIC fisik yang sedang aktif di laptop (WiFi atau Ethernet), bukan adapter virtual lain. Setelah itu nyalakan VM.

network-adapter
Pengaturan Network Adapter untuk Debian.

2. Cek IP Jaringan Host

Di Windows, buka Command Prompt lalu jalankan:

text
ipconfig

Catat IP address dan subnet dari adapter yang sama dengan jaringan Bridged tadi, misalnya 192.168.40.87. IP Debian nanti dibuat satu segmen dengan IP ini.

3. Konfigurasi Jaringan Debian

Login sebagai root, lalu edit file interfaces:

bash
nano /etc/network/interfaces

Isi atau sesuaikan seperti berikut:

ini
auto enp0s3
iface enp0s3 inet dhcp

auto enp0s8
iface enp0s8 inet static
    address 192.168.40.102
    netmask 255.255.255.0

Sesuaikan address dengan segmen IP host. Simpan dengan Ctrl+O, Enter, Ctrl+X, lalu restart service jaringan:

bash
systemctl restart networking
Peringatan

Nama interface (enp0s3 dan enp0s8) bisa berbeda. Jalankan ip a dulu untuk melihat nama aslinya, lalu sesuaikan isi file di atas.

hasil-ip-a
Hasil ip a yang menunjukkan interface Debian.

4. Setting Repository dan Update

Edit daftar repository:

bash
nano /etc/apt/sources.list
text
deb https://deb.debian.org/debian trixie main contrib non-free non-free-firmware
deb https://deb.debian.org/debian trixie-updates main contrib non-free non-free-firmware
deb https://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware

Simpan, lalu update sistem:

bash
apt update
apt upgrade -y

5. Install Web Server, PHP, Database, dan SNMP

Install Apache2:

bash
apt install apache2 -y

Install PHP beserta modul-modulnya:

bash
apt install php php-cli php-common libapache2-mod-php php-mysql php-gd \
php-curl php-xml php-mbstring php-zip php-snmp php-gmp php-intl -y

Install MariaDB, lalu amankan:

bash
apt install mariadb-server mariadb-client -y
mysql_secure_installation

Ikuti wizard: set password root, hapus anonymous user, nonaktifkan login root remote, hapus test database. Jawab Y untuk semua rekomendasi.

Info

Pada MariaDB versi baru, perintah mysql_* juga tersedia dengan nama mariadb-* (misalnya mariadb-secure-installation). Jika perintah mysql_* tidak ditemukan, pakai versi mariadb-*-nya.

Install SNMP dan RRDtool (mesin grafik Cacti):

bash
apt install snmp snmpd rrdtool -y

Install Cacti:

bash
apt install cacti -y

Saat instalasi muncul dialog dbconfig-common. Pilih Yes, configure database, lalu masukkan password root MariaDB yang dibuat tadi. Jika diminta memilih web server, pilih apache2.

Aktifkan dan jalankan semua service:

bash
systemctl enable apache2 mariadb snmpd
systemctl restart apache2 mariadb snmpd

6. Verifikasi dan Akses Cacti

Cek status service:

bash
systemctl status apache2
systemctl status mariadb
systemctl status snmpd

Cek versi aplikasi yang terpasang:

bash
apache2 -v
php -v
mariadb --version

Lalu buka dari browser:

text
http://IP_SERVER/cacti

IP_SERVER adalah alamat static enp0s8 dari Langkah 3, misalnya 192.168.40.102. Login bawaan Cacti adalah admin dengan password admin, dan sistem akan meminta kamu menggantinya.

login-cacti
Halaman Login Cacti.

7. Install dan Konfigurasi SSH

SSH memudahkan kita mengelola server dari komputer utama.

bash
apt install openssh-server -y
nano /etc/ssh/sshd_config

Cari baris PermitRootLogin lalu ubah nilainya:

text
PermitRootLogin yes

Baris ini biasanya diawali tanda # (komentar). Hapus tanda pagarnya supaya setting benar-benar aktif. Simpan, lalu restart SSH:

bash
systemctl restart ssh
systemctl enable ssh

Coba akses dari komputer lain:

bash
ssh root@IP_DEBIAN
Peringatan

Login SSH sebagai root dengan password hanya cocok untuk lab. Pada server sungguhan, gunakan user biasa dengan SSH key dan matikan login root.

8. Setting Timezone di MariaDB

Cacti membutuhkan data timezone di database agar waktu di grafik akurat. Import data timezone dunia:

bash
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Opsional, set timezone default server MariaDB ke WIB. Buka file konfigurasinya:

bash
nano /etc/mysql/mariadb.conf.d/50-server.cnf

Pada bagian [mysqld], tambahkan satu baris ini di paling bawah bagian tersebut. Jangan hapus atau ubah baris bawaan lainnya:

ini
default-time-zone = '+07:00'

Simpan, lalu restart:

bash
systemctl restart mariadb

Beri akses tabel timezone ke user database Cacti:

bash
mysql -u root -p
sql
GRANT SELECT ON mysql.time_zone_name TO 'cacti'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Opsional, samakan timezone PHP. Cari file php.ini yang dipakai Apache (folder bergantung pada versi PHP, cek dengan php -v; Debian 13 umumnya memakai PHP 8.4):

bash
nano /etc/php/8.4/apache2/php.ini
ini
date.timezone = Asia/Jakarta
bash
systemctl restart apache2

9. Hapus Database Cacti dan Buat Baru (Opsional)

Peringatan

Langkah ini menghapus semua device, graph, dan data yang sudah ada di Cacti. Lakukan hanya jika memang ingin reset total.

Masuk ke MariaDB:

bash
mysql -u root -p

Hapus database lama, lalu buat yang baru:

sql
DROP DATABASE cacti;
CREATE DATABASE cacti CHARACTER SET utf8mb4;

Pastikan user cacti masih punya hak akses ke database baru:

sql
GRANT ALL PRIVILEGES ON cacti.* TO 'cacti'@'localhost' IDENTIFIED BY 'PASSWORD_BARU';
FLUSH PRIVILEGES;
EXIT;

Jalankan ulang wizard paket Cacti supaya schema diimport ke database baru:

bash
dpkg-reconfigure cacti

Pilih Yes, configure database dan masukkan password root MariaDB. Setelah itu buka lagi http://IP_SERVER/cacti dan lanjutkan instalasi dari awal.

10. Mengatasi Error Modul PHP intl

Saat precheck, Cacti memeriksa beberapa modul PHP, termasuk intl (untuk format tanggal, angka, dan bahasa). Jika modul ini belum ada atau belum aktif, precheck akan menandainya bermasalah.

bash
apt install php-intl -y
phpenmod intl
systemctl restart apache2

Verifikasi:

bash
php -m | grep intl

Jika outputnya intl, modul sudah aktif. Refresh halaman precheck Cacti untuk memeriksa ulang statusnya.

11. Tambah Device MikroTik ke Cacti

Pastikan dulu SNMP aktif di MikroTik. Lewat Winbox: IP → SNMP, centang Enabled, lalu catat atau atur nilai Community. Bisa juga lewat terminal:

routeros
/snmp set enabled=yes
/snmp print
Peringatan

Community public adalah nilai bawaan dan hanya cocok untuk lab. Pada jaringan sungguhan, pakai nama community lain dan batasi akses SNMP hanya dari IP server monitoring.

Uji dari Debian sebelum menambahkan device:

bash
snmpwalk -v2c -c public IP_MIKROTIK

Jika muncul banyak informasi perangkat, komunikasi SNMP sudah berjalan. Login ke Cacti, lalu buka Console → Create → New Device dan isi:

text
Description      : Mikrotik-Router
Hostname         : IP_MIKROTIK
Host Template    : Net-SNMP Device / Generic SNMP-enabled Host
Downed Detection : SNMP Uptime
SNMP Version     : 1 atau 2   (samakan dengan MikroTik)
SNMP Community   : public     (samakan dengan MikroTik)

Klik Create, lalu lihat bagian SNMP Information. Jika muncul informasi system dan uptime, Cacti sudah berhasil terhubung ke MikroTik.

Tambahkan grafiknya lewat Console → Create → New Graphs. Pilih device MikroTik tadi, pilih data query SNMP Interface Statistics, centang interface yang ingin dipantau (misalnya ether1), lalu klik Create.

Tunggu poller Cacti berjalan (default tiap 5 menit) sampai grafik mulai terisi data.

12. Konfigurasi php.ini (memory_limit dan max_execution_time)

Nilai bawaan PHP kadang kurang besar untuk Cacti, terutama jika grafiknya banyak. Naikkan agar tidak muncul error kehabisan memori atau proses terputus di tengah jalan. Buka php.ini yang dipakai Apache (sesuaikan versi PHP, cek dengan php -v):

bash
nano /etc/php/8.4/apache2/php.ini

Cari dengan Ctrl+W, lalu ubah nilainya:

ini
memory_limit = 512M
max_execution_time = 60

Simpan, lalu restart Apache:

bash
systemctl restart apache2

Kemungkinan Error dan Cara Memperbaikinya

Daftar ini bukan untuk dihafal, tapi untuk membantu membaca error dengan tenang. Cocokkan pesan error dengan daftar berikut sebelum bertanya.

Jaringan

  • Bridged Adapter tidak dapat internet atau IP tidak muncul. Pastikan Adapter 2 mengarah ke NIC fisik yang sedang terhubung, bukan adapter virtual (Host-Only, VPN, dan sejenisnya). Cek dengan ip a. Jika enp0s8 tidak mendapat IP, jalankan systemctl restart networking.
  • Nama interface bukan enp0s3 atau enp0s8. Jalankan ip a untuk melihat nama aslinya, lalu sesuaikan isi /etc/network/interfaces.
  • apt update: "Could not resolve deb.debian.org" atau timeout. Ini masalah DNS atau koneksi dari adapter NAT, bukan repository. Tes dengan ping 8.8.8.8. Jika ping IP berhasil tapi domain gagal, tambahkan nameserver 8.8.8.8 ke /etc/resolv.conf.
  • Tidak bisa membuka http://IP_SERVER/cacti dari komputer lain. Pastikan memakai IP enp0s8 (bridged). Jika tetap gagal, cek ufw status. Jika firewall aktif, izinkan port 80 dengan ufw allow 80.

Paket dan service

  • Unable to locate package .... Isi sources.list salah ketik (baris ketiga paling rawan) atau belum di-update. Periksa lagi, lalu jalankan apt update.
  • mysql_secure_installation: "Access denied" atau tidak bisa connect. Service database belum jalan. Cek systemctl status mariadb, dan jika inactive, jalankan systemctl start mariadb.
  • Apache gagal start: "Address already in use". Ada service lain yang memakai port 80. Cek dengan ss -tulnp | grep :80, lalu hentikan service yang bentrok atau ganti port di /etc/apache2/ports.conf.
  • Halaman /cacti error database atau blank putih. Lihat log dengan tail -n 30 /var/log/apache2/error.log. Biasanya password database di /etc/cacti/debian.php tidak cocok dengan MariaDB.

SSH

  • Connection refused. Service SSH belum aktif. Cek systemctl status ssh, dan jika inactive, jalankan systemctl restart ssh. Periksa juga typo di /etc/ssh/sshd_config.
  • Permission denied (publickey,password) saat ssh root@IP. Baris PermitRootLogin masih berupa komentar (#) atau masih bernilai prohibit-password. Pastikan persis PermitRootLogin yes tanpa tanda pagar, lalu systemctl restart ssh.
  • Connection timed out. Biasanya masalah jaringan Bridged, bukan SSH. Tes ping IP_DEBIAN dari komputer itu. Jika ping gagal, benahi jaringan (Langkah 1 dan 3) dulu.

Database dan timezone

  • ERROR 1146: Table 'mysql.time_zone_name' doesn't exist. Import timezone belum dijalankan atau gagal di tengah jalan. Ulangi mysql_tzinfo_to_sql ... dan pastikan tidak ada error sebelum lanjut ke GRANT.
  • Jam di grafik tidak sesuai WIB. Cek tiga tempat: default-time-zone di MariaDB (Langkah 8), date.timezone di php.ini (Langkah 8), dan Server Timezone di Cacti (Console → Configuration → Settings → General). Ketiganya harus konsisten Asia/Jakarta.
  • dpkg-reconfigure cacti gagal: "ERROR 1007: database exists". Database lama belum terhapus. Cek SHOW DATABASES;. Jika cacti masih ada, jalankan DROP DATABASE cacti;, lalu ulangi dpkg-reconfigure cacti.

PHP

  • Setelah install php-intl, precheck masih bermasalah. Kemungkinan modul aktif di PHP CLI tapi tidak di PHP Apache (atau sebaliknya). Bandingkan php -v dengan apache2ctl -M | grep php, jalankan phpenmod intl untuk versi yang dipakai Apache, lalu systemctl restart apache2.
  • Fatal error: Allowed memory size ... exhausted. Perubahan php.ini belum terpakai. Pastikan yang diedit adalah php.ini milik Apache, bukan CLI. Cek dengan php -i | grep "Loaded Configuration File", ulangi Langkah 12, lalu restart Apache.
  • Maximum execution time of 60 seconds exceeded. Jika prosesnya memang berat, angka 60 bisa dinaikkan (misalnya 120). Tapi periksa juga apakah ada proses lain yang lambat (poller atau query database) yang sebaiknya dioptimalkan, bukan hanya ditambah waktunya.

Cacti dan MikroTik

  • Grafik kosong atau "No Data Sources". Poller belum berjalan lewat cron. Cek cat /etc/cron.d/cacti, dan pastikan community SNMP di device sama dengan yang di MikroTik.
  • Device MikroTik berstatus merah atau Down. Biasanya SNMP belum aktif di MikroTik, community tidak sama, atau firewall MikroTik memblokir port 161/UDP. Cek di Winbox: IP → SNMP dan IP → Firewall.
  • Device sudah Up tapi grafik interface tetap kosong. Graph belum dibuat (ulangi Langkah 11) atau poller belum sempat berjalan. Tunggu minimal satu siklus poller (sekitar 5 menit) sebelum menyimpulkan ada error.

Prinsip Debugging

  1. Baca pesan error dari atas ke bawah. Biasanya baris terakhir yang paling relevan.
  2. Cek status service terkait dulu (systemctl status <nama-service>) sebelum menyalahkan konfigurasi.
  3. Cek log: /var/log/apache2/error.log, /var/log/syslog, atau journalctl -xe.
  4. Ulangi satu langkah sebelumnya. Banyak error muncul karena perintah sebelumnya gagal diam-diam.
  5. Baru cari pesan error persisnya di internet jika langkah 1 sampai 4 belum menjawab.

Selamat mencoba dan selamat membangun lab monitoring sendiri.

— Vesperian Lab