Skip to content

SNMP

The SNMP extension monitors network devices - routers, switches, servers, printers, anything with an SNMP agent - directly from Kunobi. It polls each device on a schedule, tracks reachability, extracts system information, turns interface tables into browsable views, and lets you run ad-hoc SNMP queries with OIDs resolved to human-readable MIB names.

The extension speaks SNMP v2c. SNMPv3 is not supported - adding or testing a v3 device is rejected.

SNMP is a Pro feature - without a Pro license the Sources workspace is replaced by a "Device sources" upgrade notice and the data views show "SNMP requires a Pro license". See Plans & Pro.

Setup

  1. Install the SNMP extension from Settings → Extensions (see Extensions). It starts automatically. If you open an SNMP view while the extension isn't running, Kunobi shows an "SNMP extension required" notice instead.
  2. Make sure the machine running Kunobi can reach your devices over UDP (SNMP, port 161 by default), and that each device has an SNMP agent enabled with a known community string.
  3. Optional: install gomib (go install github.com/sleepinggenius2/gomib/cmd/gomib@latest) - it is only needed to import custom vendor MIBs. Standard MIBs are built in.

Managing Devices

  1. Click Sources in the left navigation bar.
  2. Open the workspace selector in the sidebar (press W) and pick SNMP Devices.

The table lists your devices with columns Device, Status, Name (the device's reported system name), Version, Last poll, and Last check. The Status column shows online (the last poll succeeded), offline (three or more consecutive polls failed), or unknown (not polled yet, or fewer than three failures). Select a row and press o or y to open the Overview and YAML sidebar tabs with the full device record.

Adding a Device

Press Add (n) and fill in the form:

FieldNotes
HostHostname or IP address. Required.
PortSNMP port, default 161.
CommunityThe v2c community string, stored as a secret. Left empty, the device is polled with public.
ProfileWhich OID sets to poll (see Polling Profiles). Empty means the default profile.

Before saving you can press Test Connection - it sends a single SNMP GET for the device's system description using the values in the form, and shows a green "Connection succeeded" or the error it hit. Adding does not test: the device is saved immediately with status unknown and picked up by the next poll cycle (within about five seconds).

Testing, Editing & Removing

With a device row selected:

  • Test (t) - probes the device with its stored credentials. The result appears in the Last check column: Testing..., then OK or Failed, with the message in a tooltip.
  • Edit (e) - change the community string, profile, or poll interval. Leaving the community blank keeps the stored value. The host and port of an existing device can't be changed - remove it and add it again.
  • Remove (Backspace) - after a confirmation ("Remove device?"), the device is deleted along with its stored credential and poll history.

The Active Device

Activate (c) marks a device as the active connection. The active device drives the connection indicator in the status bar at the bottom of the app - its name with a status dot - and you can switch the active device from that indicator at any time. Activation is only about which device the app points at: all devices keep polling on their own intervals regardless of which one is active.

Browsing SNMP Data

Open the Kubernetes data page, open the workspace selector (press W), and pick SNMP Devices. The sidebar lists three views - filter them with the box at the top:

  • Devices - one row per device: host and system name, status, version, profile, last poll, consecutive failures, and the last error.
  • Interfaces - every network interface reported by your devices (from the IF-MIB interface tables included in all built-in profiles): name, device, operational and administrative status (up / down / testing), speed, MTU, errors, and when it was polled.
  • MIB Sources - the MIB database: each imported source with its directory, enabled state, module and OID counts, file size, and last scan time.

These behave like any other resource view: search them, select rows, and open details in the sidebar. While the SNMP workspace is active, the kind filter shows only SNMP kinds. Selecting a device also offers a drilldown into its Interfaces from the action bar (see Drilldown).

Device Details

Selecting a device row opens detail tabs in the sidebar:

  • Overview - host, port, version, profile, status, system name, system description, uptime, last poll, and last error.
  • Poll Results - the latest data collected from the device, one row per value with columns OID, Name, Type, and Value. Names and types are resolved from the MIB database; an unresolved OID shows unknown as its name and - as its type. The header shows how long ago the device was polled; a device that hasn't been polled yet shows a "No poll results yet" notice instead.
  • MIB Sources - a read-only summary of the MIB database (same content as the Manage MIB sources dialog).
  • YAML - the raw record.

Device Actions

Actions are available from the action bar when a matching row is selected, from the command palette, and through their shortcuts. Keys below are shown macOS-first; on Windows/Linux replace with Ctrl and with Alt.

Poll Device

Poll device (⌘⌥P / Ctrl+Alt+P) forces an immediate poll of the selected device, outside its schedule. Works from a device row or from one of its interface rows. The device row, its Poll Results tab, and the Interfaces view update with fresh data.

Browse OID

Browse OID (⌘⌥B / Ctrl+Alt+B) opens the SNMP OID browser for ad-hoc queries against the selected device:

  1. Type an OID or a MIB name. All of these work: a numeric OID (1.3.6.1.2.1.1), a short name (sysDescr), a qualified name (SNMPv2-MIB::sysDescr), or a name with an instance suffix (sysDescr.0).
  2. As you type (two characters or more), suggestions appear from the device's last poll results and the MIB database - picking one fills in the query and the matching mode.
  3. Choose the mode: WALK queries an entire OID subtree; GET queries exact OID instances. The browser picks a sensible default from your input, and you can override it.
  4. Press Run WALK / Run GET. Results appear as a list of OID-value pairs, with a notification summarizing how many values came back.

Walks are bounded to keep queries responsive: at most 500 steps or 10 seconds per walk. On very large subtrees you get partial results - narrow the OID to go deeper.

Add, Edit & Remove from the Data Page

Device management is also reachable here: Add device (⌘⌥N / Ctrl+Alt+N), Edit device (⌘⌥E / Ctrl+Alt+E) and Remove device ( / Backspace) on the selected row. These use the extension's own dialogs - the add form additionally lets you set the poll interval at creation, and the remove confirmation summarizes the device's host, port, and name before anything is deleted.

Polling Profiles

A profile is a named set of OID subtrees polled on every cycle. Three profiles are built in:

ProfileWhat it polls
genericSystem information and the interface table
routergeneric plus BGP (BGP4-MIB)
servergeneric plus host resources (HOST-RESOURCES-MIB)

Assign a profile per device (when adding or editing it) or set the extension-wide default in Settings. Custom profiles and per-device extra OIDs can be defined in the configuration file; there is no in-app profile editor. The built-in profiles are always available and never overwritten.

MIBs

MIBs give OIDs human-readable names and types - used by the OID browser, its suggestions, and the Poll Results tab. Around 2,400 OIDs from the standard IETF/IANA MIBs are built in, always enabled, and can't be removed. Vendor-specific MIBs can be imported on top.

Importing a MIB Source

Importing requires the gomib CLI - the dialog checks for it first and points you to Settings if it can't be found.

  1. Run Import MIB source (⌘⌥I / Ctrl+Alt+I, no selection needed).
  2. Give the source a name and the directory containing the vendor's MIB files.
  3. Press Import source. The directory is scanned and the result is shown per directory: on success, how many modules and OIDs were indexed; otherwise the reason - directory not found, not a directory, gomib not installed, or no MIBs found.

Importing again under the same name refreshes the source in place. The new names are available immediately across the app.

Managing MIB Sources

Manage MIB sources (⌘⌥M / Ctrl+Alt+M, no selection needed) shows totals (custom sources, modules, OIDs), the always-on Standard MIBs card, and one card per imported source with Enable/Disable and Remove controls:

  • Disable removes a source's names from the database without deleting anything - it is instant, needs no re-scan, and survives restarts. Enable brings it back.
  • Remove permanently deletes the imported source file after a confirmation summarizing the source, its directory, and its module and OID counts.

The same operations exist as row actions on the MIB Sources view: Toggle MIB source (⌘⌥T / Ctrl+Alt+T) and Remove MIB source (⌘⌥⌫ / Ctrl+Alt+Backspace).

Settings

SNMP settings (⌘⌥S / Ctrl+Alt+S, no selection needed):

SettingNotes
Default poll intervalSeconds between polls for devices without their own interval. 5 to 3600.
Default profileThe profile used by devices that don't specify one.
gomib binary pathOnly needed for custom vendor MIBs. Leave empty to use PATH.

Configuration File

Everything the UI manages is persisted in a TOML file you can also edit by hand (the extension reads it at startup and rewrites it whenever you change something in the app):

  • macOS: ~/Library/Application Support/<app-id>/extensions/snmp/config.toml
  • Linux: ~/.local/share/<app-id>/extensions/snmp/config.toml
  • Windows: %APPDATA%\<app-id>\extensions\snmp\config.toml

where <app-id> matches your Kunobi variant (for example ninja.kunobi.desktop).

[extension]
default_poll_interval = 30
default_profile = "generic"
# gomib_path = "/usr/local/bin/gomib"   # only for custom MIB imports
# disabled_mib_sources = []             # source IDs excluded from the MIB database

# Custom profiles - referenced by name from devices
[profiles.edge]
description = "Edge switch"
oids = ["1.3.6.1.2.1.1", "1.3.6.1.2.1.2.2"]

[[devices]]
host = "192.168.1.1"
port = 161
community = "public"
profile = "router"
# poll_interval = 60                     # per-device override (seconds)
# extra_oids = ["1.3.6.1.4.1.9.9"]       # polled in addition to the profile

Two things to know:

  • Community strings are stored in plain text in this file. Treat it accordingly.
  • The file format accepts a [devices.v3] block, but v3 credentials are ignored - the device is polled as v2c with its community string. SNMPv3 devices can't be monitored yet.

Polling Behavior

  • The extension checks every 5 seconds which devices are due and polls each one on its own interval; a device's first poll happens right after it is added or loaded.
  • A successful poll sets the device online, records the poll time, and refreshes its system name, description, and uptime. A failed poll counts up; after three consecutive failures the device turns offline, with the error shown in the table.
  • Each SNMP request times out after 2 seconds; walks stop after 500 steps or 10 seconds.
  • Poll results are a snapshot - each poll replaces the previous one; there is no history.

Troubleshooting

Device stays unknown or goes offline - check that the device is reachable over UDP port 161 (or your custom port), the SNMP agent is enabled, and the community string is right. Test the row and check the Error column for the exact failure.

"Unknown MIB name" in the OID browser - the name isn't in the loaded MIB database. Import the vendor's MIBs, or query the numeric OID directly.

"gomib is not installed or not reachable" - install gomib (see Setup) or point gomib binary path in Settings at the binary.

Import reports "No MIBs found" - the directory contains no parseable MIB definitions; check you pointed at the folder with the actual MIB files.

A WALK returns fewer results than expected - you hit the walk bounds (500 steps / 10 seconds). Narrow the query to a deeper subtree.

Limitations

  • SNMP v2c only: no SNMPv3, and community strings are the only authentication.
  • Polling only: no SNMP traps or informs, and no SET operations - monitoring is read-only.
  • Poll results are the latest snapshot per device, not a time series.
  • Custom profiles and extra OIDs are configured in the config file, not the UI.
Available for:
Apple macOS logomacOSMicrosoft Windows logoWindowsLinux logoLinux
Download Kunobi