diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc deleted file mode 100644 index 3417e7382..000000000 --- a/CHANGELOG.asciidoc +++ /dev/null @@ -1,908 +0,0 @@ -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 -(<>) (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` 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` (<>) -- Introducing Filter API {pull}792[#792] (<>) -- Auto-detect culprit for exceptions {pull}740[#740] -- New config settings: `ExcludedNamespaces`, `ApplicationNamespaces` (<>) -- 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` (<>) -- 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 (<>) -- Sanitization of HTTP headers and request body (<>) -- Central configuration - 2 new configs: `CAPTURE_BODY` and `TRANSACTION_MAX_SPANS`. {pull}577[#577]. -- Support for global labels (<>) -- Custom context (<>) -- Dropping support for ASP.NET Core 2.0 (which is already end of life) (<>) - -[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 <> -- 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 <> 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 - -- <> - 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 - -- <> - -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. diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..a0491e210 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +# Changelog + +Refer to [Elastic APM .NET Agent release notes](https://www.elastic.co/docs/release-notes/apm/agents/dotnet) ([source files](./docs/release-notes)). diff --git a/README.md b/README.md index cae23aaaf..c41be2ead 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ See the [releasing documentation](RELEASING.md) These are the main folders within the repository: * `src`: The source code of the agent. Each project within this folder targets a specific library, and there is one core project, which is referenced by all other projects. - * `Elastic.Apm`: The core project targeting .NET Standard 2.0. It contains the [Agent API](/docs/public-api.asciidoc), the infrastructure to report data to the APM Server, the logging infrastructure, and auto-instrumentation for things that are part of .NET Standard 2.0. + * `Elastic.Apm`: The core project targeting .NET Standard 2.0. It contains the [Agent API](/docs/reference/public-api.md), the infrastructure to report data to the APM Server, the logging infrastructure, and auto-instrumentation for things that are part of .NET Standard 2.0. * `Elastic.Apm.AspNetCore`: Auto-instrumentation for ASP.NET Core. * `Elastic.Apm.EntityFrameworkCore`: Auto-instrumentation for EntityFramework Core. * `Elastic.Apm.NetCoreAll`: A convenient project that references all other .NET Core related projects from the `src` folder. It contains an ASP.NET Core middleware extension that enables the agent and every other component with a single line of code. In a typical ASP.NET Core application (e.g. apps referencing [Microsoft.AspNetCore.All](https://www.nuget.org/packages/Microsoft.AspNetCore.All)) that uses EF Core the `Elastic.Apm.NetCoreAll` can be referenced. diff --git a/RELEASING.md b/RELEASING.md index a3371e892..3c80ab5e5 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -14,7 +14,7 @@ The tag dictates the version number. Untagged commits are automatically versione ### Generating a changelog for the new version -Prior to tagging and releasing the new version we create a changelog commit. Adding relevant new features and bugfixes to [`CHANGELOG.asciidoc`](CHANGELOG.asciidoc). The idea is to fill all the applicable sections so that users can consume an orderly changelog. +Prior to tagging and releasing the new version we create a changelog commit. Adding relevant new features and bugfixes to [`docs/release-notes/index.md`](docs/release-notes/index.md). The idea is to fill all the applicable sections so that users can consume an orderly changelog. After a changelog has been manually curated, a new pull request must be opened with the changelog. @@ -32,7 +32,7 @@ Create a new release on Github, creating a new tag for the version `vMAJOR.MINOR Creating a release will trigger the [release Github Action](.github/workflows/release.yml) -## Steps after the release +## Steps after the release ### Attaching files on GitHub @@ -68,6 +68,8 @@ git push --force upstream 1.x In case of a major release, we need to create the `.x` branch from the currently released tag and push the new `.x` branch. + + #### For a major release Additionally, in case of a major version release, we need to create a PR in [elastic/docs](https://github.com/elastic/docs).