CHANGELOG.asciidoc (667 lines of code) (raw):
ifdef::env-github[]
NOTE: Release notes are best read in our documentation at
https://www.elastic.co/guide/en/apm/agent/dotnet/current/release-notes.html[elastic.co].
endif::[]
:issue: https://github.com/elastic/apm-agent-dotnet/issues/
////
[[release-notes-x.x.x]]
==== x.x.x - YYYY/MM/DD
[float]
===== Breaking changes
[float]
===== Features
- Cool new feature: {pull}2526[#2526]
[float]
===== Bug fixes
////
[[release-notes-1.x]]
=== .NET Agent version 1.x
[[release-notes-1.31.0]]
==== 1.31.0 - 2024/12/02
[float]
===== Breaking changes
{pull}2498[#2498] Remove net 6.0 targets
We no longer ship `net6.0` targets as .NET 6 is now out of support. Applications
targetting `net6.0` will continue to work, but fall down to the `netstandard2.0`
target which may not be as optimised. We therefore recommend updating your application
to `net8.0` or `net9.0` prior to installing 1.31.0 of the Elastic.Apm.* packages.
===== Bug fixes
{pull}2505[#2505] Fixes and enhancements for Azure Functions
{pull}2508[#2508] Azure Function service name logic
[float]
===== Features
{pull}2503[#2503] Phase one logger optimisations
[[release-notes-1.30.1]]
==== 1.30.1 - 2024/11/19
===== Bug fixes
{pull}2471[#2471] Remove netcoreapp2.0 from Elastic.Apm.Profiler.Managed.Loader
{pull}2474[#2474] Fix span linking for Azure ServiceBus
{pull}2482[#2482] Support K8S_ATTACH environment variable for activation
[[release-notes-1.30.0]]
==== 1.30.0 - 2024/10/11
===== Bug fixes
{pull}2455[#2455] Improve OTel bridge compatibility with existing Azure instrumentation
{pull}2457[#2457] Revert skipping of System.Web to fix profiler-based installation
{pull}2461[#2461] Limit attribute count and truncate values in ElasticActivityListener
{pull}2460[#2460] Add IntakeResponse deserialization for detailed error logging
[[release-notes-1.29.0]]
==== 1.29.0 - 2024/09/18
This release includes a breaking change in how we parse and send transaction cookies. In 1.26.0, we
introduced improved cookie redaction based on the `SanitizeFieldNames` configuration. To implement this,
we extracted each cookie from the `Cookie` header, storing them in a cookie dictionary on the transaction request data.
We have identified a problem with the storage of cookies that include period characters due to the mapping of such data
when stored in the APM data stream. This behaviour can lead to lost transactions on requests which include such cookies.
This is common in ASP.NET Core due to the default cookie names used for sessions, authentication, etc.
In this release, we no longer parse out individual cookies, and the cookie `Dictionary` has been removed from the
data model. This means that cookies will no longer be indexed individually. However, we have ensured that we
retain the primary reason for the earlier change, which was to redact the values of sensitive cookies. Any cookies with
a name matching the `SanitizeFieldNames` patterns will be redacted in the value of the `Cookie` header
we store.
For most consumers, we expect the impact to be minimal. However, if you were relying on the parsed cookie
fields, adjustments will be necessary to work with the `Cookie` header value instead.
===== Breaking changes
{pull}2444[#2444] No longer parse request cookies, but ensure they are still redacted in the `Cookie` header string
[[release-notes-1.28.6]]
==== 1.28.6 - 2024/09/11
===== Bug fixes
{pull}2431[#2431] Hard exclude several system processes from being auto instrumented.
{pull}2436[#2436] Disabling the agent should not try to enqueue events, now a NOOP.
[[release-notes-1.28.5]]
==== 1.28.5 - 2024/08/28
===== Bug fixes
{pull}2430[#2430] Relax ECS container ID regex.
[[release-notes-1.28.4]]
==== 1.28.4 - 2024/08/19
===== Bug fixes
{pull}2427[#2427] Ensure we capture baggage when capturing Errors during unsampled transactions
{pull}2425[#2425] Ensure safer access to System.Web.Security.Roles
{pull}2426[#2426] Fix a bug that prevented the addition of filters to payloadsenders
{pull}2423[#2423] SetAgentActivationMethod throws CultureNotFoundException in global-invariant mode
[[release-notes-1.28.3]]
==== 1.28.3 - 2024/08/15
===== Bug fixes
{pull}2419[#2419] Update to latest `MongoDB.Driver.Core` to address a breaking change.
{pull}2418[#2418] Adding filters should not force initialization of Agent.
[[release-notes-1.28.2]]
==== 1.28.2 - 2024/08/14
===== Bug fixes
{pull}2415[#2415] Fixed check for SqlRoleProvider under AspNet Identity 2.
[[release-notes-1.28.1]]
==== 1.28.1 - 2024/08/12
===== Bug fixes
{pull}2411[#2389] Skip instrumentation of System.Web to prevent rare double configuration initialization issue
===== Features
{pull}2371[#2371] Global file logging, making it easier to diagnose the agent no matter the deployment type.
[[release-notes-1.28.0]]
==== 1.28.0 - 2024/07/03
===== Bug fixes
{pull}2389[#2389] Fix Linux build dependency of glibc
[[release-notes-1.27.3]]
==== 1.27.3 - 2024/06/18
===== Bug fixes
{pull}2380[#2380] Release Automation fix
[[release-notes-1.27.2]]
==== 1.27.2 - 2024/06/18
===== Bug fixes
{pull}2308[#2308] Clean up dependency graph for .NET core installations
{pull}2356[#2356] Open Telemetry Bridge should only log when enabled
{pull}2166[#2166] Bump Microsoft.AspNetCore.Http dep to 2.1.22
{pull}2350[#2350] Fix message format for logging in managed profiler
{pull}2225[#2225] Only mark bodies as redacted if explicitly configured to do so.
{pull}2377[#2377] Do not read claims from SqlRoleProvider under classic ASP.NET
[[release-notes-1.27.1]]
==== 1.27.1 - 2024/05/16
===== Bug fixes
{pull}2349[#2349] Remove invalid profiler method integrations
[[release-notes-1.27.0]]
==== 1.27.0 - 2024/04/30
===== Features
{pull}2326[#2326] Add `IServiceCollection` extension methods to register ApmAgent
{pull}2331[#2331] Add support for `transaction_name_groups` and `use_path_as_transaction_name`
===== Bug fixes
{pull}2298[#2298] Refine agent initialization within ElasticApmModule
{pull}2303[#2303] Fix race condition on Add in redis profiler
{pull}2299[#2299] Further logging refinements in ElasticApmModule
{pull}2304[#2304] Update to .NET 8 SDK
{pull}2302[#2302] Update troubleshooting section of docs
{pull}2310[#2310] Fix bug when handling of multiple cookie entries with the same name
{pull}2314[#2314] Clarify logging behaviour in troubleshooting doc
{pull}2336[#2336] Fix agent-zip for 5.0.0
[[release-notes-1.26.0]]
==== 1.26.0 - 2024/02/20
This release introduces more thorough sanitization of request/response cookies to align with the APM spec.
The incoming `Cookie` is now redacted by default. The cookies it contains are extracted and sanitized according
to the `SanitizeFieldNames` configuration. Response headers are now correctly sanitized, including the
`Set-Cookie` header. This is a behaviour change!
===== Features
{pull}2290[#2290] Fully implement the sanitization spec for request/response headers
{pull}2272[#2272] Include process information in metadata stanza when emitting events to apm-server
{pull}2264[#2264] Switch to Licence expression rather than file
===== Bug fixes
{pull}2267[#2267] Cleanup of packages thanks to Framework reference
{pull}2274[#2274] Limit memory usage when capturing SOAP request bodies
{pull}2276[#2276] Address a few synchronization issues in the codebase
{pull}2277[#2277] Truncate unknown keys logging from central config parser
{pull}2278[#2278] Ensure exposed default constants are readonly
{pull}2283[#2283] Fix duplicate key errors on dropped span stats update
{pull}2279[#2279] Remove RegexConverter, not used in serialization from and to apm-server
{pull}2280[#2280] Cleanup some dead code and one instance of null propagation in tooling NOT userfacing code
[[release-notes-1.25.3]]
==== 1.25.3 - 2024/01/08
===== Bug fixes
{pull}2241[#2241] TagObjects not guaranteed to be unique
{pull}2242[#2242] Move logging caching over to ConditionalWeaktable
{pull}2247[#2247] Add additional logging to outgoing http call propagation
{pull}2249[#2249] address multiple structured logging violations
{pull}2245[#2245] Update MongoDB drivers to 2.19.0
[[release-notes-1.25.2]]
==== 1.25.2 - 2023/12/13
This release fixes a bug in `Elastic.Apm.AspNetCore` when using ` UseElasticApm()` not correctly setting status codes.
The bug was not present in the more commonly used `Elastic.Apm.NetCoreAll` since it uses a `DiagnosticListener` approach.
With this release we ensure both packages use the exact same `DiagnosticListener` mechanism to instrument ASP.NET Core.
===== Bug fixes
{pull}2213[#2213] Remove ApmMiddleWare, only use DiagnosticSource listener for ASP.NET Core.
{pull}2239[#2239] Move StartupHooks over to netstandard2.0.
[[release-notes-1.25.1]]
==== 1.25.1 - 2023/11/21
===== Bug fixes
{pull}2213[#2213] Prevent server certificate callback runtime exception
{pull}2219[#2219] Fix duration.sum.us value in JSON
{pull}2214[#2214] Return total memory when limit is max value.
{pull}2220[#2220] Ensure baggage gets copied with baggage prefix by
[[release-notes-1.25.0]]
==== 1.25.0 - 2023/10/19
===== Features
{pull}2196[#2196] Support OnExecuteRequestStep available in new .NET versions for IIS modules.
[[release-notes-1.24.0]]
==== 1.24.0 - 2023/09/20
===== Features
{pull}2140[#2140] Enable OpenTelemetryBridge by default
{pull}2157[#2157] Update and optimise OTel bridge
{pull}2147[#2147] Add Baggage support
{pull}2160[#2160] Trace in-process Azure Functions
{pull}2165[#2165] Internalize SqlClient Instrumentation
===== Bug fixes
{pull}2170[#2170] Ensure OpenTelemetryBridge respects Agents sampling decisions
{pull}2178[#2178] DroppedSpanStats: do not flatten duration
{pull}2180[#2180] Change 'cloud.project.id' for GCP metadata to be the 'project-id'
{pull}2182[#2182] Handle SqlExceptions when accessing user claims
[[release-notes-1.23.0]]
==== 1.23.0 - 2023/08/08
===== Features
{pull}2069[#2069] .NET Full Framework now always loads configuration from web or app.config
{pull}2103[#2103] Add Npgsql 7.x support to profiler
{pull}2104[#2104] Backend dependencies granularity for NoSQL and Messaging
{pull}2067[#2067] Send domain name when detected
{pull}2136[#2136] Log when we detect LegacyAspNetSynchronizationContext
===== Bug fixes
{pull}2126[#2126] Fix to not send start stack trace when below configured duration
{pull}2109[#2109] Agent.Configuration now always points to ConfigurationStore's configuration
{pull}2142[#2142] Reduce logging noise for stack frame capturing.
{pull}2148[#2148] Move Redis Profiler registration to ConditionalWeakTable
[[release-notes-1.22.0]]
==== 1.22.0 - 2023/04/28
===== Features
- {pull}2050[#2050] Enable listening to `Microsoft.Data.SqlClient.EventSource` on .NET full framework.
===== Bug fixes
- {pull}2054[#2054] Eager load APM configuration.
- {pull}2049[#2049] Increase logging of profiler if expected rejit target is not found.
[[release-notes-1.21.0]]
==== 1.21.0 - 2023/04/05
This release includes two breaking changes that have minimal impact.
- We removed support for target frameworks which have gone into end-of-life support by Microsoft.
The impact should be minimal, however as we continue to support `netstandard2.0` and `netstandard2.1` where applicable.
- We removed the collection of GC metrics over ETW on .NET Full Framework. The collection over ETW requires elevated privileges, especially in IIS deployments. This runs counter to best practices.
Since these are currently not displayed in the APM UI, while technically breaking, the impact should be minimal. The GC metric collection on modern .NET platforms is not impacted.
===== Breaking changes
- {pull}2036[#2036] Remove ETW powered GC metrics on FullFramework
- {pull}2027[#2027] Remove unsupported TFM's
===== Bug fixes
- {pull}2041[#2041] Prevent sending activation_method in metadata for 8.7.0
[[release-notes-1.20.0]]
==== 1.20.0 - 2023/02/27
===== Features
- {pull}1981[#1981] Support for Azure Functions through new `Elastic.Apm.Azure.Functions` nuget package!
- {pull}1935[#1935] Support new Elasticsearch Client: `Elastic.Clients.Elasticsearch`
- {pull}1988[#1988] Suppport latest version of Microsoft.Data.SqlClient
- {pull}1968[#1988] Support latest version OracleManagedDataAccess
- {pull}1983[#1983] Loose MSVC redistributable as requirement for the profiler
- {pull}1976[#1983] Add support for sending agent activation method to the server
===== Bug fixes
- {pull}1999[#1999] NullReferenceException in span compression
- {pull}1970[#1970] Improve profiler logging by always enabling agent logging too.
- {pull}1972[#1972] Normalize OpenTelemetry Bridge config section to `OpenTelemetryBridgeEnabled`
- {pull}1926[#1926] Try to enable TLS 1.2 in all scenarios.
- {pull}1964[#1964] OTel bridge span's destination service may contain null resource
- {pull}1961[#1961] AppSettings ElasticApm:Enabled is not fully honored in ASP.NET Classic
[[release-notes-1.19.0]]
==== 1.19.0 - 2022/12/05
===== Features
- {pull}1867[#1867] Improve handling of multiple agent initialization.
- {pull}1877[#1877] Enable CloudMetadataProvider on Azure Functions.
- {pull}1892[#1892] CentralConfig: handle MaxAge header with less than 5 sec according to spec (issue: {issue}1831[#1831]).
- {pull}1897[#1897] Add basic agent logging preamble.
- {pull}1907[#1907] Publish docker image with agent (issue: {issue}1665[#1665]).
- {pull}1917[#1917] Add .NET 7 support (issue: {issue}1860[#1860]).
- {pull}1930[#1930] Improve SOAP action parsing.
===== Bug fixes
- {pull}1882[#1882] Fix transaction trace id not aligned when transaction is created from OTel bridge without parent (issue: {issue}1881[#1881]).
- {pull}1905[#1905] Avoid NRE during startup hook init (issue: {issue}1904[#1904]).
- {pull}1927[#1927] Avoid panic in file-logging setup (issue: {issue}1918[#1918]).
- {pull}1922[#1922] Use Span timing instead of cumulative SqlCommand statistics (issue: {issue}1869[#1869]).
- {pull}1933[#1933] Enable DOTNET_STARTUP_HOOKS for .NET 7 (issue: {issue}1900[#1900]).
[[release-notes-1.18.0]]
==== 1.18.0 - 2022/10/13
===== Features
- Profiler based agent is now GA
- {pull}1806[#1806] Capture request body in ASP.NET Full Framework (issue: {issue}379[#379]).
- {pull}1832[#1832] `UseWindowsCredentials`: new configuration to force the agent to use the credentials of the authenticated Windows user when events are sent to the APM Server (issue: {issue}1825[#1825]).
===== Bug fixes
- {pull}1800[#1800] Fix incorrect transaction name in ASP.NET Web Api (issue: {issue}1645[#1637]).
- {pull}1803[#1803] and {pull}1804[#1804] Fix potential NullReferenceException in TraceContinuationStrategy implementation (issue: {issue}1802[#1802]).
- {pull}1780[#1780] Fix container ID parsing in AWS ECS/Fargate environments (issue: {issue}1779[#1779]).
- {pull}1814[#1814] Use correct default value for ExitSpanMinDuration (issue: {issue}1789[#1789]).
- {pull}1811[#1811] Fixed crashes on some SOAP 1.2 requests when using GetBufferedInputStream (issue: {issue}1759[#1759]).
- {pull}1816[#1816] Group MetricSets in BreakdownMetricsProvider (issue: {issue}1678[#1678]).
[[release-notes-1.17.0]]
==== 1.17.0 - 2022/08/24
===== Features
- {pull}1739[#1739] Introduce the `TraceContinuationStrategy` config (issue: {issue}1637[#1637]).
- {pull}1749[#1749] Span Links with Azure ServiceBus (issue: {issue}1638[#1638]).
- {pull}1765[#1765] Improve db granularity (issue: {issue}1664[#1664]).
- {pull}1795[#1795] Add config option `span_stack_trace_min_duration` (issue: {issue}1529[#1529]).
===== Bug fixes
- {pull}1746[#1746] Fix default for the `ApplicationNamespaces` config.
- {pull}1755[#1755] Flow SynchronizationContext across public API calls (issue: {issue}1660[#1660]).
- {pull}1753[#1753] PayloadSender threading improvements (issue: {issue}1571[#1571]).
- {pull}1773[#1773] Include Accept header on APM server info call (caused errors when reading APM Server info) (issue: {issue}1624[#1624]).
- {pull}1781[#1781] Significantly improved the performance of database query parsing (issue: {issue}1763[#1763]).
- {pull}1787[#1787] Fix FillApmServerInfo : Invalid ElasticApm_ApiKey throws Exception (issue: {issue}1735[#1735]).
[[release-notes-1.16.1]]
==== 1.16.1 - 2022/06/15
===== Features
- {pull}1732[#1732] Improved logging around fetching central configuration (issue: {issue}1626[#1626]).
===== Bug fixes
- {pull}1710[#1710] Crash during assembly loading with the profiler based agent (issue: {issue}1705[#1705]).
- Handling RouteData with `null` in legacy ASP.NET Core 2.2 apps (issue: {issue}1729[#1729]).
[[release-notes-1.16.0]]
==== 1.16.0 - 2022/06/02
[float]
===== Features
- {pull}1726[#1726] Automatic capturing of incoming HTTP Requests on ASP.NET Core with the Profiler based agent (issue: {issue}1610[#1610]).
===== Bug fixes
- {pull}1725[#1725] By disabling `system.cpu.total.norm.pct`, the agent won't create any instance of the `PerformanceCounter` type (workaround for issue: {issue}1724[#1724])
- {pull}1723[#1723] Transaction names for incoming HTTP requests returning 404 but matching a valid route, will include the URL path instead of using `unknown route` (issue: {issue}1715[#1715]).
[[release-notes-1.15.0]]
==== 1.15.0 - 2022/05/12
[float]
===== Features
- {pull}1657[#1657] Improved database span names based on parsed SQL statements (issue: {issue}242[#242])
[float]
===== Bug fixes
- {pull}1670[#1670] Dedicated working loop thread for sending APM events (issue: {issue}1571[#1571])
- {pull}1677[#1677] Fixed span type for MongoDB - with this a MongoDB logo will show up on the service map
- {pull}1674[#1674] InvalidCastException in `AspNetCoreDiagnosticListener`
- {pull}1683[#1683] MVC: handling `area:null` when creating transaction name based on routing
- {pull}1685[#1685] Handle missing `.Stop` events in `AspNetCoreDiagnosticListener` (issue: {issue}1676[#1676])
[[release-notes-1.14.1]]
==== 1.14.1 - 2022/03/10
[float]
===== Bug fixes
- {pull}1634[#1634] Make sure events are sent after APM Server timeout (bug report: {pull}1630[#1630])
- {pull}1639[#1639] Error on composite span validation (bug report: {issue}1631[#1631]))
- {pull}1648[#1648] OpenTelemetry (Activity) bridge - APM Server version check
[[release-notes-1.14.0]]
==== 1.14.0 - 2022/02/09
[float]
===== Features
- {pull}1620[#1620] Span compression and dropping fast exit spans. New settings: `ExitSpanMinDuration`, `SpanCompressionEnabled`, `SpanCompressionExactMatchMaxDuration`, `SpanCompressionSameKindMaxDuration` (issues: {issue}1329[#1329] and {issue}1475[#1475])
- {pull}1611[#1611] NpgSql 6.x support (issue: {issue}1602[#1602])
- {pull}1589[#1589] Capture transaction name on errors (issue: {issue}1574[#1574])
[float]
===== Bug fixes
- {pull}1603[#1603] .NET 6 support with startup hook (issue: {issue}1590[#1590])
[float]
===== Breaking changes
- {pull}1586[#1586] Change unknown service.name to align with other agents. In the very rare cases when the agent is not able to autoamtically detect the name of a service, or it's not manually set, it'll use the default service name `unknown-dotnet-service`. In prior versions this was just `unknown`. (issue: {issue}1585[#1585])
[[release-notes-1.13.0]]
==== 1.13.0 - 2022/01/12
[float]
===== Features
- {pull}1498[#1498] OpenTelemetry Bridge - integration with `System.Diagnostics.Activity` - Beta (issue: {issue}1521[#1521])
[[release-notes-1.12.1]]
==== 1.12.1
[float]
===== Bug fixes
- {pull}1564[#1564] Failed sending event error with missing span.context.destination.service.name required field on older APM Servers (issue: {issue}1563[#1563])
[[release-notes-1.12.0]]
==== 1.12.0
[float]
===== Breaking changes
- {pull}1520[#1520] Auto-infer destination.service.resource and adapt public API (issues: {issue}1330[#1330])
+
`boolean` `isExitSpan` parameter introduced to Start* and Capture* public APIs to denote when a span
is an exit span.
[float]
===== Features
- {pull}1511[#1511] Implement Dropped span statistics
- {pull}1515[#1515] Ignore duplicate Diagnostic listener subscriptions (issue: {issue}1119[#1119])
- {pull}1518[#1518] Implement User-Agent spec for .NET agent (issue: #1517)
- {pull}1525[#1525] Add message related properties to transactions and spans (issue: {issue}1512[#1512])
- {pull}1534[#1534] Add profiler auto instrumentation (issue: {issue}1522[#1522])
- {pull}1548[#1548] Add profiler auto instrumentation for RabbitMQ (issue: {issue}1223[#1223])
- {pull}1528[#1528] Platform detection: Handle .NET 6 (issue: {issue}1513[#1513])
- {pull}1492[#1492] Remove use of Socket.Encrypted to determine secure
- {pull}1520[#1520] Auto-infer destination.service.resource and adapt public API (issues: {issue}1330[#1330])
- {pull}1540[#1540] Stop recording transaction metrics (issue: {issue}1523[#1523])
[float]
===== Bug fixes
- {pull}1484[#1484] Capture spans for new Azure Storage SDKs (issue: {issue}1352[#1352])
- {pull}1509[#1509] Use Environment.MachineName to get HostName (issue: {issue}1504[#1504])
- {pull}1510[#1510] Check context is not null when sanitizing error request headers (issue: {issue}1503[#1503])
- {pull}1536[#1536] Improve Performance counter handling for metrics on Windows (issue: {issue}1505[#1505])
- {pull}1538[#1538] Collect .NET Framework GC metrics only when filtering supported (issue: {issue}1346[#1346])
- {pull}1557[#1557] Handle enabled/recording=false configuration when capturing errors
[[release-notes-1.11.1]]
==== 1.11.1
[float]
===== Features
- {pull}1354[#1354] Serialize to writer directly
- {pull}1356[#1356] Better logging in PayloadSenderV2 on task cancellation
- {pull}1358[#1358] Propagate Trace context in exit spans (issues: {issue}1350[#1350], {issue}1344[#1344])
- {pull}1374[#1374] Get Command and Key for StackExchange.Redis spans (issue: {issue}1364[#1364])
- {pull}1474[#1474] Add CosmosDB integration to NetCoreAll
- {pull}1368[#1368] Use 10K limit for CaptureBody similar to the Java agent (issue: {issue}1359[#1359])
[float]
===== Bug fixes
- {pull}1362[#1362] Unset parentId if TraceContextIgnoreSampledFalse is active
- {pull}1367[#1367] Make sure BreakdownMetricsProvider prints 1K warning only once per collection (issue: {issue}1361[#1361])
- {pull}1471[#1471] Sanitize Central config request URI and headers in logs (issue: {issue}1376[#1376])
- {pull}1472[#1472] Honor Transaction.Outcome set by public API in auto instrumentation (issue: {issue}1349[#1349])
- {pull}1481[#1481] Use Kubernetes pod id determined from cgroup file
[[release-notes-1.11.0]]
==== 1.11.0
[float]
===== Features
- {pull}1342[#1342] CosmosDb support (issue: {issue}1154[#1154])
- {pull}1271[#1271] Support "Time spent by span type" (aka Breakdown metrics) (issue: {issue}227[#227])
- {pull}1302[#1302] Prefer W3C traceparent over elastic-apm-traceparent
- {pull}1310[#1310] Add TraceContextIgnoreSampledFalse config setting
- {pull}1331[#1331] Create transactions for Azure Service Bus Processors (issue: {issue}1321[#1321])
[[release-notes-1.10.0]]
==== 1.10.0
[float]
===== Features
- {pull}1225[#1225] Add instrumentation for Azure Service Bus (issue: {issue}1157[#1157])
- {pull}1247[#1247] Add Azure storage integration (issues: {issue}1156[#1156] and {issue}1155[#1155])
- {pull}1241[#1241] Internalize `Newtonsoft.Json` - no more dependency on `Newtonsoft.Json`
- {pull}1275[#1275] Internalize `Ben.Demystifier` - no more dependency on `Ben.Demystifier` (issue: {issue}1232[#1232])
- {pull}1215[#1215] Add MongoDb support (issue: {issue}1158[#1158])
- {pull}1277[#1277] Capture inner exceptions (issue: {issue}1267[#1267])
- {pull}1290[#1290] Add configured hostname (issue: {issue}1289[#1289])
- {pull}1288[#1288] Use TraceLogger as default logger in ASP.NET Full Framework (issue: {issue}1263[#1263])
[float]
===== Bug fixes
- {pull}1252[#1252] Fix issue around setting `Recording` to `false` (issue: {issue}1250[#1250])
- {pull}1259[#1259] ASP.NET: Move error capturing to Error event handler
- {pull}1305[#1305] Use Logger to log exception in AgentComponents initialization (issue: {issue}1254[#1254])
- {pull}1311[#1311] Fix `NullReferenceException` in Elastic.Apm.Extensions.Logging(issue: {issue}1309[#1309])
[float]
===== Breaking changes
- {pull}1306[#1306] Do not capture HTTP child spans for Elasticsearch (issue: {issue}1276[#1276])
[[release-notes-1.9.0]]
==== 1.9.0
[float]
===== Features
- {pull}925[#925] Add GC time (issue: {issue}922[#922])
- {pull}1147[#1147] Propagate sample rate through `tracestate` (issue: {issue}1021[#1021])
[float]
===== Bug fixes
- {pull}1189[#1189] Get transaction name from Web API controller route template
[float]
===== Breaking changes
- {pull}1161[#1161] and {pull}1162[#1162] The agent tries to never throw any exception. Specifically instead of throwing `InstanceAlreadyCreatedException`, it will print an error log.
[[release-notes-1.8.1]]
==== 1.8.1
[float]
===== Features
- {pull}1196[#1196] Add GC Heap Stats capturing for .NET 5.0 (issue: {issue}1195[#1195])
[float]
===== Bug fixes
- {pull}1192[#1192] Lazily access the agent in ElasticApmProfiler redis integration (issue: {issue}1190[#1190])
- {pull}1198[#1198] Add TargetFramework NET5.0 to Elastic.Apm.AspNetCore and related packages (issue: {issue}1194[#1194])
[[release-notes-1.8.0]]
==== 1.8.0
[float]
===== Features
- {pull}1063[#1063] Add support for capturing redis commands from StackExchange.Redis
(<<setup-stackexchange-redis,documentation>>) (issue: {issue}874[#874])
- {pull}1065[#1065] Introduce `ServerUrl` config - (`ServerUrls` is still working but will be removed in the future) (issue: {issue}1035[#1035])
- {pull}1048[#1048] Support for more k8s cgroup path patterns (issue: {issue}968[#968])
- {pull}1082[#1082] `SanitizeFieldNames` config became changeable though Kibana central configuration
- {pull}1083[#1083] Azure App Service cloud metadata collection
- {pull}1135[#1135] Capture error logs as APM errors from `Microsoft.Extensions.Logging` automatically and extend the Public API to capture custom logs as APM errors (issue: {issue}894[#894])
- {pull}1096[#1096] Support changing log level through Kibana central configuration and support `"off"` level (issue: {issue}970[#970])
[float]
===== Bug fixes
- {pull}1081[#1081] `NullReferenceException` with disabled agent on `Transaction.Custom` (issue: {issue}1080[#1080])
- {pull}1078[#1078] ASP.NET Core, enabled=false in `appsettings.json` does not disable public Agent API (issue: {issue}1077[#1077])
- {pull}1115[#1115] `System.IO.IOException` on ASP.NET Classic (issue: {issue}1113[#1113])
- {pull}1118[#1118] Memory issue with gRPC (issue: {issue}1116[#1116])
- {pull}1124[#1124] Ensuring ETW sessions are terminated on agent shutdown (issue: {issue}897[#897])
- {pull}1109[#1109] `NullReferenceException` with custom `IConfigurationReader` implementation in `MetricsCollector`
- {pull}1138[#1138] and {pull}1165[#1165] Fixes around zero code change agent setup with `DOTNET_STARTUP_HOOKS`
- {pull}1115[#1115] Access `Request.InputStream` only when SOAP header present (issue: {issue}1113[#1113])
[[release-notes-1.7.1]]
==== 1.7.1
[float]
===== Features
- {pull}1057[#1057] Introduce `GetLabel<T>` method on `IExecutionSegment` (issue: {issue}1033[#1033])
[float]
===== Bug fixes
- {pull}1052[#1052] Increased transaction duration due to stack trace capturing (issue: {issue}1039[#1039])
- {pull}1053[#1053] Warning with `Synchronous operations are disallowed` on ASP.NET Core during request body capturing (issue: {issue}1044[#1044])
- {pull}1042[#1042] SqlClient instrumentation on .NET 5 (issue: {issue}1025[#1025])
- {pull}1060[#1060] `UseAllElasticApm` with `IHostBuilder` missing auto instrumentation (issue: {issue}1059[#1059])
[[release-notes-1.7.0]]
==== 1.7.0
[float]
===== Features
- {pull}828[#828] Agent loading with zero code change on .NET Core (issue: {issue}71[#71])
- {pull}969[#969] gRPC support (issue: {issue}478[#478])
- {pull}974[#974] Add ability to configure Hostname (issue: {issue}932[#932])
- {pull}997[#997] Add Enabled and Recording configuration (issue: #122)
- {pull}912[#912] Add `FullFrameworkConfigurationReaderType` config to load custom configuration reader on ASP.NET
- {pull}978[#978] Capture User id and email on ASP.NET (issue: #540)
- {pull}982[#982] Support boolean and numeric labels in addition to string labels (issues: {issue}967[#967], {issue}788[#788], {issue}473[#473], {issue}192[#191], {issue}788[#788], {issue}473[#473], {issue}191[#191])
- {pull}1000[#1000] Collecting metrics based on cGroup (issue: {issue}937[#937])
- {pull}1002[#1002] `ITransaction.SetService` API to support multiple services in a single process (issue: {issue}1001[#1001])
- {pull}1003[#1003] Collecting cloud metadata (supporting AWS, Azure, GCP) (issue: {issue}918[#918])
- {pull}973[#973] Transaction grouping on ASP.NET (issue: {issue}[#201])
- {pull}913[#913] Entity Framework 6 support on .NET Core (issue: {issue}902[#902])
[float]
===== Bug fixes
- {pull}992[#992] On ASP.NET Core `CurrentTransaction` is null in some cases (issues: {issue}934[#934], {issue}972[#972])
- {pull}971[#971] Avoid double initialization in `HostBuilderExtensions`
- {pull}999[#999] Capture body with large file error (issue: {issue}960[#960])
[float]
===== Breaking changes
- Binary compatibility on `IExecutionSegment.CaptureException` and `IExecutionSegment.CaptureError` with libraries depending on previous version. If this happens you need to update `Elastic.Apm` to 1.7.0 in your projects (Issue: ({issue}1067)[#1067])
[[release-notes-1.6.1]]
==== 1.6.1
[float]
===== Bug fixes
- Service map: missing connection between .NET services ({pull}909[#909])
[[release-notes-1.6.0]]
==== 1.6.0
[float]
===== Features
- Elasticsearch client instrumentation {pull}329[#329]
- Introducing `Elastic.Apm.Extensions.Hosting` package with an extension method on `IHostBuilder` {pull}537[#537]
- Stack trace improvements: async call stack demystification ({pull}847[#847]) and showing frames from user code for outgoing HTTP calls ({pull}845[#845])
- Making fields on `IError` public {pull}847[#847]
- Service map improvements: {pull}893[#893]
[float]
===== Bug fixes
- Missing traces from the Kibana traces list due to setting `Transaction.ParentId` to an `Activity` {pull}888[#888]
- Exception around runtime detection {pull}859[#859]
- Missing outgoing HTTP calls in .NET Framework applications and causing memory issues {pull}896[#896]
[[release-notes-1.5.1]]
==== 1.5.1
[float]
===== Bug fixes
- Memory issue in SqlEventListener {pull}851[#851]
[[release-notes-1.5.0]]
==== 1.5.0
[float]
===== Features
- Auto instrumentation for `SqlClient` (<<setup-sqlclient,documentation>>)
- Introducing Filter API {pull}792[#792] (<<filter-api,documentation>>)
- Auto-detect culprit for exceptions {pull}740[#740]
- New config settings: `ExcludedNamespaces`, `ApplicationNamespaces` (<<config-all-options-summary,documentation>>)
- Keep `Activity.Current.TraceId` in sync with the Trace ID used by the agent {pull}800[#800]
- Report Kubernetes system metadata {pull}741[#741]
[float]
===== Bug fixes
- Database connection string parsing issue with Oracle {pull}795[#795]
[[release-notes-1.4.0]]
==== 1.4.0
[float]
===== Features
- Introducing `ITransaction.EnsureParentId()` to integrate with RUM in dynamically loaded HTML pages (including page loads in ASP.NET Core) {pull}771[#771]
- New config setting: `ApiKey` {pull}733[#733]
[float]
===== Bug fixes
- Memory issue in .NET Full Framework with default metrics turned on {pull}750[#750]
- Parsing for Oracle connection strings {pull}749[#749]
- `StackOverflowException` when using the `Elastic.Apm.SerilogEnricher` package and the log level is set to `Verbose` {pull}753[#753]
[float]
===== Breaking changes
- We have some changes that are technically breaking changes. We made some helper classes internal that were never meant to be public. These are: `Elastic.Apm.Helpers.AgentTimeInstant`, `Elastic.Apm.Helpers.ContractExtensions`, `Elastic.Apm.Helpers.ObjectExtensions`, `Elastic.Apm.Helpers.ToStringBuilder`. None of these classes were documented or mentioned as part of the Public Agent API. We expect no usage of these classes outside the agent.
[[release-notes-1.3.1]]
==== 1.3.1
[float]
===== Bug fixes
- Fix log spamming issues {pull}736[#736], {pull}738[#738]
- Fix turning HTTP 415 responses in ASP.NET Core to HTTP 500 when request body capturing is active {pull}739[#739]
- Fix disabling GC metrics collection in case no GC is triggered during the first "5*MetricsInterval" of the process {pull}745[#745]
[[release-notes-1.3.0]]
==== 1.3.0
[float]
===== Features
- New GC metrics: `clr.gc.count`, `clr.gc.gen[X]size`, where [X]: heap generation {pull}697[#697]
- Capturing SOAP action name as part of the transaction name {pull}683[#683]
- New config options: `ServiceNodeName`, `VerifyServerCert`, `DisableMetrics`, `UseElasticTraceparentHeader` (<<config-all-options-summary,docs>>)
- Full https://www.w3.org/TR/trace-context[W3C TraceContext] support {pull}717[#717]
[float]
===== Bug fixes
- Fix transaction name generation in ASP.NET Core 3.x {pull}647[#647]
- Fix around HTTP request body sanitization {pull}712[#712]
[[release-notes-1.2.0]]
==== 1.2.0
[float]
===== Features
- Entity framework support with Interceptor (<<setup-ef6,docs>>)
- Sanitization of HTTP headers and request body (<<config-sanitize-field-names,docs>>)
- Central configuration - 2 new configs: `CAPTURE_BODY` and `TRANSACTION_MAX_SPANS`. {pull}577[#577].
- Support for global labels (<<config-global-labels,docs>>)
- Custom context (<<api-transaction-context,docs>>)
- Dropping support for ASP.NET Core 2.0 (which is already end of life) (<<supported-web-frameworks,docs>>)
[float]
===== Bug fixes
- De-dotting labels. {pull}583[#583].
- Request body capturing TypeLoadException in ASP.NET Core 3.0. {pull}604[#604].
- Metrics collection: filtering NaN and Infinity. {pull}589[#589].
[[release-notes-1.1.2]]
==== 1.1.2
[float]
===== Bug fixes
- Capturing request body with ASP.NET Core erased the body in some scenarios {pull}539[#539].
- Integration with Serilog caused missing logs and diagnostic traces with `NullReferenceException` {pull}544[#544], {pull}545[#545].
[[release-notes-1.1.1]]
==== 1.1.1
[float]
===== Features
Configure transaction max spans. {pull}472[#472]
[float]
===== Bug fixes
Fixing missing "Date Modified" field on the files from the `1.1.0` packages causing an error while executing `dotnet pack` or `nuget pack` on a project with Elastic APM Agent packages. {pull}527[#527]
[[release-notes-1.1.0]]
==== 1.1.0
[float]
===== Features
- ASP.NET Support, documentation can be found <<setup-asp-dot-net,here>>
- Central configuration (Beta)
[float]
===== Bug fixes
- Addressed some performance issues {pull}359[#359]
- Improved error handling in ASP.NET Core {pull}512[#512]
- Fix for mono {pull}164[#164]
[[release-notes-1.0.1]]
==== 1.0.1
[float]
===== Bug fixes
- `NullReferenceException` on .NET Framework with outgoing HTTP calls created with `HttpClient` in case the response code is HTTP3xx {pull}450[#450]
- Added missing `net461` target to the https://www.nuget.org/packages/Elastic.Apm/[`Elastic.Apm`] package
- Handling <<api-transaction-tags,`Labels`>> with `null` {pull}429[#429]
[float]
===== Features
- Reading request body in ASP.NET Core. Also introduced two new settings: `CaptureBody` and `CaptureBodyContentTypes`. By default this feature is turned off, this is an opt-in feature and can be turned on with the `CaptureBody` setting. {pull}402[#402]
[[release-notes-1.0.0]]
==== 1.0.0 GA
The 1. GA release of the Elastic APM .NET Agent. Stabilization of the 1.0.0-beta feature for production usage.
[float]
===== Features
- Out of the box integration with `ILoggerFactory` and the logging infrastructure in ASP.NET Core {pull}249[#249]
- Introduced `StackTraceLimit` and `SpanFramesMinDurationInMilliseconds` configs {pull}374[#374]
- The Public Agent API now support `Elastic.Apm.Agent.Tracer.CurrentSpan` {pull}391[#391]
[float]
===== Bug fixes
- Thread safety for some bookkeeping around spans {pull}394[#394]
- Auto instrumentation automatically creates sub-spans in case a span is already active {pull}391[#391]
[float]
===== Breaking changes
We have some breaking changes in this release. We wanted to do these changes prior to our GA release and with this we hopefully avoid breaking changes in the upcoming versions.
- For better naming we replaced the `Elastic.Apm.All` packages with `Elastic.Apm.NetCoreAll` {pull}371[#371]
- Based on feedback we also renamed the `UseElasticApm()` method in the `Elastic.Apm.NetCoreAll` package to `UseAllElasticApm` - this method turns on every component of the Agent for ASP.NET Core. {pull}371[#371]
- Our logger abstraction, specifically the `IApmLogger` interface changed: {pull}389[#389]
- To follow the https://www.elastic.co/guide/en/ecs/current/index.html[Elastic Common Schema (ECS)], we renamed our `Tags` properties to `Labels`. {pull}416[#416]
[[release-notes-beta]]
=== .NET Agent version beta/preview
[[release-notes-beta1]]
==== Beta1 release
[float]
===== Features
- Distributed tracing support (based on W3C Trace Context)
- Sampling
- Metrics (Process and System CPU usage, Free and total Memory, Process working set and private bytes)
- Capture Docker container id (linux containers only)
[float]
===== Improvements
- ASP.NET Core: better transaction names based on routing, capture authenticated users
- Public Agent API: create sub spans, serialize and deserialize traceparent
- Stack traces contain fully qualified class names and real method names in case of async methods
[[release-notes-preview2]]
==== Preview release 2
[float]
===== Features
- <<config-secret-token,`SecretToken` setting>> - with this you can use the agent with Elastic Cloud.
- Intake V2 protocol to server communication - support for APM Server 7.x
- Extended public agent API: support for setting custom HTTP and Database related fields.
- Improved logging.
Packages can be found on https://www.nuget.org/packages?q=Elastic.apm[nuget.org].
[[release-notes-preview1]]
==== Preview release 1
[float]
===== Features
- ASP.NET Core auto instrumentation
- Entity Framework Core auto instrumentation
- https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=netstandard-2.0[HttpClient] auto instrumentation
- <<public-api,Public Agent API>>
We shipped the following packages:
- Elastic.Apm.All: This is a meta package that references every other Elastic APM .NET agent package. If you plan to monitor a typical ASP.NET Core application that depends on the https://www.nuget.org/packages/Microsoft.AspNetCore.All[Microsoft.AspNetCore.All] package and uses Entity Framework Core then you should reference this package.
In order to avoid adding unnecessary dependencies in applications that aren’t depending on the https://www.nuget.org/packages/Microsoft.AspNetCore.All[Microsoft.AspNetCore.All] package we also shipped some other packages - those are all referenced by the Elastic.Apm.All package.
- Elastic.Apm: This is the core of the agent, which we didn’t name “Core”, because someone already took that name :) This package also contains the Public Agent API and it is a .NET Standard 2.0 package. We also ship every tracing component that traces things that are part of .NET Standard 2.0 in this package, which includes the monitoring part for HttpClient.
Elastic.Apm.AspNetCore: This package contains ASP.NET Core monitoring related code. The main difference between this package and the Elastic.Apm.All package is that this package does not reference the
- Elastic.Apm.EntityFrameworkCore package, so if you have an ASP.NET Core application that does not use EF Core and you want to avoid adding additional unused references, you should use this package.
- Elastic.Apm.EntityFrameworkCore: This package contains EF Core monitoring related code.