Skip to content

[Bug]: Collector crashes on MikroTik RB5009 due to high OID indices in mtxrHlTable #23481

Description

@joazif

Bug description

When monitoring a MikroTik RB5009 running RouterOS 7.23.3 via the SNMP collector (go.d), the collector repeatedly logs warnings every collection interval and fails to transform table metrics due to high/sparse OID indices in mtxrHlTable.

Expected behavior

The SNMP collector should gracefully process or filter sparse OID table indices (such as 7201+ in mtxrHlTable) without throwing Go template evaluation errors or failing table metric collection.

Steps to reproduce

  1. Configure Netdata go.d SNMP collector to monitor a MikroTik RB5009 running RouterOS 7.23.3 using the default mikrotik-router.yaml profile.
  2. Ensure mtxrHlTable is enabled in the configuration.
  3. Check Netdata logs via docker logs netdata.
  4. Observe repeated can't evaluate field Value in type struct { Metric *ddsnmp.Metric } template execution warnings every 30 seconds.

Installation method

docker

System info

Linux HomeServer 6.18.34+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.18.34-1+rpt1 (2026-06-09) aarch64 GNU/Linux
/etc/os-release:PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
/etc/os-release:NAME="Debian GNU/Linux"
/etc/os-release:VERSION_ID="13"
/etc/os-release:VERSION="13 (trixie)"
/etc/os-release:VERSION_CODENAME=trixie
/etc/os-release:DEBIAN_VERSION_FULL=13.6
/etc/os-release:ID=debian

Netdata build info

time=2026-08-15T01:04:25.936+02:00 comm=netdata source=daemon level=notice errno="2, No such file or directory" tid=581438  msg="CONFIG: cannot load user config '/etc/netdata/stream.conf'. Will try stock config."
time=2026-08-15T01:04:25.936+02:00 comm=netdata source=daemon level=error errno="22, Invalid argument" tid=581438  msg="madvise(MADV_MERGEABLE) of size 16384, failed."
Packaging:
    Netdata Version ____________________________________________ : v2.10.4
    Installation Type __________________________________________ : oci
    Package Architecture _______________________________________ : arm64
    Package Distro _____________________________________________ : unknown
    Configure Options __________________________________________ : cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_STANDARD=11 -DCMAKE_CXX_STANDARD=17 -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS='-O2 -funroll-loops -pipe -fexceptions -fstack-protector-strong -D_FORTIFY_SOURCE=3 -fstack-clash-protection -mbranch-protection=standard -ffunction-sections -fdata-sections -Wno-builtin-macro-redefined -fno-omit-frame-pointer -funwind-tables -fasynchronous-unwind-tables' -DCMAKE_CXX_FLAGS=' -O2 -funroll-loops -pipe -fexceptions -fstack-protector-strong -D_FORTIFY_SOURCE=3 -fstack-clash-protection -mbranch-protection=standard -ffunction-sections -fdata-sections -Wno-builtin-macro-redefined -fno-omit-frame-pointer -funwind-tables -fasynchronous-unwind-tables' -DCMAKE_COMPILE_DEFINITIONS='_GNU_SOURCE' -DCMAKE_EXE_LINKER_FLAGS='-Wl,--gc-sections -fexceptions -fstack-protector-strong -D_FORTIFY_SOURCE=3 -fstack-clash-protection -mbranch-protection=standard -ffunction-sections -fdata-sections -Wno-builtin-macro-redefined -rdynamic' -DCMAKE_SHARED_LINKER_FLAGS='-Wl,--gc-sections'
Default Directories:
    User Configurations ________________________________________ : /etc/netdata
    Stock Configurations _______________________________________ : /usr/lib/netdata/conf.d
    Ephemeral Databases (metrics data, metadata) _______________ : /var/cache/netdata
    Permanent Databases ________________________________________ : /var/lib/netdata
    Plugins ____________________________________________________ : /usr/libexec/netdata/plugins.d
    Static Web Files ___________________________________________ : /usr/share/netdata/web
    Log Files __________________________________________________ : /var/log/netdata
    Lock Files _________________________________________________ : /var/lib/netdata/lock
    Home _______________________________________________________ : /var/lib/netdata
Operating System:
    Kernel _____________________________________________________ : Linux
    Kernel Version _____________________________________________ : 6.18.34+rpt-rpi-2712
    Operating System ___________________________________________ : unknown
    Operating System ID ________________________________________ : unknown
    Operating System ID Like ___________________________________ : unknown
    Operating System Version ___________________________________ : unknown
    Operating System Version ID ________________________________ : 13
    Detection __________________________________________________ : unknown
Hardware:
    CPU Cores __________________________________________________ : 4
    CPU Frequency ______________________________________________ : 2400000000
    RAM Bytes __________________________________________________ : 17006198784
    Disk Capacity ______________________________________________ : 5001002754048
    CPU Architecture ___________________________________________ : aarch64
    Virtualization Technology __________________________________ : none
    Virtualization Detection ___________________________________ : systemd-detect-virt
Container:
    Container __________________________________________________ : docker
    Container Detection ________________________________________ : systemd-detect-virt
    Container Orchestrator _____________________________________ : none
    Container Operating System _________________________________ : Debian GNU/Linux
    Container Operating System ID ______________________________ : debian
    Container Operating System ID Like _________________________ : unknown
    Container Operating System Version _________________________ : 13 (trixie)
    Container Operating System Version ID ______________________ : 13
    Container Operating System Detection _______________________ : /etc/os-release
Features:
    Built For __________________________________________________ : Linux
    Netdata Cloud ______________________________________________ : YES
    Health (trigger alerts and send notifications) _____________ : YES
    Streaming (stream metrics to parent Netdata servers) _______ : YES
    Back-filling (of higher database tiers) ____________________ : YES
    Replication (fill the gaps of parent Netdata servers) ______ : YES
    Streaming and Replication Compression ______________________ : YES (zstd lz4 gzip brotli)
    Contexts (index all active and archived metrics) ___________ : YES
    Tiering (multiple dbs with different metrics resolution) ___ : YES (5)
    Machine Learning ___________________________________________ : YES
    Memory Allocator ___________________________________________ : system
Database Engines:
    dbengine (compression) _____________________________________ : YES (zstd lz4)
    alloc ______________________________________________________ : YES
    ram ________________________________________________________ : YES
    none _______________________________________________________ : YES
Connectivity Capabilities:
    ACLK (Agent-Cloud Link: MQTT over WebSockets over TLS) _____ : YES
    static (Netdata internal web server) _______________________ : YES
    WebRTC (experimental) ______________________________________ : NO
    Native HTTPS (TLS Support) _________________________________ : YES
    TLS Host Verification ______________________________________ : YES
Libraries:
    LZ4 (extremely fast lossless compression algorithm) ________ : YES
    ZSTD (fast, lossless compression algorithm) ________________ : YES
    zlib (lossless data-compression library) ___________________ : YES
    Brotli (generic-purpose lossless compression algorithm) ____ : YES
    protobuf (platform-neutral data serialization protocol) ____ : YES (system)
    OpenSSL (cryptography) _____________________________________ : YES
    libdatachannel (stand-alone WebRTC data channels) __________ : NO
    JSON-C (lightweight JSON manipulation) _____________________ : YES
    libcap (Linux capabilities system operations) ______________ : YES
    libcrypto (cryptographic functions) ________________________ : YES
    libyaml (library for parsing and emitting YAML) ____________ : YES
    libmnl (library for working with netfilter) ________________ : YES
    stacktraces (library for getting stack traces) _____________ : libbacktrace (mmap, threads, data)
Plugins:
    apps (monitor processes) ___________________________________ : YES
    cgroups (monitor containers and VMs) _______________________ : YES
    cgroup-network (associate interfaces to CGROUPS) ___________ : YES
    proc (monitor Linux systems) _______________________________ : YES
    tc (monitor Linux network QoS) _____________________________ : YES
    diskspace (monitor Linux mount points) _____________________ : YES
    freebsd (monitor FreeBSD systems) __________________________ : NO
    macos (monitor MacOS systems) ______________________________ : NO
    windows (monitor Windows systems) __________________________ : NO
    statsd (collect custom application metrics) ________________ : YES
    timex (check system clock synchronization) _________________ : YES
    idlejitter (check system latency and jitter) _______________ : YES
    bash (support shell data collection jobs - charts.d) _______ : YES
    debugfs (kernel debugging metrics) _________________________ : YES
    cups (monitor printers and print jobs) _____________________ : NO
    ebpf (monitor system calls) ________________________________ : NO
    freeipmi (monitor enterprise server H/W) ___________________ : YES
    network-viewer (monitor TCP/UDP IPv4/6 sockets) ____________ : YES
    systemd-journal (monitor journal logs) _____________________ : YES
    windows-events (monitor Windows events) ____________________ : NO
    nfacct (gather netfilter accounting) _______________________ : NO
    perf (collect kernel performance events) ___________________ : YES
    slabinfo (monitor kernel object caching) ___________________ : YES
    Xen ________________________________________________________ : NO
    Xen VBD Error Tracking _____________________________________ : NO
Exporters:
    AWS Kinesis ________________________________________________ : NO
    GCP PubSub _________________________________________________ : NO
    MongoDB ____________________________________________________ : YES
    Prometheus (OpenMetrics) Exporter __________________________ : YES
    Prometheus Remote Write ____________________________________ : YES
    Graphite ___________________________________________________ : YES
    Graphite HTTP / HTTPS ______________________________________ : YES
    JSON _______________________________________________________ : YES
    JSON HTTP / HTTPS __________________________________________ : YES
    OpenTSDB ___________________________________________________ : YES
    OpenTSDB HTTP / HTTPS ______________________________________ : YES
    All Metrics API ____________________________________________ : YES
    Shell (use metrics in shell scripts) _______________________ : YES
Debug/Developer Features:
    Trace All Netdata Allocations (with charts) ________________ : NO
    Developer Mode (more runtime checks, slower) _______________ : NO
Runtime Information:
    Profile ____________________________________________________ : standalone
    Stream Parent (accept data from Children) __________________ : NO
    Stream Child (send data to a Parent) _______________________ : NO
    Total System Memory ________________________________________ : 17006198784
    Available System Memory ____________________________________ : 12072763392

Additional info

Log output

level=warn msg=“failed to collect table metrics: failed to execute transform template: template: metric_transform:28:80: executing "metric_transform" at <$.Value>: can’t evaluate field Value in type struct { Metric *ddsnmp.Metric }” plugin=go.d collector=snmp job=rb5009 config_source=“user/file reader” ddsnmp=collector

Root Cause & SNMPwalk Details

The issue is caused by the mtxrHlTable (1.3.6.1.4.1.14988.1.1.3.100) section in the mikrotik.yaml profile.

On newer hardware like the MikroTik RB5009, RouterOS v7.23.3 uses non-sequential high OID indices, jumping from index 17 directly to 7201+ for power input metrics like jack-voltage, 2pin-voltage, and poe-in-voltage.

When processing these sparse/high indices, the metric struct evaluated by metric_transform lacks the Value field.

SNMPwalk output from RB5009

iso.3.6.1.4.1.14988.1.1.3.100.1.2.16 = STRING: “poe-out-consumption”
iso.3.6.1.4.1.14988.1.1.3.100.1.2.17 = STRING: “cpu-temperature”
iso.3.6.1.4.1.14988.1.1.3.100.1.2.7201 = STRING: “jack-voltage”
iso.3.6.1.4.1.14988.1.1.3.100.1.2.7202 = STRING: “2pin-voltage”
iso.3.6.1.4.1.14988.1.1.3.100.1.2.7203 = STRING: “poe-in-voltage”
iso.3.6.1.4.1.14988.1.1.3.100.1.3.16 = INTEGER: 192
iso.3.6.1.4.1.14988.1.1.3.100.1.3.17 = INTEGER: 51
iso.3.6.1.4.1.14988.1.1.3.100.1.3.7201 = INTEGER: 492
iso.3.6.1.4.1.14988.1.1.3.100.1.3.7202 = INTEGER: 0
iso.3.6.1.4.1.14988.1.1.3.100.1.3.7203 = INTEGER: 0

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugneeds triageIssues which need to be manually labelled

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions