New Features
Fixes
- Infinite Tracing
- Fixes issue with Infinite Tracing where a communication error can result in consuming too much CPU.
- Fixes issue with Infinite Tracing where a communication error did not clean up its corresponding communication threads.
- Agent version 8.30 introduces significant performance enhancements to Infinite Tracing. To use Infinite Tracing, please upgrade to version 8.30 or later.
- Fixes issue in .NET Framework ASP.NET MVC applications where transactions started on one thread would flow to background threads (e.g., started with
Task.Run
) in some scenarios but not others. Transaction state used to only flow to a background thread if the transaction originated from an async controller action. Transaction state now flows to background threads regardless of whether the controller action is async or not. - Fixes issue in .NET Framework ASP.NET MVC applications where agent instrumentation of an MVC controller action could cause an
InvalidProgramException
. - Fixes a problem with the reporting of Errors where Error Events may not appear even though Error Traces are being sent.
Upgrading
- Follow standard procedures to update the .NET agent.
- If you are upgrading from a particularly old agent, review the list of major changes and procedures to upgrade legacy .NET agents.
New Features
- Support for W3C Trace Context, with easy upgrade from New Relic trace context
- Distributed Tracing now supports W3C Trace Context headers for HTTP when distributed tracing is enabled. Our implementation can accept and emit both W3C trace header format and New Relic trace header format. This simplifies agent upgrades, allowing trace context to be propagated between services with older and newer releases of New Relic agents. W3C trace header format will always be accepted and emitted. New Relic trace header format will be accepted, and you can optionally disable emission of the New Relic trace header format.
- When distributed tracing is enabled with
<distributedTracing enabled="true" />
, the .NET agent will now accept W3C'straceparent
andtracestate
headers when calling Transaction.AcceptDistributedTraceHeaders. When calling Transaction.InsertDistributedTraceHeaders, the .NET agent will include the W3C headers along with the New Relic distributed tracing header, unless the New Relic trace header format is disabled using<distributedTracing enabled="true" excludeNewrelicHeader="true" />
. - The existing
Transaction.AcceptDistributedTracePayload
andTransaction.CreateDistributedTracePayload
APIs are deprecated in favor of Transaction.AcceptDistributedTraceHeaders and Transaction.InsertDistributedTraceHeaders.
Fixes
- Fixes issue which prevented synthetic monitors from working when distributed tracing is enabled.
- Fixes issue where our RPM package for installing the agent on RPM-based Linux distributions included a 32-bit shared library, which created unnecessary dependencies on 32-bit system libraries.
- Fixes issue where the TransportDuration metric for distributed traces was always reporting 0.
Upgrading
- Follow standard procedures to update the .NET agent.
- If you are upgrading from a particularly old agent, review the list of major changes and procedures to upgrade legacy .NET agents.
New Features
Infinite Tracing on New Relic Edge
This release adds support for Infinite Tracing on New Relic Edge. Infinite Tracing observes 100% of your distributed traces and provides visualizations for the most actionable data so you have the examples of errors and long-running traces so you can better diagnose and troubleshoot your systems.
You configure your agent to send traces to a trace observer in New Relic Edge. You view your distributed traces through the New Relic’s UI. There is no need to install a collector on your network.
Infinite Tracing is currently available on a sign-up basis. If you would like to participate, please contact your sales representative.
Agent version 8.30 introduces significant performance enhancements to Infinite Tracing. To use Infinite Tracing, please upgrade to version 8.30 or later.
Error attributes now added to each span that exits with an error or exception
Error attributes
error.class
anderror.message
are now included on the span event in which an error or exception was noticed, and, in the case of unhandled exceptions, on any ancestor spans that also exit with an error. The public API methodNoticeError
now attaches these error attributes to the currently executing span.Spans with error details are now highlighted red in the Distributed Tracing UI, and error details will expose the associated
error.class
anderror.message
. It is also now possible to see when an exception leaves the boundary of the span, and if it is caught in an ancestor span without reaching the entry span. NOTE: This “bubbling up” of exceptions will impact the error count when compared to prior behavior for the same trace. It is possible to have a trace that now has span errors without the trace level showing an error.If multiple errors occur on the same span, only the most recent error information is added to the attributes. Prior errors on the same span are overwritten.
These span event attributes conform to ignored errors configuration.
Fixes
- Fixes issue in the MSI installer which prevented the
InstrumentAllNETFramework
feature selection from working as expected on the command line. - Fixes issue for Azure App Service environments running on Linux that caused both the application and its Kudu process to be instrumented by the agent. The Kudu process is no longer instrumented.
- Fixes issue when using the
ignoreErrors
configuration. Previously, when an exception contained a inner exception(s), theignoreErrors
config was only applied to the outer-most exception. Now, both the outer-most and inner-most exception type are considered when evaluating theignoreErrors
configuration. - Fixes an issue that could cause an exception to occur in the instrumentation for StackExchange Redis. This exception caused the instrumentation to shut down leaving StackExchange Redis uninstrumented.
Upgrading
- Follow standard procedures to update the .NET agent.
- If you are upgrading from a particularly old agent, review the list of major changes and procedures to upgrade legacy .NET agents.
New Features
Thread profiling support for Linux
Thread profiling on Linux will be supported on .NET Core 3.0 or later applications when running .NET agent version 8.23 or later. Triggering a thread profile is done from the
Thread profiler
page in APM.Accessing Span-Specific information using the .NET Agent API
New property,
CurrentSpan
has been added toIAgent
andITransaction
. It returns an object implementingISpan
which provides access to span-specific functions within the API.Adding Custom Span Attributes using the .NET Agent API
New method,
AddCustomAttribute(string, object)
has been added toISpan
.- This new method accepts and supports all data-types.
- Further information may be found within .NET Agent API documentation.
- Adding custom attributes to spans requires distributed tracing and span events to be enabled. See .NET agent configuration
Fixes
- Fixes issue where adding multiple custom attributes on a Transaction using
ITransaction.AddCustomAttribute
causes the agent to ignore additional attempts to add custom attributes to any transaction. - Fixes issue that prevented Custom Events from being sent to New Relic until the agent shuts down.
- Fixes issue that can cause asynchronous Redis calls in an ASP.NET MVC application to report an inflated duration.
Upgrading
- Follow standard procedures to update the .NET agent.
- If you are upgrading from a particularly old agent, review the list of major changes and procedures to upgrade legacy .NET agents.
New Features
Adding custom transaction attributes using the .NET Agent API
New method,
AddCustomAttribute(string, object)
has been added toITransaction
.- This new method accepts and supports all data types.
- Method
AddCustomParameter(string, IConvertable)
is still available with limited data-type support; however, this method should be considered obsolete and will be removed in a future release of the agent API. - Further information may be found within .NET Agent API documentation.
Enhanced type support for
RecordCustomEvent
andNoticeError
API methods.APIs for recording exceptions and custom events now support values of all types.
- The
NoticeError
API method has new overloads that accept anIDictionary<string, object>
. - The
RecordCustomEvent
methods have been modified to handle all types of data. In that past, they only handledstring
andfloat
types. - Further information may be found within .NET agent API documentation.
- The
New attributes on span events
- Spans created for external HTTP calls now include the
http.statusCode
attribute representing the status code of the call. - Spans created for calls to a datastore now include the
db.collection
attribute. For instance, this will be the table name for a call to MS SQL Server.
- Spans created for external HTTP calls now include the
Ability to exclude attributes from span events
Attributes on span events (e.g.,
http.url
) can now be excluded via configuration. See .NET agent configuration for further information.
Fixes
- New Relic distributed tracing relies on propagating trace and span identifiers in the headers of external calls (e.g., an HTTP call). These identifiers now only contain lowercase alphanumeric characters. Previous versions of the .NET agent used uppercase alphanumeric characters. The usage of uppercase alphanumeric characters can break traces when calling downstream services also monitored by a New Relic agent that supports W3C trace context (New Relic's .NET agent does not currently support W3C trace context. Support for W3C trace context for .NET will be in an upcoming release). This is only a problem if a .NET application is the originator of the trace.
Upgrading
- Follow standard procedures to update the .NET agent.
- If you are upgrading from a particularly old agent, review the list of major changes and procedures to upgrade legacy .NET agents.
New Features
Support for Real Time Streaming
- Event data is now sent to New Relic every five seconds, instead of every minute. As a result, transaction, error, and custom events will now be available in New Relic and Insights dashboards in near real time. For more information on how to view your events with a five-second refresh, see the real time streaming documentation.
- Note that the overall limits on how many events can be sent per minute have not changed. Also, span events, metrics, and trace data is unaffected, and will still be sent every minute.
Fixes
- Fixes security vulnerability NR20-01 which may cause SQL parameter values to appear in the agent log file when the logging level is set to Debug or Finest and the calling application supplies SQL parameters without a
@
prefix. - Fixes an issue where Explain Plans are not generated for database commands with parameters that do not have the
@
prefix on the name. - Fixes an issue with the timing of some async MongoDB driver methods.
Upgrading
- Follow standard procedures to update the .NET agent.
- If you are upgrading from a particularly old agent, review the list of major changes and procedures to upgrade legacy .NET agents.
This is a security-only release for the 6.x agents that support legacy frameworks (.NET version 4.5 and lower). If you are on .NET version 4.5 or higher, or if you are on .NET Core, use the 8.x or later agent versions.
Fixes
- Fixes security vulnerability NR20-01 which may cause SQL parameter values to appear in the agent log file when the logging level is set to Debug or Finest and the calling application supplies SQL parameters without a
@
prefix. - Fixes an issue where Explain Plans are not generated for database commands with parameters that do not have the
@
prefix on the name.
Upgrading
- Follow standard procedures to update the .NET agent.
- If you are upgrading from a particularly old agent, review the list of major changes and procedures to upgrade legacy .NET agents.
New Features
- Enables ability to migrate to Configurable Security Policies (CSP) on a per agent basis for accounts already using High-security mode (HSM). When both HSM and CSP are enabled for an account, an agent (this version or later) can successfully connect with either
high_security: true
or the appropriatesecurity_policies_token
configured.
Fixes
- Fixes a number of issues caused when Application Initialization has been enabled in Internet Information Services (IIS) (a.k.a. AlwaysOn in Azure App Services). The issues include the inability for the agent to name an app or possibly not instrument an app at all when app pool allow/deny listing has been applied via
newrelic.config
. In an Azure App Services scenario inadvertent instrumentation of the Kudu process could also occur. This was caused by the agent relying on the IIS environment variableAPP_POOL_ID
. When Application Initialization or AlwaysOn are enabled, theAPP_POOL_ID
environment variable is unavailable to the agent. The agent now also attempts to parse the command line of thew3wp.exe
process to identify the application pool the app is running under. - Improves the handling of OperationCanceledException errors when trying to connect or send data to New Relic.
- Fixes a problem with instrumenting ASP.NET Core applications that can occur when the Microsoft.AspNetCore.Diagnostics.Abstraction assembly is not available.
- Fixes a problem where WCF Instrumentation may shut-down due to an unexpected error.
- Fixes a problem that can cause the agent to fail to shutdown completely when a shutdown is triggered while the agent is still in its startup process.
- Fixes a problem with the GetLinkingMetadata API method that could cause an expected KeyValuePair to not be included in the Dictionary.
Upgrading
- Follow standard procedures to update the .NET agent.
- If you are upgrading from a particularly old agent, review the list of major changes and procedures to upgrade legacy .NET agents.
Fixes
- [.NET Core] Fixes a problem that could cause some .NET Core 3.0 applications to hang if they were configured with an invalid license key.
Upgrading
- Follow standard procedures to update the .NET agent.
- If you are upgrading from a particularly old agent, review the list of major changes and procedures to upgrade legacy .NET agents.
New Features
Improved support for WCF.
- Support for Task-based (TAP) service calls.
- Distributed Tracing and CAT are automatically supported for HTTP-based binding types (such as BasicHTTP, WebHTTP, WSHTTP).
- Non-HTTP binding types (such as NetTCP, MSMQ, Named Pipes) are instrumented, but do not automatically support Distributed Tracing and CAT.
[.NET Core] Adds support for .NET Core 3.1 beginning with preview 1.
Performance Metrics: The .Net Agent collects information about application performance in the following areas.
- Memory and CPU Utilization
- Garbage Collection
- Threadpool Usage and Throughput
Please refer to online documentation for further information.
Fixes
- [.NET Framework] Fix an issue where reading application settings from
web.config
orapp.config
could prevent the agent from starting up. - [.NET Framework] Fix an issue where the agent caused an application to deadlock when using a ConfigurationBuilder. This was commonly seen in applications using the AzureKeyVaultConfigBuilder.
- Fix an issue introduced in 8.16 where Memory and CPU metrics failed to update.
Upgrading
- Follow standard procedures to update the .NET agent.
- If you are upgrading from a particularly old agent, review the list of major changes and procedures to upgrade legacy .NET agents.