RouterOS 7 broke things. If you’re still using The Dude or legacy monitoring tools on RouterOS 6, you’ll discover that half the OIDs changed in v7, some SNMP features moved, and the API shifted. This guide tells you exactly what changed and how to monitor RouterOS 7 properly.
RouterOS 6 and earlier used a flat SNMP tree. RouterOS 7 reorganized many OIDs. If you have hardcoded OID strings from 2010, they might not exist anymore.
RouterOS 7 SNMP Tree (key locations):
1.3.6.1.2.1.25 — Host Resources (system, storage, processes)
1.3.6.1.4.1.14988 — MikroTik private tree (RouterOS-specific)
.1.1.1.1.0 — System description
.1.2.1.3.0 — Board name
.1.2.1.5.0 — Firmware version
.1.2.1.6.0 — Serial number
.1.6.1 — Uptime
.1.7.1 — Health (temperature, voltage)
RouterOS 6 defaulted to v1/v2c (community strings). RouterOS 7 and later strongly recommend v3 with authentication. While v2c still works, security best practices demand v3.
Enable SNMP v3 on RouterOS 7:
/snmp set enabled=yes community-access=read-only
/snmp user add name=monitoring auth-protocol=MD5 auth-password="PASS" privacy-protocol=AES privacy-password="PASS"
Then configure your monitoring tool to use:
SNMP v3
Username: monitoring
Auth Type: MD5
Auth Password: [your password]
Privacy Type: AES
Privacy Password: [your password]
RouterOS 7 locked down the API more aggressively. This affects tools that scrape REST API instead of SNMP. The good news: SNMP is now the recommended way to monitor RouterOS 7.
These OIDs are guaranteed to work on RouterOS v7.0+:
| What | OID | Example Output |
|---|---|---|
| Hostname | 1.3.6.1.2.1.1.5.0 | router-core-01 |
| System uptime | 1.3.6.1.2.1.1.3.0 | (123456789) = 123.4M ticks ÷ 100 = 1,234,567 seconds |
| System description | 1.3.6.1.2.1.1.1.0 | MikroTik RouterOS 7.8.1 on RB4011 |
| Contact | 1.3.6.1.2.1.1.4.0 | Your NOC contact info |
# CPU usage (percentage)
snmpwalk -v 3 -u monitoring ROUTER 1.3.6.1.2.1.25.3.3.1.2
# Returns per-processor CPU usage
# Total memory
snmpwalk -v 3 -u monitoring ROUTER 1.3.6.1.2.1.25.2.2
# Includes RAM, flash storage, temporary buffers
# Memory free
snmpwalk -v 3 -u monitoring ROUTER 1.3.6.1.2.1.25.2.2.0
RouterOS 7 uses a new storage reporting structure:
# Storage table (disks, partitions, memory)
snmpwalk -v 3 -u monitoring ROUTER 1.3.6.1.2.1.25.2.3.1
# Returns: device, capacity, used, available
# Typical output:
# hrStorageDescr.1 = "Memory"
# hrStorageSize.1 = 1073741824 (1 GB)
# hrStorageUsed.1 = 536870912 (500 MB)
# hrStorageAvail.1 = 536870912 (500 MB free)
MikroTik-specific OIDs (RouterOS 7 health monitoring):
# CPU temperature (degrees Celsius)
snmpget -v 3 -u monitoring ROUTER 1.3.6.1.4.1.14988.1.1.3.12.0
# PSU voltage
snmpget -v 3 -u monitoring ROUTER 1.3.6.1.4.1.14988.1.1.3.13.0
# PCB temperature
snmpget -v 3 -u monitoring ROUTER 1.3.6.1.4.1.14988.1.1.3.11.0
Alert thresholds:
RouterOS 7 interface reporting is standardized:
# Interface table (all ports, bridges, tunnels, etc.)
snmpwalk -v 3 -u monitoring ROUTER 1.3.6.1.2.1.2.2
# Returns: ifIndex, ifDescr, ifType, ifSpeed, ifPhysAddress, ifAdminStatus, ifOperStatus
# Interface statistics
snmpwalk -v 3 -u monitoring ROUTER 1.3.6.1.2.1.2.2.1.10
# IN octets (bytes received)
snmpwalk -v 3 -u monitoring ROUTER 1.3.6.1.2.1.2.2.1.16
# OUT octets (bytes sent)
# Interface errors
snmpwalk -v 3 -u monitoring ROUTER 1.3.6.1.2.1.2.2.1.20
# IN errors (CRC, frame errors, etc.)
Example parser (Python) to extract per-interface stats:
from pysnmp.hlapi import *
def get_interface_stats(target, snmp_v3_user):
iterator = getCmd(SnmpEngine(),
UsmUserData(snmp_v3_user['user'],
snmp_v3_user['auth_pass'],
snmp_v3_user['priv_pass']),
UdpTransportTarget((target, 161)),
ContextData(),
ObjectType(ObjectIdentity('1.3.6.1.2.1.2.2.1.5'))) # ifSpeed
error, errorStatus, errorIndex, varBinds = next(iterator)
interfaces = {}
for varBind in varBinds:
oid, value = varBind
if_index = oid[-1]
interfaces[if_index] = int(value)
return interfaces
If you have wireless P2P links, RouterOS exposes link quality via:
# Wireless signal strength (dBm)
snmpget -v 3 -u monitoring ROUTER 1.3.6.1.4.1.14988.1.1.1.1.1.0
# Wireless TX/RX rate (Mbps)
snmpget -v 3 -u monitoring ROUTER 1.3.6.1.4.1.14988.1.1.1.1.2.0
snmpget -v 3 -u monitoring ROUTER 1.3.6.1.4.1.14988.1.1.1.1.3.0
# Wireless CCQ (Channel Capacity Quality, 0–100%)
snmpget -v 3 -u monitoring ROUTER 1.3.6.1.4.1.14988.1.1.1.1.4.0
Alert on wireless:
RouterOS 7 CAPsMAN is the standard for managing multiple WiFi APs across a network. SNMP exposes per-AP statistics:
# CAP count
snmpget -v 3 -u monitoring ROUTER 1.3.6.1.4.1.14988.1.1.1.3.1.0
# Per-CAP association count
snmpwalk -v 3 -u monitoring ROUTER 1.3.6.1.4.1.14988.1.1.1.3.2
# Per-CAP signal quality
snmpwalk -v 3 -u monitoring ROUTER 1.3.6.1.4.1.14988.1.1.1.3.3.0
| Aspect | SNMP | REST API |
|---|---|---|
| Setup complexity | Simple (/snmp set enabled=yes) | Moderate (enable, create token) |
| Real-time data | Yes (polled every 30 seconds) | Yes (HTTP request) |
| Query speed | Fast (binary protocol) | Slower (HTTP parsing) |
| Data volume | Small (binary packed) | Larger (JSON) |
| Firewall-friendly | ✅ UDP 161 | ❌ TCP 8728 usually blocked |
| Scalability | ✅ 1000+ routers/server | ✅ 1000+ routers/server |
| Standard compatibility | ✅ Works with any SNMP tool | ❌ RouterOS-specific |
| For cloud/APIs | Not ideal | Preferred |
| For traditional ISPs | Preferred | Not needed |
Recommendation: Use SNMP for on-premise monitoring. It’s firewall-safe, standardized, and doesn’t require API tokens. Use REST API only for cloud-native integrations or custom automation.
/snmp set enabled=yes contact="NOC: [email protected]" location="DC1"
# Remove default public community (security)
/snmp community remove [find name=public]
# Add monitoring user with auth + privacy
/snmp user add name=monitoring \
auth-protocol=MD5 \
auth-password="PASS" \
privacy-protocol=AES \
privacy-password="PASS"
# Optional: add read-only community for legacy tools
/snmp community add name=monitoring group=public
Recommended setup: YAD or LibreNMS
# devices.yaml
devices:
- name: router-core-01
address: 192.168.1.1
snmp_version: 3
snmp_user: monitoring
snmp_auth: MD5
snmp_privacy: AES
snmp_auth_pass: "Xh8@2xK!9mL4P$w"
snmp_priv_pass: "Xy7@3mN!2pQ$r8s"
poll_interval: 30s
LibreNMS has built-in RouterOS 7 support. Just add the device via web UI with SNMP v3 credentials, and it auto-detects the device type and polls all key metrics.
# Check SNMP is enabled
/snmp print
# output: enabled=yes
# Check user exists
/snmp user print
# output: monitoring (auth MD5, privacy AES)
# Test from monitoring server
snmpget -v 3 -u monitoring -a MD5 -A "PASSWORD" -x AES -X "PASSWORD" ROUTER 1.3.6.1.2.1.1.5.0
Some OIDs don’t exist on all hardware. RB4011 has temperature sensors; hEX does not. Test with:
snmpwalk -v 3 -u monitoring ROUTER 1.3.6.1.4.1.14988.1.1.3.11.0
# If empty, sensor doesn't exist
RouterOS 7 hides certain internal bridges by default. Check:
/interface print
/interface bridge print
# You may have 30 interfaces but SNMP reports 8. That's normal.
RouterOS 7 SNMP is stable and well-documented. For ISPs with 50+ MikroTik devices, proper SNMP v3 monitoring with LibreNMS or YAD will:
Enable SNMP v3, add your routers to YAD/LibreNMS, set interface thresholds, and you’re done.
Monitor RouterOS 7 with YAD → yetanotherdude.io
Native support for MikroTik SNMP trees, interface discovery, and alerts.