By the SNMP Monitoring team · Reviewed July 2026
Most SNMP problems trace back to a step done out of order or skipped entirely — the agent exposed before it was secured, the platform connected before anyone confirmed the agent even answers, the whole thing running for a year with no external check. This checklist is the antidote: an ordered, follow-top-to-bottom sequence from installing an agent to adding external durability, with a link to the detailed page for each phase. It's written to be printable and to leave nothing out. Follow it for a new deployment, or run down it against an existing setup to find what you missed. The order matters — each phase assumes the previous ones are done — so resist the urge to jump ahead to the fun part (dashboards) before the boring parts (security) are locked.
Parent: guides. Hub: glossary, all sensors.
Phase 1: Install
Get an SNMP agent running on the target device. The specifics differ by OS but the goal is identical — a listening agent you can query:
- Linux: install the Net-SNMP daemon (
snmpd) via your package manager — see Ubuntu/Debian or the equivalent for RHEL-family systems. - Windows: add the built-in SNMP Service feature — see Windows Server setup, remembering it's v1/v2c only.
- Network gear: enable SNMP in the device's config (per the relevant devices page).
- Confirm the service is running and listening on UDP 161 before moving on.
Don't configure anything security-sensitive yet beyond what's needed to start the service — that's the next phase, and doing it deliberately matters.
Phase 2: Secure
This is the phase people skip, and it's the one that gets them scanned and leaked. Lock the agent down before it ever sees traffic from beyond localhost:
- No default communities — never leave
public/private; use a random read-only community, or better, an SNMPv3 user with authentication and privacy. - OID allowlist — restrict the agent's view to the subtrees you actually monitor (OID allowlist), so a leaked community exposes less.
- Read-only — disable SNMP write (
rwcommunity) unless you have a specific, deliberate need. - Not internet-exposed — SNMP belongs on a management network, never facing the public internet.
Broader context and the reasoning behind each control is on security hardening. Treat this phase as mandatory; an insecure agent is worse than no agent.
Phase 3: Network
Now scope who can reach the agent. Even with a random community, you want the network to permit only your managers:
- Add a firewall rule permitting UDP 161 only from your monitoring host(s) — see firewall setup.
- Apply the same restriction at any cloud security group or upstream ACL.
- Keep the agent's own source-IP allowlist (from Phase 2) in place as defence in depth.
Two independent controls — a network firewall and the agent's ACL — mean a mistake in one doesn't expose the device.
Phase 4: Verify
Prove it works before you connect anything to it. A single snmpwalk from your manager confirms the agent responds, the credentials are right, and the view includes what you expect:
snmpwalk -v2c -c S3cr3tR0str1ng 10.0.0.20 system
SNMPv2-MIB::sysDescr.0 = STRING: Linux web01 5.15.0 ...
SNMPv2-MIB::sysName.0 = STRING: web01
SNMPv2-MIB::sysUpTime.0 = Timeticks: (18342200) 2 days, 3:57:02.00
If that returns data, the agent, the credentials, the firewall, and the view are all correct — you're clear to proceed. If it times out or errors, stop and fix it now; the troubleshooting page walks the usual causes (timeout means unreachable or wrong community; a noSuchObject means the OID is outside the view). Verifying here saves you from debugging the foundation later while also fighting the platform.
Phase 5: Collect & visualise
With a proven agent, connect a collector or platform to gather metrics and draw them:
- Choose a tool that fits your scale and budget — the tools comparison weighs the open-source and commercial options.
- Point it at your verified agents using the same community/v3 credentials.
- For dashboards, route SNMP through a collector into Grafana — the Grafana guide covers the two standard paths.
Start with a handful of key metrics (interfaces, CPU, disk) and expand once the pipeline is stable.
Phase 6: Alert
Collection without alerting is just pretty graphs nobody watches at 3 a.m. Wire up notifications:
- Set thresholds on the metrics that matter, using hysteresis to avoid flapping.
- Add a trap path for instantaneous events (snmptrapd on UDP 162).
- Route alerts to the right channel and severity so the urgent ones get noticed.
The alerting theory page covers threshold and severity design; the hands-on alerts guide builds a working example step by step.
Phase 7: External durability
The last phase is the one almost everyone skips until an outage teaches them. Everything so far runs inside your network, so an on-site failure blinds your monitoring exactly when you need it. Add an independent, off-box check that polls your agents from outside — a second, uncorrelated path that survives a local outage. An external service like ostr.io provides this durability layer over SNMPv2c with a source allowlist and double durability; set it up as the final step so a failure of your own infrastructure can't silence you.
The full checklist table
Run down this table and tick each row:
| Phase | Action | Done? |
|---|---|---|
| 1. Install | Agent running, listening on UDP 161 | ☐ |
| 2. Secure | No defaults, v3/random RO community, OID allowlist, read-only, not exposed | ☐ |
| 3. Network | Firewall + ACL permit only your managers on UDP 161 | ☐ |
| 4. Verify | snmpwalk … system returns data | ☐ |
| 5. Collect | Platform/collector gathering + visualising metrics | ☐ |
| 6. Alert | Thresholds + trap path + routed notifications | ☐ |
| 7. External | Independent off-box durability check | ☐ |
Seven ticks and you have a monitoring setup that's secure, verified, visualised, alerting, and durable — not just "SNMP is turned on."
Frequently asked questions
What's the right order to set up SNMP?
Install → secure → restrict the network → verify → collect & visualise → alert → add external durability. The order matters because each phase assumes the last is done — securing before exposing, verifying before connecting a platform, alerting before relying on it. Following the sequence top to bottom is what stops the common mistakes of an exposed agent or an untested pipeline.
What's the minimum SNMP security baseline?
No default communities (use a random read-only string or SNMPv3), an OID allowlist limiting what the agent exposes, read-only access with SNMP write disabled, a source-IP ACL, and never internet-exposed. These five together mean a leaked credential exposes little and only your managers can reach the agent. It's the non-negotiable baseline before any agent sees production traffic.
How do I verify SNMP is working?
Run snmpwalk -v2c -c <RO> <host> system from your monitoring host before connecting any platform. If it returns sysDescr, sysName, and uptime, the agent, credentials, firewall, and view are all correct. A timeout usually means unreachable or a wrong community; a noSuchObject means your OID is outside the agent's allowlisted view. Fix any failure here before proceeding.
What's the last step in an SNMP deployment?
External durability — an independent, off-box check that polls your agents from outside your network. It's the most commonly skipped step, but without it an on-site outage takes down your monitoring at the worst possible moment. Adding an external path gives you a second, uncorrelated view that survives a local failure, so you still find out when your own infrastructure goes down.
Key takeaways
- Follow the phases in order: install → secure → network → verify → collect → alert → external durability.
- Secure before exposing — no defaults, random/v3 credentials, OID allowlist, read-only, not internet-facing.
- Verify with
snmpwalk … systembefore connecting any platform; fix failures before proceeding. - Alerting and external durability are the two most-skipped phases — don't stop at pretty graphs.
- Use the phase → action → done table as a printable, tickable reference.
- For the durability layer, add external monitoring with ostr.io.