Skip to content

Releases: newrelic/go-agent

v2.16.1

02 Dec 22:22
Compare
Choose a tag to compare

New Relic's Go agent v3.0 is currently available for review and beta testing. Your use of this pre-release is at your own risk. New Relic disclaims all warranties, express or implied, regarding the beta release.

If you do not manually take steps to use the new v3 folder, as described below, you will not see any changes in your agent.

This 2.16.1 release includes a new v3.0 folder which contains the pre-release of Go agent v3.0; Go agent v3.0 includes breaking changes. We are seeking feedback and hope that you will look this over and test out the changes prior to the official release.

This is not an official 3.0 release, it is just a vehicle to gather feedback on proposed changes. It is not tagged as 3.0 in Github and the 3.0 release is not yet available to update in your Go mod file. In order to test out these changes, you will need to clone this repo in your Go source directory, under [go-src-dir]/src/github.com/newrelic/go-agent. Once you have the source checked out, you will need to follow the steps in the second section of v3/MIGRATION.md.

A list of changes and installation instructions is included in the v3 folder and can be found here

For this pre-release (beta) version of Go agent v3.0, please note:

  • The changes in the v3 folder represent what we expect to release in ~2 weeks as our major 3.0 release. However, as we are soliciting feedback on the changes and there is the possibility of some breaking changes before the official release.
  • This is not an official 3.0 release; it is not tagged as 3.0 in Github and the 3.0 release is not yet available to update in your Go mod file.
  • If you test out these changes and encounter issues, questions, or have feedback that you would like to pass along, please open up an issue here and be sure to include the label 3.0.
    • For normal (non-3.0) issues/questions we request that you report them via our support site or our community forum. Please only report questions related to the 3.0 pre-release directly via GitHub.

New Features

  • V3 will add support for Go Modules. The go.mod files exist in the v3 folder, but they will not be usable until we have fully tagged the 3.0 release officially. Examples of version tags we plan to use for different modules
    include:
    • v3.0.0
    • v3/integrations/nrecho-v3/v1.0.0
    • v3/integrations/nrecho-v4/v1.0.0

Changes

  • The changes are the ones that we have requested feedback previously in this issue.
  • A full list of changes that are included, along with a checklist for upgrading, is available in v3/MIGRATION.md.

v2.15.0

24 Oct 21:04
Compare
Choose a tag to compare
  • Added support for monitoring MongoDB queries with the new
    _integrations/nrmongo
    package.

  • Added new method Transaction.IsSampled() that returns a boolean that
    indicates if the transaction is sampled. A sampled transaction records a
    span event for each segment. Distributed tracing must be enabled for
    transactions to be sampled. false is returned if the transaction has
    finished. This sampling flag is needed for B3 trace propagation and
    future support of W3C Trace Context.

  • Added support for adding B3
    Headers
    to outgoing requests.
    This is helpful if the service you are calling uses B3 for trace state
    propagation (for example, it uses Zipkin instrumentation). You can use the
    new
    _integrations/nrb3
    package's
    nrb3.NewRoundTripper
    like this:

    // When defining the client, set the Transport to the NewRoundTripper. This
    // will create ExternalSegments and add B3 headers for each request.
    client := &http.Client{
        Transport: nrb3.NewRoundTripper(nil),
    }
    
    // Distributed Tracing must be enabled for this application.
    // (see https://docs.newrelic.com/docs/understand-dependencies/distributed-tracing/enable-configure/enable-distributed-tracing)
    txn := currentTxn()
    
    req, err := http.NewRequest("GET", "http://example.com", nil)
    if nil != err {
        log.Fatalln(err)
    }
    
    // Be sure to add the transaction to the request context.  This step is
    // required.
    req = newrelic.RequestWithTransactionContext(req, txn)
    resp, err := client.Do(req)
    if nil != err {
        log.Fatalln(err)
    }
    
    defer resp.Body.Close()
    fmt.Println(resp.StatusCode)

Bug Fixes

  • Fixed an issue where the
    nrgin
    integration was not capturing the correct response code in the case where no
    response body was sent. This issue has now been fixed but requires Gin
    greater than v1.4.0.