...
The purpose of this article is to outline steps to easily deploy a trap listener in your infrastructure to drive SNMP trap alerts into up.time. Although the article utilizes Trap Receiver to snmptrapd provided by Net-SNMP to receive SNMP Traps traps and execute scripts, one can use any SNMP trap receiver as long as it can execute scripts when traps are received. The steps provided in this article were applied to a Windows server. Identical steps can be applied to a Linux server running up.time. Contact uptime Support at support@uptimesoftware.com if you have any issues.
Net-SNMP is an SNMP application suite supported on numerous platforms including Windows and Linux (the two platforms Trap Receiver is a utility for Windows. If the up.time Monitoring Station is on Windows, you may choose to install it on the same serversupported on). Here is a brief summary of what happens when an SNMP trap is sent:
- the SNMP-enabled device sends an SNMP trap to the SNMP Trap Receiver
- Trap Receiver reviews the list of configured Actions and executes Action(s) if the trap meets the filter
- the Trap Receiver Action executes the Trap_Receiver.bat script, which is a wrapper for Trap_Receiver.vbs
- snmptrapd service
- snmptrapd compares the trap to the list of filters in the snmptrapd.conf file
- when the trap matches the uptime filter, the trap_to_ext_event.pl perl script is executed
- trap_to_ext_event.pl calls the Trap_Receiver.vbs calls up.time API to update the status of the External Check monitor associated with the device
- if an Alert Profile is associated with the monitor, an alert notification is sent out
Below is a diagram depicting the process:
SNMP Trap Scripts Configuration
- Download the SNMP Trap Receiver Scripts
- Extract Trap_Receiver_Scripts.zip file
- Put the files in an appropriate directory (e.g. C:uptime)
- Open Trap_Receiver.bat and look for the “SCRIPT_DIR” variable. Change it to where you have put the scripts in step 2.
- Open Trap_Receiver.vbs and modify a few variables if needed:
MonitoringStationHost
…this is where the up.time Monitoring Station is installed. Make certain the hostname/IP used can communicate from where the scripts are to the Monitoring Station.MonitoringStationPort
…this is the port up.time uses for the API. By default it’s 9996.AlertStatus
…this is the severity of the alert in up.time when an SNMP trap is received.The value can be one of the following integers:
- 0=OK
- 1=Warning
- 2=Critical
- 3=Unknown
Trap Receiver Configuration
- Download Trap Receiver from the following website:
- Install Trap Receiver
- Launch the Trap Receiver UI
- Click on the “Configure” button:
- You should be at the “Actions” tab. Click “Add”:
- Since the IP of the device sending out SNMP traps might be displayed differently in up.time, a separate action should be created for each device so that the proper hostname can be passed to up.time.
To add a new action tied to a particular IP:- Under “Watch”, select “Sender IP”.
- Under “Equals”, input the IP Address of the device that will be sending the SNMP Traps.
- Check the “Execute” checkbox and click “Configure”
- Click on the “…” button and select the “Trap_Receiver.bat” from SNMP Trap Scripts Configuration Step 2
In the Arguments box, type the following:
Code Block language text --hostname=yourDeviceName
…where “yourDeviceName” is the “Host Name” in up.time. The “Host Name” can be found under the “Info” tab in up.time.
For example:
Check the “Include Trap Data” checkbox. See below:
Click “OK”
Click “Update” to get back to the Configure Trap Receiver window.
Go to the “Trap Data” tab
Check the “Pass to Command Line” checkbox
Click “Specify Parameters”
Make sure the following lines are checked and the Command Line Flags are as follow:
Variable Command Line Flags Ip Address IpAddress Varbind Data VarbindData Varbind OID VarbindOID The end result should look like this:
Click “OK” when complete
The SNMP variables, by default, will be shown as numbers (e.g. 1.3.6…). To show more meaningful variable names, you will need to load the appropriate MIBs from your devices
Go to the “Mibs” tab in the “Configure Trap Receiver” window
Check the “Translate OIDs” checkbox
Obtain vendor-specific MIBs and load them by clicking the “Load MIB” button
Click “OK” when finish loading MIBs
up.time Configuration
Add an “External Check” Service Monitor in up.time:
...
Install Net-SNMP and Perl
- Download Net-SNMP from http://sourceforge.net/projects/net-snmp/files/net-snmp%20binaries/5.6.1.1-binaries/net-snmp-5.6.1.1-1.x86.exe/download
- Download Strawberry Perl from http://strawberryperl.com/download/5.20.1.1/strawberry-perl-5.20.1.1-64bit.msi
- Execute the Net-SNMP installer and accept the defaults.
- Execute the Strawberry Perl installer and accept the defaults
...
Create a snmptrapd configuration file and Perl script
create a new file called snmptrapd.conf in the C:\usr\etc\snmp directory with contents similar to the following ("public" on the first line is the SNMP community string - feel free to changed accordingly, and the path to up.time on the second line should be changed accordingly):
Code Block authCommunity log,execute,net public traphandle default C:\Strawberry\perl\bin\perl.exe "C:\Program Files\uptime software\uptime\scripts\snmp-trap-script\trap_to_ext_event.pl"
- in the Start menu, select the Net-SNMP folder, right click Register Trap Service and choose Run As Administrator
- start the "Net-SNMP Trap Handler" service
- create the directory "C:\Program Files\uptime software\uptime\scripts\trap_to_ext_event.pl"
- unzip and copy the attached file to the directory mentioned in the previous step
This approach assumes that your SNMP trap service monitors all have the same name, "SNMP Trap (member)", and are managed via a Service Group.
There are two logs that are created with this solution, one when traps are received by the Net-SNMP Trap Handler service and another when the trap is sent into up.time by the perl script. This helps to narrow down an issue if one arises.
...
up.time Configuration
Create a new monitor called "SNMP Trap" and assign it to a Service Group, so that it can be applied to numerous Elements in up.time.
- Create a Service Group for your devices that will send SNMP traps to up.time.
- Click on the “Services” button at the top
- Click the "Add Service Group" link in the menu on the left
- Select "Regular" from the drop down and click the "Continue..." button
- Enter "SNMP Trap Group" as the name for the Service Group and, optionally, a description for the group
- In the "Available Element Groups" and "Available Elements" lists, choose the Element Groups and Elements that you want to have SNMP Trap monitors created for
- Click the "Finish" button and close the dialogue window
- Create an External Check monitor and assign it to the "SNMP Trap Group" Service Group.
- Click on the “Services” button at the top
- Click “Add Service Monitor” on the left
- Select “External Check” from the list of available Service Monitors and click “Continue…”
- Input “SNMP
- - Trap” as the Service Name
- From the drop down menu where it says "Select a System", select the host/device that will be sending the SNMP trap Click “Finish”
- Select the "Service Group" radio button and choose "SNMP Trap Group" from the drop down.
- Choose an Alert Profile to have alert messages sent to the appropriate users.
- Click “Finish”
Now when traps are received by the Net-SNMP snmptrapd service, the appropriate "SNMP Trap (member)" service monitor will be set to CRIT and an alert will be sent out. When the status is acknowledged in the up.time UI (click the ACK button), the status will be set back to OK.