PeakHour logo

Not long ago I came across PeakHour, a tool that lives in the macOS menu bar with a very pleasant look & feel, capable of visualizing your home network traffic in real time. To achieve this it uses the SNMP protocol — you register all devices that support the protocol and it polls them sequentially, displaying the traffic passing through them.


Network Monitoring

My use case is getting an instant overview of my home network activity. As I mentioned, although not all devices support SNMP, having it configured on the Access Points and the Router makes it ideal for monitoring the Internet or Wi-Fi connection — it can help determine how much bandwidth devices are using at any given moment.

Monitoring from the menu bar
Monitoring from the menu bar

These are the typical places where you’d enable SNMP

  • Switches and Access Points

Each one has its own configuration method; the only thing you need to do is “enable SNMP in read-only mode” with the community (password) you choose (the typical one is “public”) so you can query them.

  • Apple devices running macOS

To enable SNMP on macOS just do the following: Open a shell with Terminal.app and as root create the snmpd.conf file

$ su -
# cp /etc/snmp/snmpd.conf.default /etc/snmp/snmpd.conf

Edit the snmpd.conf file, these two entries (use the network address that corresponds to your case)

com2sec my network 192.168.1/24 public
rocommunity public

Then tell macOS to start the SNMPD service permanently

# launchctl load -w /System/Library/LaunchDaemons/org.net-snmp.snmpd.plist
  • Linux machines

In my case I use the Gentoo distribution, so these are the steps I followed to install and configure SNMP

$ su -
# emerge -v mysql
# emerge -v net-snmp

I edit the configuration file — below is a very basic example, the minimum needed to get it working

agentAddress  udp:127.0.0.1:161
agentAddress  udp:192.168.1.245:161
view   systemonly  included   .1.3.6.1.2.1.1
view   systemonly  included   .1.3.6.1.2.1.25.1
 rocommunity public  default  #  -V systemonly
 rouser   authOnlyUser
sysLocation    En el baul de los recuerdos
sysContact     Me sysServices    72
proc  mountd
proc  ntalkd    4
proc  sendmail 10 1
disk       /     10000
disk       /var  5%
includeAllDisks  10%
load   12 10 5
 trapsink     localhost public
iquerySecName   internalUser
rouser          internalUser
defaultMonitors          yes
linkUpDownNotifications  yes
 extend    test1   /bin/echo  Hello, world!
 extend-sh test2   echo Hello, world! ; echo Hi there ; exit 35
 master          agentx

I enable the service and configure it to start at boot

# rc-update add snmpd default
# /etc/init.d/net-snmp start
  • Troubleshooting

If you have problems with the service, either because it won’t start or because you want to see what it’s doing, you can run the daemon in a terminal and “see” everything it does with the following command:

# snmpd -Le -V -f