Using Ruby-Netsnmp in an AWS Lambda to Get SNMP Metrics from Cloud/On-Prem Devices

This blog post will explore how to use Ruby-Netsnmp, a Ruby library for SNMP, in an AWS Lambda function to collect SNMP metrics from devices and post them to New Relic.

How it Works

  1. The Lambda function is triggered, either by a schedule or an event.
  2. The function retrieves the desired SNMP metrics from the device and processes them as needed.
  3. The function returns the results to the calling application or service.

Using Ruby-Netsnmp to Translate MIBs

One of the main benefits of using Ruby-Netsnmp in an AWS Lambda function is the ability to translate MIBs. MIBs, or Management Information Bases, are databases of information that SNMP devices use to organize and communicate their data. MIBs use a specific syntax that can be difficult to read and interpret, making it challenging to extract useful information.

However, Ruby-Netsnmp includes a MIB parser that can translate the MIB syntax into a more human-readable format. This allows you to easily extract the relevant SNMP metrics and incorporate them into your monitoring solution.

Using the load_module Method to Load MIBs

One of the most powerful features of Ruby-Netsnmp is the ability to load MIB files and translate the complex MIB syntax into human-readable form. This makes it much easier to work with SNMP data and incorporate it into your monitoring solution.

To load a MIB file, you can use the load_module method in the Ruby-Netsnmp library. This method takes the name of the MIB file as an argument, and then loads the file into memory for use in your code.

Note that the load_module method needs to be called before any SNMP queries are made, as it needs to load the MIB file into memory first.

Posting SNMP Metrics to New Relic

Once you've retrieved the SNMP metrics from your devices using Ruby-Netsnmp, the next step is to post them to our monitoring solution. New Relic is a popular monitoring platform that provides real-time visibility into the performance of your applications and infrastructure. It includes a flexible API that allows you to easily post custom metrics from your own applications and scripts. Using the Faraday gem to make a POST request to the New Relic Metrics API. We're building a JSON payload containing the custom event SNMPMetrics. We're then making the POST request to the New Relic API endpoint with the appropriate headers and API key.

Conclusion

Using Ruby-Netsnmp in an AWS Lambda function is an effective way to retrieve SNMP metrics from devices, while also allowing for the translation of MIBs. By leveraging the flexibility and scalability of AWS Lambda, you can simplify your monitoring stack and reduce the need for additional infrastructure. With the right implementation and configuration, you can use this approach to monitor the health and performance of your cloud/on-premises infrastructure with ease.

by Sean Faria