Home

Awesome

Community Plus header

New Relic Go Agent GoDoc Go Report Card codecov

The New Relic Go Agent allows you to monitor your Go applications with New Relic. It helps you track transactions, outbound requests, database calls, and other parts of your Go application's behavior and provides a running overview of garbage collection, goroutine activity, and memory use.

Go is a compiled language, and doesn’t use a virtual machine. This means that setting up New Relic for your Golang app requires you to use our Go agent API and manually add New Relic methods to your source code. Our API provides exceptional flexibility and control over what gets instrumented.

Installation

Compatibility and Requirements

For the latest version of the agent, Go 1.18+ is required.

Linux, OS X, and Windows (Vista, Server 2008 and later) are supported.

Installing and using the Go agent

To install the agent, follow the instructions in our GETTING_STARTED document or our GUIDE.

We recommend instrumenting your Go code to get the maximum benefits from the New Relic Go agent. But we make it easy to get great data in couple of ways:

Upgrading

If you have already been using version 2.X of the agent and are upgrading to version 3.0, see our MIGRATION guide for details.

Getting Started

v3/examples/server/main.go is an example that will appear as "Example App" in your New Relic applications list. To run it:

env NEW_RELIC_LICENSE_KEY=__YOUR_NEW_RELIC_LICENSE_KEY__LICENSE__ \
    go run v3/examples/server/main.go

Some endpoints exposed are http://localhost:8000/ and http://localhost:8000/notice_error

Usage

Integration Packages

The following integration packages extend the base newrelic package to support the following frameworks and libraries. Frameworks and databases which don't have an integration package may still be instrumented using the newrelic package primitives.

<!--- NOTE! When updating the tables below, be sure to update the docs site version too: https://docs.newrelic.com/docs/agents/go-agent/get-started/go-agent-compatibility-requirements -->

Service Frameworks

ProjectIntegration Package
gin-gonic/ginv3/integrations/nrginInstrument inbound requests through the Gin framework
gorilla/muxv3/integrations/nrgorillaInstrument inbound requests through the Gorilla framework
google.golang.org/grpcv3/integrations/nrgrpcInstrument gRPC servers and clients
labstack/echov3/integrations/nrecho-v3Instrument inbound requests through version 3 of the Echo framework
labstack/echov3/integrations/nrecho-v4Instrument inbound requests through version 4 of the Echo framework
julienschmidt/httprouterv3/integrations/nrhttprouterInstrument inbound requests through the HttpRouter framework
micro/go-microv3/integrations/nrmicroInstrument servers, clients, publishers, and subscribers through the Micro framework

Datastores

More information about instrumenting databases without an integration package using newrelic package primitives can be found here.

ProjectIntegration Package
lib/pqv3/integrations/nrpqInstrument PostgreSQL driver (pq driver for database/sql)
jackc/pgxv3/integrations/nrpgxInstrument PostgreSQL driver (pgx driver for database/sql)
jackc/pgx/v5v3/integrations/nrpgx5Instrument PostgreSQL driver (pgx/v5 driver for database/sql)
go-mssqldbv3/integrations/nrmssqlInstrument MS SQL driver
go-sql-driver/mysqlv3/integrations/nrmysqlInstrument MySQL driver
elastic/go-elasticsearchv3/integrations/nrelasticsearch-v7Instrument Elasticsearch datastore calls
database/sqlUse a supported database driver or builtin instrumentationInstrument database calls with SQL
jmoiron/sqlxUse a supported database driver or builtin instrumentationInstrument database calls with SQLx
go-redis/redisv3/integrations/nrredis-v7Instrument Redis 7 calls
go-redis/redisv3/integrations/nrredis-v8Instrument Redis 8 calls
redis/go-redisv3/integrations/nrredis-v9Instrument Redis 9 calls
mattn/go-sqlite3v3/integrations/nrsqlite3Instrument SQLite driver
snowflakedb/gosnowflakev3/integrations/nrsnowflakeInstrument Snowflake driver
mongodb/mongo-go-driverv3/integrations/nrmongoInstrument MongoDB calls

AI

ProjectIntegration Package
sashabaranov/go-openaiv3/integrations/nropenaiSend AI Monitoring Events with OpenAI
aws/aws-sdk-go-v2/tree/main/service/bedrockruntimev3/integrations/nrawsbedrockSend AI Monitoring Events with AWS Bedrock

Agent Logging

ProjectIntegration Package
sirupsen/logrusv3/integrations/nrlogrusSend agent log messages to Logrus
mgutz/logxiv3/integrations/nrlogxiSend agent log messages to Logxi
uber-go/zapv3/integrations/nrzapSend agent log messages to Zap
log/slogv3/integrations/nrslogSend agent log messages to log/slog
rs/zerologv3/integrations/nrzerologSend agent log messages to Zerolog

Logs in Context

ProjectIntegration Package
sirupsen/logrusv3/integrations/logcontext-v2/nrlogrusSend data collected from Logrus log messages to New Relic
logv3/integrations/logcontext-v2/logWriterSend data collected from the standard library logger log messages to New Relic
rs/zerologv3/integrations/logcontext-v2/zerologWriterSend data collected from zerolog log messages to New Relic

AWS

ProjectIntegration Package
aws/aws-sdk-gov3/integrations/nrawssdk-v1Instrument outbound calls made using Go AWS SDK
aws/aws-sdk-go-v2v3/integrations/nrawssdk-v2Instrument outbound calls made using Go AWS SDK v2
aws/aws-lambda-gov3/integrations/nrlambdaInstrument AWS Lambda applications

GraphQL

ProjectIntegration Package
graph-gophers/graphql-gov3/integrations/nrgraphgophersInstrument inbound requests using graph-gophers/graphql-go
graphql-go/graphqlv3/integrations/nrgraphqlgoInstrument inbound requests using graphql-go/graphql

Misc

ProjectIntegration Package
pkg/errorsv3/integrations/nrpkgerrorsWrap pkg/errors errors to improve stack traces and error class information
openzipkin/b3-propagationv3/integrations/nrb3Add B3 headers to outgoing requests
nats-io/nats.gov3/integrations/nrnatsInstrument publishers and subscribers using the NATS client
nats-io/stan.gov3/integrations/nrstanInstrument publishers and subscribers using the NATS streaming client

These integration packages must be imported along with the newrelic package, as shown in this nrgin example.

Alternatives

If you are already using another open source solution to gather telemetry data, you may find it easier to use one of our open source exporters to send this data to New Relic:

Support

Should you need assistance with New Relic products, you are in good hands with several support channels.

If the issue has been confirmed as a bug or is a Feature request, please file a Github issue.

Privacy

At New Relic we take your privacy and the security of your information seriously, and are committed to protecting your information. We must emphasize the importance of not sharing personal data in public forums, and ask all users to scrub logs and diagnostic information for sensitive information, whether personal, proprietary, or otherwise.

We define "Personal Data" as any information relating to an identified or identifiable individual, including, for example, your name, phone number, post code or zip code, Device ID, IP address and email address.

For more information, review New Relic’s General Data Privacy Notice.

Contribute

We encourage your contributions to improve the Go Agent! Keep in mind when you submit your pull request, you'll need to sign the CLA via the click-through using CLA-Assistant. You only have to sign the CLA one time per project.

If you have any questions, or to execute our corporate CLA, required if your contribution is on behalf of a company, please drop us an email at opensource@newrelic.com.

A note about vulnerabilities

As noted in our security policy, New Relic is committed to the privacy and security of our customers and their data. We believe that providing coordinated disclosure by security researchers and engaging with the security community are important means to achieve our security goals.

If you believe you have found a security vulnerability in this project or any of New Relic's products or websites, we welcome and greatly appreciate you reporting it to New Relic through HackerOne.

If you would like to contribute to this project, please review these guidelines.

To all contributors, we thank you! Without your contribution, this project would not be what it is today. We also host a community project page dedicated to the Go Agent.

License

The New Relic Go agent is licensed under the Apache 2.0 License.