Installing SNMP onto a Raspberry Pi

While researching DHCP problems, I noticed someone was discussing monitoring DHCP from SNMP. That left me wondering what the Raspberri Pi MIB looks like, so I decided to install SNMP and find out.

If you are not familiar with SNMP, it is an extensive monitoring protocol. I once used it heavily to monitor network performance across hundreds of routers. To best make use of SNMP, you need a SNMP Console such as SNMPc. SNMPc is rather spendy these days, but there are free SNMP consoles as well – they just take more work (from what I’ve seen) to get running.

For my purposes, I don’t need an SNMP console. I will just use a utility called SNMPWALK which will dump out the entire MIB in a semi-formatted fashion.

RPI does not come with SNMP installed. To install it:

sudo apt-get update
sudo apt-get install snmpd
sudo apt-get install snmp

To get it running, you will need to modify the /etc/snmp/snmpd.conf file:

First, I commented out this line:

#agentAddress  udp:

and below the line ‘#agentAddress udp:161,udp6:[::1]:161′ I added:

agentAddress udp:161

then below this line:

 rocommunity public localhost

I added:

 rocommunity public

Finally, restart the service:

service snmpd restart

Verify the service has started:

ps -A | grep snmpd

If the service did not start, you can check \var\log\syslog for error messages.

You can also run tcpdump to monitor SNMP packets on the RPI to verify they are being received and respond to:

tcpdump -i eth0 “udp and (src port 161 or 162)”

On the RPI, you can walk the MIB using this command:

snmpwalk -Os -c public -v 1 localhost

Unfortunately, no MIBs appear to be installed to properly interpret the OIDs so you mainly get gibberish, but it is a good test to verify snmpd itself is working.

These instructions will fix the snmp client so that it extracts the english names for the OIDs:

Here is the system section of RPI’s MIB:

ysDescr.0 = STRING: Linux nsdude 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l
sysObjectID.0 = OID: netSnmpAgentOIDs.10
sysUpTimeInstance = Timeticks: (33662) 0:05:36.62
sysContact.0 = STRING: Me <>
sysName.0 = STRING: nsdude
sysLocation.0 = STRING: Sitting on the Dock of the Bay
sysServices.0 = INTEGER: 72
sysORLastChange.0 = Timeticks: (6) 0:00:00.06
sysORID.1 = OID: snmpFrameworkMIBCompliance
sysORID.2 = OID: snmpMPDCompliance
sysORID.3 = OID: usmMIBCompliance
sysORID.4 = OID: snmpMIB
sysORID.5 = OID: tcpMIB
sysORID.6 = OID: ip
sysORID.7 = OID: udpMIB
sysORID.8 = OID: vacmBasicGroup
sysORDescr.1 = STRING: The SNMP Management Architecture MIB.
sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.
sysORDescr.3 = STRING: The management information definitions for the SNMP User-based Security Model.
sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
sysORDescr.5 = STRING: The MIB module for managing TCP implementations
sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations
sysORDescr.7 = STRING: The MIB module for managing UDP implementations
sysORDescr.8 = STRING: View-based Access Control Model for SNMP.
sysORUpTime.1 = Timeticks: (4) 0:00:00.04
sysORUpTime.2 = Timeticks: (5) 0:00:00.05
sysORUpTime.3 = Timeticks: (5) 0:00:00.05
sysORUpTime.4 = Timeticks: (6) 0:00:00.06
sysORUpTime.5 = Timeticks: (6) 0:00:00.06
sysORUpTime.6 = Timeticks: (6) 0:00:00.06
sysORUpTime.7 = Timeticks: (6) 0:00:00.06
sysORUpTime.8 = Timeticks: (6) 0:00:00.06

To see information about RPI disks:

snmpwalk -Os -c public -v 1 nsdude UCD-SNMP-MIB::dskTablecd /

Information about CPU usage (load average):

snmpwalk -Os -c public -v 1 nsdude UCD-SNMP-MIB::laTable

This entry was posted in c-rpi and tagged , . Bookmark the permalink.

3 Responses to Installing SNMP onto a Raspberry Pi

  1. Pingback: SNMP Environmental Monitoring using ESP8266-based Sensors | Big Dan the Blogging Man

  2. khushi says:

    can anybody help me for coding respberrypi to interact with router to get router data using SNMP.

    • Dan TheMan says:

      If you want some quick and dirty, use snmpwalk. If you really need to interact with the MIB, you are going to need to use a language that can interact with the snmp library. Google will point the way.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s