For me, one of the best ways to monitor router on the cheap is Cacti. Completely free and has built in SNMP support. Guess what else has built in SNMP support? Yep – Mikrotik.
To get Mikrotik’s SNMP working, just enable it from terminal window, adjusting firewall if necessary:
/snmp set enabled=yes /ip firewall filter add chain=input protocol=udp dst-port=161 in-interface=!ether1 action=accept place-before=0 comment="Allow local SNMP"
While we are playing with Mikrotik, we can also print OIDs for queues:
/queue simple print oid without-paging 0 name=.220.127.116.11.4.1.14918.104.22.168.22.214.171.124 bytes-in=.126.96.36.199.4.1.149188.8.131.52.184.108.40.206 bytes-out=.220.127.116.11.4.1.14918.104.22.168.22.214.171.124 packets-in=.126.96.36.199.4.1.149188.8.131.52.184.108.40.206 packets-out=.220.127.116.11.4.1.14918.104.22.168.22.214.171.124 queues-in=.126.96.36.199.4.1.149188.8.131.52.184.108.40.206 queues-out=.220.127.116.11.4.1.14918.104.22.168.22.214.171.124 ...
Just store this data somewhere are we are going to need
bytes-out entries later.
To get Cacti running, I went with the latest Linux Mint distribution. Procedure is quite generic so you can select essentially any Linux. Just add a few packages:
sudo apt-get -y install lamp-server^ sudo apt-get -y install snmpd sudo apt-get -y install cacti cacti-spine
During installation, some packages might have additional questions – especially password related – you might want to set. For the purpose of this exercise I just went with all defaults.
After all packages are installed, it is a good time to test if we get anything from Mikrotik:
snmpwalk -v 2c -c public 192.168.88.1
And yes, this command is going to show a lot. :)
Now that we know SNMP is working we can go further with Cacti setup. For that we go to
http://127.0.0.1/cacti and answer a few questions – essentially just setting the admin password and confirming tool locations.
The next thing on Cacti’s Console page is selecting Devices and adding a new one. You need to enter Mikrotik’s IP address here and change SNMP version to 2. Once you create entry, you should see system name and uptime.
Now we can finally go to New Graph and create one based on SNMP – Generic OID Template. For the purpose of byte counting Maximum Value should be set to U and OID should be one belonging to Mikrotik’s queue byte count. In my case value
.126.96.36.199.4.1.149188.8.131.52.184.108.40.206 is the one used for input bytes of my Internet queue. A few minutes afterward you can check your Graphs/Preview tab and you should see your data nicely displayed.
Of course, with Cacti’s seemingly infinite configurability, this is just a start. Feel free to snoop around and discover. :)
PS: To monitor router’s health, check out resource OIDs:
/system resource print oid uptime: .220.127.116.11.18.104.22.168.0 total-hdd-space: .22.214.171.124.126.96.36.199.188.8.131.52 used-hdd-space: .184.108.40.206.220.127.116.11.18.104.22.168 total-memory: .22.214.171.124.126.96.36.199.188.8.131.52 used-memory: .184.108.40.206.220.127.116.11.18.104.22.168 cpu-load: .22.214.171.124.126.96.36.199.188.8.131.52