Integration logging recommendations

New Relic Infrastructure provides an SDK for creating an integration that reports custom host data. This document explains requirements and best practices for generating integration logs. For instructions on creating an integration, see Create an integration.

Access to this feature depends on your subscription level.

Logging requirements

It is up to the integration author to decide what kind of log messages to create, and what kind of information will be useful for debugging issues. There is only one requirement for how an integration must generate logs:

  • The integration executable must write logs to standard error (stderr).

The Infrastructure agent will capture lines written to standard error and merge them into the logging stream written by the Infrastructure agent itself.

To avoid depending on third-party logging solutions, the Go integration building library provides a simple log package with the common log-levels.

Here are the recommended practices for generating integration logs:

  • By default, an integration should be "quiet." Aside from the data emitted to standard output, there should be very few logging or diagnostic messages generated.
  • It's recommended you include a verbose logging mode similar to the verbose setting in the Infrastructure agent. Include a command line switch to enable and disable verbose logging (for example, -verbose).
  • To debug your integration while the integration is running, include the verbose switch in the definition file as part of the command line to be run. This will send the verbose logs to the Infrastructure agent's own log file.
  • For general debugging purposes, New Relic recommends you use a flag that writes the standard out JSON data in human-readable "pretty-printed" form (for example, --pretty). Note that output written in a "pretty-printed" form is only for your debugging purposes and is not compatible with the Infrastructure agent.
  • Your integration should be created so that it can run on its own. If in doubt whether the integration is communicating with the Infrastructure agent, you can run the integration from the command line and see if it's producing the correct output or log messages you expect.

For information about the Go language logging package, see Logging package.

For more help

For logging for all New Relic agents, see New Relic agent logs and troubleshooting.

Recommendations for learning more: