SNMP
SNMP brings the infrastructure layer into the same namespace as the process layer: switches, UPS units, PDUs, environmental monitors, printers, industrial routers. Anything with an agent.
Configuration
| Field | Description |
|---|---|
| Name | Connection identifier. |
| Host | Agent IP or hostname. |
| Port | 161 by default. |
| Version | 1, 2c, or 3. |
| Timeout (ms) | Per-request timeout. |
| Retries | Retries before the request fails. |
| Max repetitions | GETBULK window for v2c/v3 walks. Higher is faster but produces larger responses. |
| Probe OID | The OID the connection test reads. 1.3.6.1.2.1.1.1.0 (sysDescr) is a safe universal choice. |
v1 / v2c
| Field | Notes |
|---|---|
| Community | The read community string. |
| Write community | Optional, for SET operations. |
Community strings are transmitted in clear text. On any network you do not fully control, use v3.
v3 (USM)
| Field | Values |
|---|---|
| Security level | noAuthNoPriv, authNoPriv, authPriv |
| Security name | The USM user name |
| Auth protocol | MD5, SHA, SHA-224/256/384/512 |
| Auth key | The authentication passphrase |
| Priv protocol | DES, AES, AES-192/256 |
| Priv key | The privacy passphrase |
| Context name | Optional SNMPv3 context |
Keys are stored encrypted and never returned to the browser; the edit form shows only
has_auth_key / has_priv_key presence flags.
Binding tags
| Field | Notes |
|---|---|
| Address | The OID, dotted numeric (1.3.6.1.2.1.1.3.0). The data type is taken from the agent's reply and coerced to the tag's. |
| Poll Rate (ms) | How often the OID is read with an SNMP GET — 1000 by default, at least 100. OIDs sharing a rate are batched into one request. Infrastructure rarely needs faster than 30–60 s. SNMP has no subscription; traps arrive separately. |
Browse an OID instead of typing it. New in 1.0.8 The button beside the address walks the agent from a start OID — prefilled from the address you are editing — and lists what it exposes, each with its value and type; picking one fills in the address and the data type. The walk runs only when you ask for it, since a walk can take up to a minute, and stops if you close the dialog. The address it writes is always the numeric OID: a symbolic name depends on which MIBs an installation happens to carry.
Remember the trailing .0 for scalar objects. 1.3.6.1.2.1.1.3 is the object; 1.3.6.1.2.1.1.3.0
is its single instance. Table columns are indexed instead — 1.3.6.1.2.1.2.2.1.10.3 is ifInOctets
for interface 3.
Walking an agent
Walk in the connection's editor (needs View Connections) walks the agent's tree and returns each OID with its value and, where a MIB is loaded, its symbolic name. This is how you find out what a device actually exposes, rather than trusting a datasheet.
Vendor MIBs
Standard MIB-II is understood out of the box. Vendor MIBs turn 1.3.6.1.4.1.318.1.1.1.2.2.1.0 into
upsAdvBatteryCapacity.
| Action | Permission |
|---|---|
| List loaded MIBs | View Connections |
| Upload a MIB | Create Connection |
Uploaded MIBs are compiled by an isolated child process, so a malformed vendor MIB — and they are frequently malformed — cannot crash the gateway. A MIB that fails to compile is rejected with its error; names simply fall back to numeric OIDs.
Traps
Devices push asynchronous notifications (a UPS switching to battery, a link going down). QUBIQ can listen on UDP 162; the listener is opt-in and off by default.
Received traps are resolved against the loaded MIBs — so you see linkDown, not
1.3.6.1.6.3.1.1.5.3 — and kept in a rolling buffer for the operator feed.
The trap feed is in the connection's editor (needs View Connections).
SNMP traps are unacknowledged UDP. A trap sent while QUBIQ is restarting is gone. Never rely on traps alone for a condition that matters — poll the underlying value and accept the trap for low latency.
Typical monitoring set
| What | OID | Why |
|---|---|---|
| Uptime | 1.3.6.1.2.1.1.3.0 | A reset counter means the device rebooted |
| Interface operational status | 1.3.6.1.2.1.2.2.1.8.<if> | Link up/down — a good on_boolean alarm |
| Interface in/out octets | 1.3.6.1.2.1.2.2.1.10/16.<if> | Throughput; counters, so trend the rate |
| Interface errors | 1.3.6.1.2.1.2.2.1.14/20.<if> | Rising errors precede a failing link |
| UPS battery capacity, on-battery status | vendor MIB | Facility power |
| Temperature | vendor MIB | Cabinet/environment |
Counters wrap. Alarm on the rate of change, not the raw counter, using a pipeline or a derived tag.
One dead agent, one slow connection Changed in 1.0.7
All SNMP connections share one worker, and before 1.0.7 an unreachable agent could hold the others up in three ways:
- A walk blocked everyone for up to a minute. Requests were handled one at a time across every connection, and a walk is allowed sixty seconds. While one ran against a slow or dead agent, every other connection's check, read and write waited — and each caller, having timed out, reported the worker unavailable. Requests for different agents are now handled side by side. One agent still gets one request at a time.
- A dead agent cost a full retry budget per chunk. A poll of many OIDs is sent in chunks, and after a transport failure the driver kept sending the remaining chunks, paying Timeout × Retries for each against an agent it already knew was not answering. The rest of the cycle is now marked failed at once, so a dead agent costs one chunk's timeout per cycle rather than one per chunk, and the next attempt is paced by the backoff.
- Changing one connection's configuration stalled the rest while its poller wound down. That wait is now that connection's alone.
A connection whose configuration is changed also no longer leaves its old UDP association open for the life of the process.
Troubleshooting
| Symptom | Check |
|---|---|
| Timeout on every request | Agent not enabled, firewall on UDP 161, or an ACL restricting source addresses. |
Works with snmpwalk, not QUBIQ | Source-IP ACL on the agent — add the QUBIQ host. |
| v3 authentication fails | Security level must match the agent exactly; authPriv with only an auth key configured will fail. |
| Some OIDs return nothing | Missing .0 on a scalar, or the object is not implemented by that device. |
| Names show as numeric OIDs | The vendor MIB is not uploaded, or failed to compile. |
| Walk is very slow | Reduce max repetitions, or walk a subtree instead of the whole agent. |
| Other SNMP connections report the worker unavailable during a walk | Fixed in 1.0.7 — see one dead agent. |
Next
→ TCP/UDP