newrelic-experimental / newrelic-dotnet-grpc

This New Relic .Net agent instrumentation for Grpc.Core module provides distributed tracing support for Grpc.Core rpc calls.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

New Relic Experimental header

GitHub forks GitHub stars GitHub watchers

GitHub all releases GitHub release (latest by date) GitHub last commit GitHub Release Date

GitHub issues GitHub issues closed GitHub pull requests GitHub pull requests closed

New Relic .Net agent instrumentation for Grpc.Core

The New Relic .Net agent instrumentation for Grpc.Core module provides distributed tracing support for Grpc.Core RPC calls.

Installation

The binaries are builts for both .net core (netstandard2.0) and .net framework (net461). Use the appropriate build that targets your application plaform. For .net framework, change netcore to netframework in the destination paths below

  1. Drop the extension dll file in the newrelic agent's Program Files "extensions" folder.
   copy Custom.Providers.Wrapper.Grpc.dll "C:\Program Files\New Relic\.NET Agent\netcore\Extensions"
  1. Drop the extension xml file in the newrelic agent ProgramData "extensions" folder.
   copy Custom.Providers.Wrapper.Grpc.xml "C:\ProgramData\New Relic\.NET Agent\netcore\Extensions"

Note: The XML file must be dropped into ProgramData's extension folder whereas DLL file must be dropped into Program Files's extension folder


Usage

This package automatically adds newrelic distributed tracing headers to the Grpc client calls and extracts them on the Grpc server side.

However this instrumentation cannot create headers if they are not initializated (null). So make sure the headers object is not null.

For example, this rpc call does not initialize headers and hence they are null.

var response = await client.SayHelloAsync(new HelloRequest { Name = "World" });

So developers must instead change their call usage to initialize an non-null headers object instead.

var response = await client.SayHelloAsync(new HelloRequest { Name = "World" }, new Metadata());

Support

New Relic has open-sourced this project. This project is provided AS-IS WITHOUT WARRANTY OR DEDICATED SUPPORT. Issues and contributions should be reported to the project here on GitHub.

We encourage you to bring your experiences and questions to the Explorers Hub where our community members collaborate on solutions and new ideas.

Contributing

We encourage your contributions to improve newrelic-dotnet-grpc instrumentation. 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.

License

newrelic-dotnet-grpc instrumentation is licensed under the Apache 2.0 License.

About

This New Relic .Net agent instrumentation for Grpc.Core module provides distributed tracing support for Grpc.Core rpc calls.

License:Apache License 2.0


Languages

Language:C# 100.0%