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.
New Features
- .NET agent installation procedures have been simplified for Windows environments enabling you to more easily monitor .NET Core applications. Our standard installation procedures use a single MSI installer to install support for both .NET Framework and .NET Core applications. If you previously only monitored .NET Framework applications then nothing changes for you. If you were previously installing our .NET Core support using one of our manual install procedures you may need to port any custom modifications you have made to your newrelic.config and any XML custom instrumentation you have applied to the new install location.
- Trace Accessors APIs: two new API calls to obtain information used to support tracing.
- TraceMetadata - returns a property with access to the following:
- TraceId - the currently executing trace's identifier.
- SpanId - the currently executing span's identifier.
- IsSampled - returns whether or not the current transaction is part of a sampled distributed trace.
- GetLinkingMetadata - returns key/value pairs which can be used to correlate this application in the New Relic backend.
- TraceMetadata - returns a property with access to the following:
Fixes
- [.NET Framework] Fix an issue in WCF instrumentation where multiple transactions were created for a call to a WCF service endpoint that used the begin/end async pattern.
- [.NET Core] Fix an application crash bug on Alpine Linux.
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
- Adds instrumentation for StackExchange.Redis asynchronous methods. Generally, these methods end with the
Async
suffix (e.g.,StringSetAsync
). - [.NET Core] Adds support in the .NET Core Agent for StackExchange.Redis.
Fixes
- Resolves security issue where a manually constructed SQL stored procedure invocation may cause sensitive data to be captured in metric names. See Security Bulletin NR19-05
- Fix a memory leak introduced in agent version 8.17.438.0.
- Fixes an issue where NullReferenceExceptions may be logged in scenarios where a large number of segments are created for a single transaction.
- Fix an issue where the
request.uri
attribute on transaction traces and event data would be set to the full URI of the request instead of the request path (e.g.,http://www.domain.com/request/path
instead of/request/path
) in automatic instrumentation of ASP.NET and WCF applications, as well as in the agent API methodSetTransactionUri()
. - [.NET Core] Fix an issue where memory and CPU metrics may be overstated in APM.
- [.NET Framework] Fix an issue with the 8.17.438.0 release which can cause a delay in starting up an application.
- [.NET Framework] Fix an issue where the agent may fail to start for 32-bit ASP.NET MVC applications when the NewRelic.Agent NuGet package was used to install the agent.
- [.NET Framework] Fix an issue on agent shutdown where an error log message may appear in the agent log indicating an HTTP 409 error response from New Relic. This error did not have any other impact other than appearing in the log.
- [.NET Framework] Fix an issue where a large number of error messages may be reported on agent startup due to insufficient permissions of the app-pool user to create performance counters. In this release, a specific warning message regarding permissions will be reported.
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.
Notes
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 7.x or later agent versions.
Fixes
Resolves security issue where a manually constructed SQL stored procedure invocation may cause sensitive data to be captured in metric names. See Security Bulletin NR19-05.
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
- This release adds Transaction event attributes that provide context between your Kubernetes cluster and services. For details on the benefits see this blog post.
- The NewRelic.Agent NuGet package now includes the x86 (32-bit) profiler for Windows. To monitor 32-bit Windows applications using this NuGet package the
COR_PROFILER_PATH
(.NET Framework) or theCORECLR_PROFILER_PATH
(.NET Core) environment variable needs to be set to the path the of the 32-bit profiler DLL (NewRelic.Profiler.x86.dll). - For .NET Core applications hosted in Azure App Services, the New Relic Azure Site Extension can now be used to install the agent. This was previously only available for .NET Framework applications. Follow these procedures to install.
Fixes
- Fixed an issue where the NRQL Extrapolate clause in Insights did not work properly for Transaction Events.
- Fixed an issue where cross application tracing could cause a metric grouping issue (MGI) for web requests that result in a 300 or higher response status code. Transaction names may now be rolled up by status code.
- Fixed an issue where browser script injection in ASP.NET applications could cause a metric grouping issue (MGI) for web requests that result in a 30x redirect status code. Transaction names may now be rolled up by status code.
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.