Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/net/mikrotik_snmp?at=release/5.4
Mikrotik SNMP
Overview
For Zabbix version: 5.4 and higher
Setup
Refer to the vendor documentation.
Zabbix configuration
No specific Zabbix configuration is required.
Macros used
Name | Description | Default |
---|---|---|
{$CPU.UTIL.CRIT} | - |
90 |
{$IFNAME.LTEMODEM.MATCHES} | This macro is used in LTE modem discovery. It can be overridden on the host. |
^lte |
{$IFNAME.WIFI.MATCHES} | This macro is used in CAPsMAN AP channel discovery. It can be overridden on the host level. |
WIFI |
{$LTEMODEM.RSRP.MIN.WARN} | The LTE modem RSRP minimum value for warning trigger expression. |
-100 |
{$LTEMODEM.RSRQ.MIN.WARN} | The LTE modem RSRQ minimum value for warning trigger expression. |
-20 |
{$LTEMODEM.RSSI.MIN.WARN} | The LTE modem RSSI minimum value for warning trigger expression. |
-100 |
{$LTEMODEM.SINR.MIN.WARN} | The LTE modem SINR minimum value for warning trigger expression. |
0 |
{$MEMORY.UTIL.MAX} | - |
90 |
{$TEMP_CRIT:"CPU"} | - |
75 |
{$TEMP_CRIT_LOW} | - |
5 |
{$TEMP_CRIT} | - |
60 |
{$TEMP_WARN:"CPU"} | - |
70 |
{$TEMP_WARN} | - |
50 |
{$VFS.FS.PUSED.MAX.CRIT} | - |
90 |
{$VFS.FS.PUSED.MAX.WARN} | - |
80 |
Template links
Name |
---|
Generic SNMP |
Interfaces SNMP |
Discovery rules
Name | Description | Type | Key and additional info |
---|---|---|---|
CPU discovery | HOST-RESOURCES-MIB::hrProcessorTable discovery |
SNMP | hrProcessorLoad.discovery |
Temperature CPU discovery | MIKROTIK-MIB::mtxrHlProcessorTemperature Since temperature of CPU is not available on all Mikrotik hardware, this is done to avoid unsupported items. |
SNMP | mtxrHlProcessorTemperature.discovery |
Temperature sensor discovery | MIKROTIK-MIB::mtxrHlTemperature Since temperature sensor is not available on all Mikrotik hardware, this is done to avoid unsupported items. |
SNMP | mtxrHlTemperature.discovery |
LTE modem discovery | MIKROTIK-MIB::mtxrLTEModemInterfaceIndex |
SNMP | mtxrLTEModem.discovery Filter: AND- {#IFTYPE} MATCHES_REGEX - {#IFNAME} MATCHES_REGEX |
AP channel discovery | MIKROTIK-MIB::mtxrWlAp |
SNMP | mtxrWlAp.discovery Filter: AND- {#IFTYPE} MATCHES_REGEX - {#IFADMINSTATUS} MATCHES_REGEX |
CAPsMAN AP channel discovery | MIKROTIK-MIB::mtxrWlCMChannel |
SNMP | mtxrWlCMChannel.discovery Filter: AND- {#IFTYPE} MATCHES_REGEX - {#IFNAME} MATCHES_REGEX |
Storage discovery | HOST-RESOURCES-MIB::hrStorage discovery with storage filter |
SNMP | storage.discovery Filter: OR- {#STORAGE_TYPE} MATCHES_REGEX - {#STORAGE_TYPE} MATCHES_REGEX |
Items collected
Group | Name | Description | Type | Key and additional info |
---|---|---|---|---|
CPU | #{#SNMPINDEX}: CPU utilization | MIB: HOST-RESOURCES-MIB The average, over the last minute, of the percentage of time that this processor was not idle. Implementations may approximate this one minute smoothing period if necessary. |
SNMP | system.cpu.util[hrProcessorLoad.{#SNMPINDEX}] |
Inventory | Operating system | MIB: MIKROTIK-MIB Software version. |
SNMP | system.sw.os[mtxrLicVersion.0] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
Inventory | Hardware model name | - |
SNMP | system.hw.model Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
Inventory | Hardware serial number | MIB: MIKROTIK-MIB RouterBOARD serial number. |
SNMP | system.hw.serialnumber Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
Inventory | Firmware version | MIB: MIKROTIK-MIB Current firmware version. |
SNMP | system.hw.firmware Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
Memory | Used memory | MIB: HOST-RESOURCES-MIB The amount of the storage represented by this entry that is allocated, in units of hrStorageAllocationUnits. |
SNMP | vm.memory.used[hrStorageUsed.Memory] Preprocessing: - MULTIPLIER: |
Memory | Total memory | MIB: HOST-RESOURCES-MIB The size of the storage represented by this entry, in units of hrStorageAllocationUnits. This object is writable to allow remote configuration of the size of the storage area in those cases where such an operation makes sense and is possible on the underlying system. For example, the amount of main memory allocated to a buffer pool might be modified or the amount of disk space allocated to virtual memory might be modified. |
SNMP | vm.memory.total[hrStorageSize.Memory] Preprocessing: - MULTIPLIER: |
Memory | Memory utilization | Memory utilization in % |
CALCULATED | vm.memory.util[memoryUsedPercentage.Memory] Expression: last(//vm.memory.used[hrStorageUsed.Memory])/last(//vm.memory.total[hrStorageSize.Memory])*100 |
Storage | Disk-{#SNMPINDEX}: Used space | MIB: HOST-RESOURCES-MIB The amount of the storage represented by this entry that is allocated, in units of hrStorageAllocationUnits. |
SNMP | vfs.fs.used[hrStorageSize.{#SNMPINDEX}] Preprocessing: - MULTIPLIER: |
Storage | Disk-{#SNMPINDEX}: Total space | MIB: HOST-RESOURCES-MIB The size of the storage represented by this entry, in units of hrStorageAllocationUnits. This object is writable to allow remote configuration of the size of the storage area in those cases where such an operation makes sense and is possible on the underlying system. For example, the amount of main memory allocated to a buffer pool might be modified or the amount of disk space allocated to virtual memory might be modified. |
SNMP | vfs.fs.total[hrStorageSize.{#SNMPINDEX}] Preprocessing: - MULTIPLIER: |
Storage | Disk-{#SNMPINDEX}: Space utilization | Space utilization in % for Disk-{#SNMPINDEX} |
CALCULATED | vfs.fs.pused[hrStorageSize.{#SNMPINDEX}] Expression: (last(//vfs.fs.used[hrStorageSize.{#SNMPINDEX}])/last(//vfs.fs.total[hrStorageSize.{#SNMPINDEX}]))*100 |
Temperature | CPU: Temperature | MIB: MIKROTIK-MIB mtxrHlProcessorTemperature Processor temperature in Celsius (degrees C). Might be missing in entry models (RB750, RB450G..). |
SNMP | sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}] Preprocessing: - MULTIPLIER: |
Temperature | Device: Temperature | MIB: MIKROTIK-MIB mtxrHlTemperature Device temperature in Celsius (degrees C). Might be missing in entry models (RB750, RB450G..). Reference: http://wiki.mikrotik.com/wiki/Manual:SNMP |
SNMP | sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}] Preprocessing: - MULTIPLIER: |
Wireless | Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI | MIB: MIKROTIK-MIB mtxrLTEModemSignalRSSI Received Signal Strength Indicator. |
SNMP | lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}] |
Wireless | Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP | MIB: MIKROTIK-MIB mtxrLTEModemSignalRSRP Reference Signal Received Power. |
SNMP | lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}] |
Wireless | Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ | MIB: MIKROTIK-MIB mtxrLTEModemSignalRSRQ Reference Signal Received Quality. |
SNMP | lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}] |
Wireless | Interface {#IFNAME}({#IFALIAS}): LTE modem SINR | MIB: MIKROTIK-MIB mtxrLTEModemSignalSINR Signal to Interference & Noise Ratio. |
SNMP | lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}] |
Wireless | Interface {#IFNAME}({#IFALIAS}): SSID | MIB: MIKROTIK-MIB mtxrWlApSsid Service Set Identifier. |
SNMP | ssid.name[mtxrWlApSsid.{#SNMPINDEX}] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
Wireless | Interface {#IFNAME}({#IFALIAS}): AP band | MIB: MIKROTIK-MIB mtxrWlApBand |
SNMP | ssid.band[mtxrWlApBand.{#SNMPINDEX}] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
Wireless | Interface {#IFNAME}({#IFALIAS}): AP noise floor | MIB: MIKROTIK-MIB mtxrWlApNoiseFloor |
SNMP | ssid.noise[mtxrWlApNoiseFloor.{#SNMPINDEX}] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
Wireless | Interface {#IFNAME}({#IFALIAS}): AP registered clients | MIB: MIKROTIK-MIB mtxrWlApClientCount Client established connection to AP, but didn't finish all authentication procedures for full connection. |
SNMP | ssid.regclient[mtxrWlApClientCount.{#SNMPINDEX}] |
Wireless | Interface {#IFNAME}({#IFALIAS}): AP authenticated clients | MIB: MIKROTIK-MIB mtxrWlApAuthClientCount Number of authentication clients. |
SNMP | ssid.authclient[mtxrWlApAuthClientCount.{#SNMPINDEX}] |
Wireless | Interface {#IFNAME}({#IFALIAS}): AP channel | MIB: MIKROTIK-MIB mtxrWlCMChannel |
SNMP | ssid.channel[mtxrWlCMChannel.{#SNMPINDEX}] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
Wireless | Interface {#IFNAME}({#IFALIAS}): AP state | MIB: MIKROTIK-MIB mtxrWlCMState Wireless interface state. |
SNMP | ssid.state[mtxrWlCMState.{#SNMPINDEX}] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
Wireless | Interface {#IFNAME}({#IFALIAS}): AP registered clients | MIB: MIKROTIK-MIB mtxrWlCMRegClientCount Client established connection to AP, but didn't finish all authentication procedures for full connection. |
SNMP | ssid.regclient[mtxrWlCMRegClientCount.{#SNMPINDEX}] |
Wireless | Interface {#IFNAME}({#IFALIAS}): AP authenticated clients | MIB: MIKROTIK-MIB mtxrWlCMAuthClientCount Number of authentication clients. |
SNMP | ssid.authclient[mtxrWlCMAuthClientCount.{#SNMPINDEX}] |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m) | CPU utilization is too high. The system might be slow to respond. |
min(/Mikrotik SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT} |
WARNING | |
Operating system description has changed | Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close. |
last(/Mikrotik SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/Mikrotik SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/Mikrotik SNMP/system.sw.os[mtxrLicVersion.0]))>0 |
INFO | Manual close: YES |
Device has been replaced (new serial number received) | Device serial number has changed. Ack to close |
last(/Mikrotik SNMP/system.hw.serialnumber,#1)<>last(/Mikrotik SNMP/system.hw.serialnumber,#2) and length(last(/Mikrotik SNMP/system.hw.serialnumber))>0 |
INFO | Manual close: YES |
Firmware has changed | Firmware version has changed. Ack to close |
last(/Mikrotik SNMP/system.hw.firmware,#1)<>last(/Mikrotik SNMP/system.hw.firmware,#2) and length(last(/Mikrotik SNMP/system.hw.firmware))>0 |
INFO | Manual close: YES |
High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m) | The system is running out of free memory. |
min(/Mikrotik SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX} |
AVERAGE | |
Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%) | Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}. Second condition should be one of the following: - The disk free space is less than 5G. - The disk will be full in less than 24 hours. |
last(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/Mikrotik SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mikrotik SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<5G or timeleft(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d) |
AVERAGE | Manual close: YES |
Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%) | Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}. Second condition should be one of the following: - The disk free space is less than 10G. - The disk will be full in less than 24 hours. |
last(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/Mikrotik SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mikrotik SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<10G or timeleft(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d) |
WARNING | Manual close: YES Depends on: - Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%) |
CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"} | This trigger uses temperature sensor values as well as temperature sensor status if available |
avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"} Recovery expression: max(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3 |
WARNING | Depends on: - CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"} |
CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"} | This trigger uses temperature sensor values as well as temperature sensor status if available |
avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"} Recovery expression: max(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3 |
HIGH | |
CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"} | - |
avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"} Recovery expression: min(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3 |
AVERAGE | |
Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"} | This trigger uses temperature sensor values as well as temperature sensor status if available |
avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"} Recovery expression: max(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3 |
WARNING | Depends on: - Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"} |
Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"} | This trigger uses temperature sensor values as well as temperature sensor status if available |
avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"} Recovery expression: max(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3 |
HIGH | |
Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"} | - |
avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"} Recovery expression: min(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3 |
AVERAGE | |
Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m) | - |
max(/Mikrotik SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN} |
WARNING | |
Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m) | - |
max(/Mikrotik SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN} |
WARNING | |
Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m) | - |
max(/Mikrotik SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN} |
WARNING | |
Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m) | - |
max(/Mikrotik SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN} |
WARNING | |
Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running | Access point interface can be not running by different reasons - disabled interface, power off, network link down. |
last(/Mikrotik SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap" |
WARNING |
Feedback
Please report any issues with the template at https://support.zabbix.com
Known Issues
-
Description: Doesn't have ifHighSpeed filled. fixed in more recent versions
- Version: RouterOS 6.28 or lower
-
Description: Doesn't have any temperature sensors
- Version: RouterOS 6.38.5
- Device: Mikrotik 941-2nD, Mikrotik 951G-2HnD