Profiles define the SNMP OIDs that ktranslate
collects and sends to your New Relic account. This document explains how to modify an existing profile or create a new profile.
Get started
If you've decided to build a custom profile or modify one of our open source profiles, you need a few essential tools:
- A Git repo: This is often GitHub, but can be any cloud or local git tool.
- This enables you to clone the Kentik SNMP profile collection as a starting point and add your own modifications and new profiles as necessary.
- An SNMP walk from a network device where you want to work on a profile. For more information, see our documentation on setting up SNMP and using
snmpwalk
.
Tip
New Relic does not provide support directly for the contents of the kentik/snmp-profiles. New Relic technical support is not able to provide any additional help beyond redirecting you back to raise an issue there.
Use custom profiles privately
The most effective way to add new profiles or modify the ones that ktranslate includes is to create your own private copy of the Kentik/snmp-profiles repo and load your custom profile directory into your Docker container on startup.
Tip
The value of devices.[deviceName].provider
is critical to entity synthesis in New Relic. More details can be found in the documentation on device configuration.
The way this is done is by using Docker's volume mount to pass in your customized files to the KTranslate container inside the etc/ktranslate/profiles/
directory.
There are other ways you could accomplish this but in this example we will demonstrate GitHub to fork and clone the data locally.
- Ensure you are in the directory you want to keep the files in, then clone your fork of the GitHub repo to your Docker host:
git clone https://github.com/<YourGitUser>/snmp-profiles.git
- Get the command you would normally use to launch the SNMP container, and add a second volume mount argument after the one where we passed in the
snmp-base.yaml
.
-v `pwd`/snmp-profiles/profiles:/etc/ktranslate/profiles \
The mount
command replaces the built-in profiles directory with your customized data.
The end result will be be similar to this:
docker run -ti --name ktranslate-discovery --rm --net=host \--user `id -u`:`id -g` \-v `pwd`/snmp-base.yaml:/snmp-base.yaml \-v `pwd`/snmp-profiles/profiles:/etc/ktranslate/profiles \kentik/ktranslate:v2 \-snmp /snmp-base.yaml \-log_level info \-snmp_discovery=true
Tip
Be sure to pass your custom version of the profiles in every time you launch a discovery container or SNMP polling container. If you don't use it consistently for all SNMP instances sets, this can cause unreliable behavior.
Tip
In the event that an existing SNMP profile is returning incorrect data or another breaking behavior, or to request new or modified SNMP profiles, follow these instructions to open an issue on the snmp-profiles Github repo. We are unable to provide timelines for modification or creation of SNMP profiles in the third party project GitHub - kentik/snmp-profiles: SNMP Profiles for ktranslate.
Depending on the Service Level associated with your New Relic account, you may be eligible for case support from New Relic Global Technical Support. In accordance with our Global Technical Support Offerings, we will do our best to determine whether an issue is with New Relic's products or caused by something outside our control and purview. For issues with third party tools that are outside our control to resolve, we will use commercially reasonable efforts to contribute enhancements, patches, or other functional developments to the upstream open source project.
Contribute profiles and modifications publicly
As an open source repo, contributions are welcome from anyone to create new profiles or improve the existing profiles.
To familiarize yourself with the structure of a profile, review this highly commented template.yml on GitHub.
Log into GitHub and go to the snmp-profiles repo.
To create a copy of the same information in your account, click the fork button near the top.
Within your fork, make necessary changes to the files, or create new vendor directories and profiles as needed.
Be sure to pass your profile through a YAML validator, such as codebeautify, before submitting a pull request.
When you are done with your changes, submit a pull request to the upstream repo.
New Relic is not involved in the process of reviewing profiles on the third-party repo, all requests for changes and updates must be addressed with Kentik's maintainers via Github issues.
Shortly after a profile is merged new SNMP profiles are automatically available by pulling the new version of the Docker image and launching a new container in your environment. For more information, see our documentation about SNMP manual setup.
Tip
Be sure to sync your fork regularly to keep it up to date with changes in the upstream repo.
What kinds of OIDs should I actually include in my profiles?
In many cases SNMP offers a lot of data, but much of that data does not provide actionable information. Or, the data provides value that is so uncommon and low impact, it might not be worth bringing into your New Relic account.
You want to focus on collecting data that lets you know if there is anything that would stop the device from being able to perform whatever functions you expect it to perform. Building on from that, you should collect measurements that tell you how well it is performing those functions.
Example 1: For a device operating as a VPN concentrator, we would collect high-level system metrics like:
- CPU and memory utilization
- Hardware sensor information to make sure that the device isn't going to shut itself down due to things like fan failures
- OIDs that tell us about the aggregated connections and throughput
Example 2: An example of data that is available but provides very poor value is an OID table that lists all the running processes on a network appliance. Coming from a server admin perspective, that might sound useful, but since this is an appliance, you normally do not have the capability or the need to do anything with the processes that run inside it. Polling and storing tables with hundreds of items that you can't actually do anything with would not be efficient.