Skip to content

Latest commit

 

History

History
541 lines (406 loc) · 23.6 KB

CHANGELOG.asciidoc

File metadata and controls

541 lines (406 loc) · 23.6 KB
Note
Release notes are best read in our documentation at elastic.co

.NET Agent version 1.x

1.16.1

Features
  • {pull}1732[#1732] Improved logging around fetching central configuration (issue: #1626).

Bug fixes
  • {pull}1710[#1710] Crash during assembly loading with the profiler based agent (issue: #1705).

  • Handling RouteData with null in legacy ASP.NET Core 2.2 apps (issue: #1729).

1.16.0

Features
  • {pull}1726[#1726] Automatic capturing of incoming HTTP Requests on ASP.NET Core with the Profiler based agent (issue: #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: #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: #1715).

1.15.0

Features
  • {pull}1657[#1657] Improved database span names based on parsed SQL statements (issue: #242)

Bug fixes
  • {pull}1670[#1670] Dedicated working loop thread for sending APM events (issue: #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: #1676)

1.14.1

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: #1631))

  • {pull}1648[#1648] OpenTelemetry (Activity) bridge - APM Server version check

1.14.0

Features
  • {pull}1620[#1620] Span compression and dropping fast exit spans. New settings: ExitSpanMinDuration, SpanCompressionEnabled, SpanCompressionExactMatchMaxDuration, SpanCompressionSameKindMaxDuration (issues: #1329 and #1475)

  • {pull}1611[#1611] NpgSql 6.x support (issue: #1602)

  • {pull}1589[#1589] Capture transaction name on errors (issue: #1574)

Bug fixes
  • {pull}1603[#1603] .NET 6 support with startup hook (issue: #1590)

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: #1585)

1.13.0

Features
  • {pull}1498[#1498] OpenTelemetry Bridge - integration with System.Diagnostics.Activity - Beta (issue: #1521)

1.12.1

Bug fixes
  • {pull}1564[#1564] Failed sending event error with missing span.context.destination.service.name required field on older APM Servers (issue: #1563)

1.12.0

Breaking changes
  • {pull}1520[#1520] Auto-infer destination.service.resource and adapt public API (issues: #1330)

    boolean isExitSpan parameter introduced to Start* and Capture* public APIs to denote when a span is an exit span.

Features
  • {pull}1511[#1511] Implement Dropped span statistics

  • {pull}1515[#1515] Ignore duplicate Diagnostic listener subscriptions (issue: #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: #1512)

  • {pull}1534[#1534] Add profiler auto instrumentation (issue: #1522)

  • {pull}1548[#1548] Add profiler auto instrumentation for RabbitMQ (issue: #1223)

  • {pull}1528[#1528] Platform detection: Handle .NET 6 (issue: #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: #1330)

  • {pull}1540[#1540] Stop recording transaction metrics (issue: #1523)

Bug fixes
  • {pull}1484[#1484] Capture spans for new Azure Storage SDKs (issue: #1352)

  • {pull}1509[#1509] Use Environment.MachineName to get HostName (issue: #1504)

  • {pull}1510[#1510] Check context is not null when sanitizing error request headers (issue: #1503)

  • {pull}1536[#1536] Improve Performance counter handling for metrics on Windows (issue: #1505)

  • {pull}1538[#1538] Collect .NET Framework GC metrics only when filtering supported (issue: #1346)

  • {pull}1557[#1557] Handle enabled/recording=false configuration when capturing errors

1.11.1

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: #1350, #1344)

  • {pull}1374[#1374] Get Command and Key for StackExchange.Redis spans (issue: #1364)

  • {pull}1474[#1474] Add CosmosDB integration to NetCoreAll

  • {pull}1368[#1368] Use 10K limit for CaptureBody similar to the Java agent (issue: #1359)

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: #1361)

  • {pull}1471[#1471] Sanitize Central config request URI and headers in logs (issue: #1376)

  • {pull}1472[#1472] Honor Transaction.Outcome set by public API in auto instrumentation (issue: #1349)

  • {pull}1481[#1481] Use Kubernetes pod id determined from cgroup file

1.11.0

Features
  • {pull}1342[#1342] CosmosDb support (issue: #1154)

  • {pull}1271[#1271] Support "Time spent by span type" (aka Breakdown metrics) (issue: #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: #1321)

1.10.0

Features
  • {pull}1225[#1225] Add instrumentation for Azure Service Bus (issue: #1157)

  • {pull}1247[#1247] Add Azure storage integration (issues: #1156 and #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: #1232)

  • {pull}1215[#1215] Add MongoDb support (issue: #1158)

  • {pull}1277[#1277] Capture inner exceptions (issue: #1267)

  • {pull}1290[#1290] Add configured hostname (issue: #1289)

  • {pull}1288[#1288] Use TraceLogger as default logger in ASP.NET Full Framework (issue: #1263)

Bug fixes
  • {pull}1252[#1252] Fix issue around setting Recording to false (issue: #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: #1254)

  • {pull}1311[#1311] Fix NullReferenceException in Elastic.Apm.Extensions.Logging(issue: #1309)

Breaking changes
  • {pull}1306[#1306] Do not capture HTTP child spans for Elasticsearch (issue: #1276)

1.9.0

Features
  • {pull}925[#925] Add GC time (issue: #922)

  • {pull}1147[#1147] Propagate sample rate through tracestate (issue: #1021)

Bug fixes
  • {pull}1189[#1189] Get transaction name from Web API controller route template

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.

1.8.1

Features
  • {pull}1196[#1196] Add GC Heap Stats capturing for .NET 5.0 (issue: #1195)

Bug fixes
  • {pull}1192[#1192] Lazily access the agent in ElasticApmProfiler redis integration (issue: #1190)

  • {pull}1198[#1198] Add TargetFramework NET5.0 to Elastic.Apm.AspNetCore and related packages (issue: #1194)

1.8.0

Features
  • {pull}1063[#1063] Add support for capturing redis commands from StackExchange.Redis (documentation) (issue: #874)

  • {pull}1065[#1065] Introduce ServerUrl config - (ServerUrls is still working but will be removed in the future) (issue: #1035)

  • {pull}1048[#1048] Support for more k8s cgroup path patterns (issue: #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: #894)

  • {pull}1096[#1096] Support changing log level through Kibana central configuration and support "off" level (issue: #970)

Bug fixes
  • {pull}1081[#1081] NullReferenceException with disabled agent on Transaction.Custom (issue: #1080)

  • {pull}1078[#1078] ASP.NET Core, enabled=false in appsettings.json does not disable public Agent API (issue: #1077)

  • {pull}1115[#1115] System.IO.IOException on ASP.NET Classic (issue: #1113)

  • {pull}1118[#1118] Memory issue with gRPC (issue: #1116)

  • {pull}1124[#1124] Ensuring ETW sessions are terminated on agent shutdown (issue: #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: #1113)

1.7.1

Features
  • {pull}1057[#1057] Introduce GetLabel<T> method on IExecutionSegment (issue: #1033)

Bug fixes
  • {pull}1052[#1052] Increased transaction duration due to stack trace capturing (issue: #1039)

  • {pull}1053[#1053] Warning with Synchronous operations are disallowed on ASP.NET Core during request body capturing (issue: #1044)

  • {pull}1042[#1042] SqlClient instrumentation on .NET 5 (issue: #1025)

  • {pull}1060[#1060] UseAllElasticApm with IHostBuilder missing auto instrumentation (issue: #1059)

1.7.0

Features
  • {pull}828[#828] Agent loading with zero code change on .NET Core (issue: #71)

  • {pull}969[#969] gRPC support (issue: #478)

  • {pull}974[#974] Add ability to configure Hostname (issue: #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: #967, #788, #473, #191, #788, #473, #191)

  • {pull}1000[#1000] Collecting metrics based on cGroup (issue: #937)

  • {pull}1002[#1002] ITransaction.SetService API to support multiple services in a single process (issue: #1001)

  • {pull}1003[#1003] Collecting cloud metadata (supporting AWS, Azure, GCP) (issue: #918)

  • {pull}973[#973] Transaction grouping on ASP.NET (issue: #201)

  • {pull}913[#913] Entity Framework 6 support on .NET Core (issue: #902)

Bug fixes
  • {pull}992[#992] On ASP.NET Core CurrentTransaction is null in some cases (issues: #934, #972)

  • {pull}971[#971] Avoid double initialization in HostBuilderExtensions

  • {pull}999[#999] Capture body with large file error (issue: #960)

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: (#1067)

1.6.1

Bug fixes
  • Service map: missing connection between .NET services ({pull}909[#909])

1.6.0

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]

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]

1.5.1

Bug fixes
  • Memory issue in SqlEventListener {pull}851[#851]

1.5.0

Features
  • Auto instrumentation for SqlClient (documentation)

  • Introducing Filter API {pull}792[#792] (documentation)

  • Auto-detect culprit for exceptions {pull}740[#740]

  • New config settings: ExcludedNamespaces, ApplicationNamespaces (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]

Bug fixes
  • Database connection string parsing issue with Oracle {pull}795[#795]

1.4.0

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]

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]

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.

1.3.1

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]

1.3.0

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 (docs)

  • Full W3C TraceContext support {pull}717[#717]

Bug fixes
  • Fix transaction name generation in ASP.NET Core 3.x {pull}647[#647]

  • Fix around HTTP request body sanitization {pull}712[#712]

1.2.0

Features
  • Entity framework support with Interceptor (docs)

  • Sanitization of HTTP headers and request body (docs)

  • Central configuration - 2 new configs: CAPTURE_BODY and TRANSACTION_MAX_SPANS. {pull}577[#577].

  • Support for global labels (docs)

  • Custom context (docs)

  • Dropping support for ASP.NET Core 2.0 (which is already end of life) (docs)

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].

1.1.2

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].

1.1.1

Features

Configure transaction max spans. {pull}472[#472]

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]

1.1.0

Features
  • ASP.NET Support, documentation can be found here

  • Central configuration (Beta)

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]

1.0.1

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 Elastic.Apm package

  • Handling Labels with null {pull}429[#429]

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]

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.

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]

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]

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 Elastic Common Schema (ECS), we renamed our Tags properties to Labels. {pull}416[#416]

.NET Agent version beta/preview

Beta1 release

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)

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

Preview release 2

Features
  • 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 nuget.org.

Preview release 1

Features

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 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 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.