SNMP Server Resource Monitoring — CPU, RAM, Load & Uptime

Server resources are the vital signs of a host: how hard the CPU is working, how much memory and swap are left, what the load average looks like, how many processes are running, and how long the box has been up. This is the category SNMP was practically made for — nearly all of it is standards-track, available on any Net-SNMP install out of the box, and portable across almost any Linux server. This page routes you to each resource metric and points out the one place the standards stop and the vendor branch takes over.

Two MIBs cover almost everything

Most of what you'll poll here lives under the Host Resources MIB (RFC 2790) at 1.3.6.1.2.1.25 — CPU load, storage-backed memory and swap, running processes, and uptime all cluster there. The one notable exception is the system load average, the classic 1/5/15-minute figure, which the Host Resources MIB simply doesn't define. For that you drop into the UCD-SNMP-MIB (the Net-SNMP vendor branch) at 1.3.6.1.4.1.2021, where laLoad (1.3.6.1.4.1.2021.10.1.3) exposes it directly. Memory has a similar dual life: you can read it as hrStorage rows or through the UCD memory group (1.3.6.1.4.1.2021.4), which gives cleaner free/total/cached figures. Knowing which tree a metric lives in is half the battle.

The server-resource metric pages

Each page below covers one vital sign with real OIDs, query commands, and threshold guidance:

  • SNMP CPU Monitoring — per-core utilization from hrProcessorLoad (1.3.6.1.2.1.25.3.3.1.2), and why an average hides a pegged core.
  • SNMP System Load Monitoring — the 1/5/15-minute load average via laLoad, and how to read it relative to core count.
  • SNMP Memory (RAM) Monitoring — real free memory versus buffers and cache, read from the UCD memory group or hrStorage.
  • SNMP Swap Monitoring — swap usage as an early sign of memory pressure, and why steady swapping hurts latency.
  • SNMP Process Monitoring — the running-software table hrSWRun, process counts, and watching that a critical daemon is alive.
  • SNMP Uptime & Reboot DetectionhrSystemUptime and sysUpTime, and how a counter that resets to near-zero reveals an unplanned reboot.

Key server-resource OIDs

MetricOIDMIB / standard
CPU load (per core)1.3.6.1.2.1.25.3.3.1.2Host Resources MIB (RFC 2790)
System load (1-min)1.3.6.1.4.1.2021.10.1.3UCD-SNMP-MIB (enterprise 2021)
Real memory available1.3.6.1.4.1.2021.4.6.0UCD-SNMP-MIB (enterprise 2021)
Total real memory1.3.6.1.4.1.2021.4.5.0UCD-SNMP-MIB (enterprise 2021)
Available swap1.3.6.1.4.1.2021.4.4.0UCD-SNMP-MIB (enterprise 2021)
Running-process count1.3.6.1.2.1.25.1.6.0Host Resources MIB (RFC 2790)
System uptime1.3.6.1.2.1.25.1.1.0Host Resources MIB (RFC 2790)

A quick note on .0 versus tables: OIDs ending in .0 (uptime, process count, the UCD memory scalars) are single values you fetch with snmpget. CPU load per core is a table column — one row per processor — so you snmpwalk 1.3.6.1.2.1.25.3.3.1.2 and get a value for each core.

Diagram of Host Resources and UCD-SNMP OIDs for CPU, memory, load and uptime feeding an external poller

A note on uptime

There are two uptime objects and they don't measure the same thing. sysUpTime (1.3.6.1.2.1.1.3.0) is how long the SNMP agent has been running; hrSystemUptime (1.3.6.1.2.1.25.1.1.0) is how long the host has been up. For reboot detection you want the host figure — when it drops from days back to seconds, the machine restarted. Both are TimeTicks in hundredths of a second, and both can wrap after roughly 497 days, which the uptime & reboot page explains how to handle.

Frequently asked questions

Why isn't the load average in the Host Resources MIB?

It just isn't defined there. The 1/5/15-minute load average lives in the UCD-SNMP-MIB (the Net-SNMP vendor branch) as laLoad under 1.3.6.1.4.1.2021.10.1.3. CPU utilization per core, by contrast, is standards-track at hrProcessorLoad.

Should I read memory from hrStorage or the UCD memory group?

Either works. hrStorage models RAM and swap as storage rows; the UCD memory group (1.3.6.1.4.1.2021.4) gives dedicated free/total/cached/buffered scalars that are easier to interpret. Most people prefer the UCD group for real free-memory figures.

How do I detect an unplanned reboot over SNMP?

Poll hrSystemUptime (1.3.6.1.2.1.25.1.1.0) and watch for the value dropping back toward zero between polls. A host that was up for days and now reports seconds has rebooted. Use the host uptime, not the agent's sysUpTime.

Does external monitoring collect these by default?

Yes. CPU, load, storage-backed memory and swap, process status, and uptime are all part of ostr.io's default health check, polled from outside your network with email and SMS alerts.

Conclusion

Server resource monitoring is SNMP's home turf: CPU, memory, swap, load, processes, and uptime are all a single poll away, mostly standards-track and portable. Remember the one seam — load average lives in the UCD-SNMP branch (1.3.6.1.4.1.2021) while the rest sits in the Host Resources MIB (1.3.6.1.2.1.25) — and remember to poll host uptime, not agent uptime, for reboot detection. Start with CPU, load, memory, swap, processes, or uptime, then poll from outside with ostr.io Monitoring so a box that reboots or wedges still reaches you — the essence of double durability. The full menu lives in the sensor & OID catalog.

Monitor it from outside the network

SNMP only tells you a box is healthy while something is still asking. ostr.io polls your endpoints externally and fires email + SMS alerts the moment a reading crosses your line — or the agent goes silent.