.NET Agent version 1.xedit
1.22.0edit
1.21.0edit
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
andnetstandard2.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 changesedit
1.20.0edit
Featuresedit
-
#1981 Support for Azure Functions through new
Elastic.Apm.Azure.Functions
nuget package! -
#1935 Support new Elasticsearch Client:
Elastic.Clients.Elasticsearch
- #1988 Suppport latest version of Microsoft.Data.SqlClient
- #1988 Support latest version OracleManagedDataAccess
- #1983 Loose MSVC redistributable as requirement for the profiler
- #1983 Add support for sending agent activation method to the server
Bug fixesedit
- #1999 NullReferenceException in span compression
- #1970 Improve profiler logging by always enabling agent logging too.
-
#1972 Normalize OpenTelemetry Bridge config section to
OpenTelemetryBridgeEnabled
- #1926 Try to enable TLS 1.2 in all scenarios.
- #1964 OTel bridge span’s destination service may contain null resource
- #1961 AppSettings ElasticApm:Enabled is not fully honored in ASP.NET Classic
1.19.0edit
Featuresedit
- #1867 Improve handling of multiple agent initialization.
- #1877 Enable CloudMetadataProvider on Azure Functions.
- #1892 CentralConfig: handle MaxAge header with less than 5 sec according to spec (issue: #1831).
- #1897 Add basic agent logging preamble.
- #1907 Publish docker image with agent (issue: #1665).
- #1917 Add .NET 7 support (issue: #1860).
- #1930 Improve SOAP action parsing.
Bug fixesedit
- #1882 Fix transaction trace id not aligned when transaction is created from OTel bridge without parent (issue: #1881).
- #1905 Avoid NRE during startup hook init (issue: #1904).
- #1927 Avoid panic in file-logging setup (issue: #1918).
- #1922 Use Span timing instead of cumulative SqlCommand statistics (issue: #1869).
- #1933 Enable DOTNET_STARTUP_HOOKS for .NET 7 (issue: #1900).
1.18.0edit
Featuresedit
Bug fixesedit
- #1800 Fix incorrect transaction name in ASP.NET Web Api (issue: #1637).
- #1803 and #1804 Fix potential NullReferenceException in TraceContinuationStrategy implementation (issue: #1802).
- #1780 Fix container ID parsing in AWS ECS/Fargate environments (issue: #1779).
- #1814 Use correct default value for ExitSpanMinDuration (issue: #1789).
- #1811 Fixed crashes on some SOAP 1.2 requests when using GetBufferedInputStream (issue: #1759).
- #1816 Group MetricSets in BreakdownMetricsProvider (issue: #1678).
1.17.0edit
Featuresedit
Bug fixesedit
-
#1746 Fix default for the
ApplicationNamespaces
config. - #1755 Flow SynchronizationContext across public API calls (issue: #1660).
- #1753 PayloadSender threading improvements (issue: #1571).
- #1773 Include Accept header on APM server info call (caused errors when reading APM Server info) (issue: #1624).
- #1781 Significantly improved the performance of database query parsing (issue: #1763).
- #1787 Fix FillApmServerInfo : Invalid ElasticApm_ApiKey throws Exception (issue: #1735).
1.16.1edit
1.16.0edit
Featuresedit
Bug fixesedit
-
#1725 By disabling
system.cpu.total.norm.pct
, the agent won’t create any instance of thePerformanceCounter
type (workaround for issue: #1724) -
#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.0edit
Featuresedit
Bug fixesedit
- #1670 Dedicated working loop thread for sending APM events (issue: #1571)
- #1677 Fixed span type for MongoDB - with this a MongoDB logo will show up on the service map
-
#1674 InvalidCastException in
AspNetCoreDiagnosticListener
-
#1683 MVC: handling
area:null
when creating transaction name based on routing -
#1685 Handle missing
.Stop
events inAspNetCoreDiagnosticListener
(issue: #1676)
1.14.0edit
Featuresedit
-
#1620 Span compression and dropping fast exit spans. New settings:
ExitSpanMinDuration
,SpanCompressionEnabled
,SpanCompressionExactMatchMaxDuration
,SpanCompressionSameKindMaxDuration
(issues: #1329 and #1475) - #1611 NpgSql 6.x support (issue: #1602)
- #1589 Capture transaction name on errors (issue: #1574)
Bug fixesedit
Breaking changesedit
1.12.0edit
Breaking changesedit
Featuresedit
- #1511 Implement Dropped span statistics
- #1515 Ignore duplicate Diagnostic listener subscriptions (issue: #1119)
- #1518 Implement User-Agent spec for .NET agent (issue: #1517)
- #1525 Add message related properties to transactions and spans (issue: #1512)
- #1534 Add profiler auto instrumentation (issue: #1522)
- #1548 Add profiler auto instrumentation for RabbitMQ (issue: #1223)
- #1528 Platform detection: Handle .NET 6 (issue: #1513)
- #1492 Remove use of Socket.Encrypted to determine secure
- #1520 Auto-infer destination.service.resource and adapt public API (issues: #1330)
- #1540 Stop recording transaction metrics (issue: #1523)
Bug fixesedit
- #1484 Capture spans for new Azure Storage SDKs (issue: #1352)
- #1509 Use Environment.MachineName to get HostName (issue: #1504)
- #1510 Check context is not null when sanitizing error request headers (issue: #1503)
- #1536 Improve Performance counter handling for metrics on Windows (issue: #1505)
- #1538 Collect .NET Framework GC metrics only when filtering supported (issue: #1346)
- #1557 Handle enabled/recording=false configuration when capturing errors
1.11.1edit
Featuresedit
- #1354 Serialize to writer directly
- #1356 Better logging in PayloadSenderV2 on task cancellation
- #1358 Propagate Trace context in exit spans (issues: #1350, #1344)
- #1374 Get Command and Key for StackExchange.Redis spans (issue: #1364)
- #1474 Add CosmosDB integration to NetCoreAll
- #1368 Use 10K limit for CaptureBody similar to the Java agent (issue: #1359)
Bug fixesedit
- #1362 Unset parentId if TraceContextIgnoreSampledFalse is active
- #1367 Make sure BreakdownMetricsProvider prints 1K warning only once per collection (issue: #1361)
- #1471 Sanitize Central config request URI and headers in logs (issue: #1376)
- #1472 Honor Transaction.Outcome set by public API in auto instrumentation (issue: #1349)
- #1481 Use Kubernetes pod id determined from cgroup file
1.11.0edit
Featuresedit
- #1342 CosmosDb support (issue: #1154)
- #1271 Support "Time spent by span type" (aka Breakdown metrics) (issue: #227)
- #1302 Prefer W3C traceparent over elastic-apm-traceparent
- #1310 Add TraceContextIgnoreSampledFalse config setting
- #1331 Create transactions for Azure Service Bus Processors (issue: #1321)
1.10.0edit
Featuresedit
- #1225 Add instrumentation for Azure Service Bus (issue: #1157)
- #1247 Add Azure storage integration (issues: #1156 and #1155)
-
#1241 Internalize
Newtonsoft.Json
- no more dependency onNewtonsoft.Json
-
#1275 Internalize
Ben.Demystifier
- no more dependency onBen.Demystifier
(issue: #1232) - #1215 Add MongoDb support (issue: #1158)
- #1277 Capture inner exceptions (issue: #1267)
- #1290 Add configured hostname (issue: #1289)
- #1288 Use TraceLogger as default logger in ASP.NET Full Framework (issue: #1263)
Bug fixesedit
Breaking changesedit
1.9.0edit
Featuresedit
Bug fixesedit
- #1189 Get transaction name from Web API controller route template
Breaking changesedit
1.8.0edit
Featuresedit
- #1063 Add support for capturing redis commands from StackExchange.Redis (documentation) (issue: #874)
-
#1065 Introduce
ServerUrl
config - (ServerUrls
is still working but will be removed in the future) (issue: #1035) - #1048 Support for more k8s cgroup path patterns (issue: #968)
-
#1082
SanitizeFieldNames
config became changeable though Kibana central configuration - #1083 Azure App Service cloud metadata collection
-
#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) -
#1096 Support changing log level through Kibana central configuration and support
"off"
level (issue: #970)
Bug fixesedit
-
#1081
NullReferenceException
with disabled agent onTransaction.Custom
(issue: #1080) -
#1078 ASP.NET Core, enabled=false in
appsettings.json
does not disable public Agent API (issue: #1077) -
#1115
System.IO.IOException
on ASP.NET Classic (issue: #1113) - #1118 Memory issue with gRPC (issue: #1116)
- #1124 Ensuring ETW sessions are terminated on agent shutdown (issue: #897)
-
#1109
NullReferenceException
with customIConfigurationReader
implementation inMetricsCollector
-
#1138 and #1165 Fixes around zero code change agent setup with
DOTNET_STARTUP_HOOKS
-
#1115 Access
Request.InputStream
only when SOAP header present (issue: #1113)
1.7.1edit
Featuresedit
Bug fixesedit
- #1052 Increased transaction duration due to stack trace capturing (issue: #1039)
-
#1053 Warning with
Synchronous operations are disallowed
on ASP.NET Core during request body capturing (issue: #1044) - #1042 SqlClient instrumentation on .NET 5 (issue: #1025)
-
#1060
UseAllElasticApm
withIHostBuilder
missing auto instrumentation (issue: #1059)
1.7.0edit
Featuresedit
- #828 Agent loading with zero code change on .NET Core (issue: #71)
- #969 gRPC support (issue: #478)
- #974 Add ability to configure Hostname (issue: #932)
- #997 Add Enabled and Recording configuration (issue: #122)
-
#912 Add
FullFrameworkConfigurationReaderType
config to load custom configuration reader on ASP.NET - #978 Capture User id and email on ASP.NET (issue: #540)
- #982 Support boolean and numeric labels in addition to string labels (issues: #967, #788, #473, #191, #788, #473, #191)
- #1000 Collecting metrics based on cGroup (issue: #937)
-
#1002
ITransaction.SetService
API to support multiple services in a single process (issue: #1001) - #1003 Collecting cloud metadata (supporting AWS, Azure, GCP) (issue: #918)
- #973 Transaction grouping on ASP.NET (issue: #201)
- #913 Entity Framework 6 support on .NET Core (issue: #902)
Bug fixesedit
Breaking changesedit
-
Binary compatibility on
IExecutionSegment.CaptureException
andIExecutionSegment.CaptureError
with libraries depending on previous version. If this happens you need to updateElastic.Apm
to 1.7.0 in your projects (Issue: (#1067)
1.6.0edit
Featuresedit
- Elasticsearch client instrumentation #329
-
Introducing
Elastic.Apm.Extensions.Hosting
package with an extension method onIHostBuilder
#537 - Stack trace improvements: async call stack demystification (#847) and showing frames from user code for outgoing HTTP calls (#845)
-
Making fields on
IError
public #847 - Service map improvements: #893
Bug fixesedit
1.5.0edit
Featuresedit
-
Auto instrumentation for
SqlClient
(documentation) - Introducing Filter API #792 (documentation)
- Auto-detect culprit for exceptions #740
-
New config settings:
ExcludedNamespaces
,ApplicationNamespaces
(documentation) -
Keep
Activity.Current.TraceId
in sync with the Trace ID used by the agent #800 - Report Kubernetes system metadata #741
Bug fixesedit
- Database connection string parsing issue with Oracle #795
1.4.0edit
Featuresedit
Bug fixesedit
Breaking changesedit
-
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.0edit
Featuresedit
-
New GC metrics:
clr.gc.count
,clr.gc.gen[X]size
, where [X]: heap generation #697 - Capturing SOAP action name as part of the transaction name #683
-
New config options:
ServiceNodeName
,VerifyServerCert
,DisableMetrics
,UseElasticTraceparentHeader
(docs) - Full W3C TraceContext support #717
Bug fixesedit
1.2.0edit
Featuresedit
- Entity framework support with Interceptor (docs)
- Sanitization of HTTP headers and request body (docs)
-
Central configuration - 2 new configs:
CAPTURE_BODY
andTRANSACTION_MAX_SPANS
. #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 fixesedit
1.1.1edit
Featuresedit
Configure transaction max spans. #472
Bug fixesedit
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. #527
1.1.0edit
Featuresedit
- ASP.NET Support, documentation can be found here
- Central configuration (Beta)
Bug fixesedit
1.0.1edit
Bug fixesedit
-
NullReferenceException
on .NET Framework with outgoing HTTP calls created withHttpClient
in case the response code is HTTP3xx #450 -
Added missing
net461
target to theElastic.Apm
package -
Handling
Labels
withnull
#429
Featuresedit
-
Reading request body in ASP.NET Core. Also introduced two new settings:
CaptureBody
andCaptureBodyContentTypes
. By default this feature is turned off, this is an opt-in feature and can be turned on with theCaptureBody
setting. #402
1.0.0 GAedit
The 1. GA release of the Elastic APM .NET Agent. Stabilization of the 1.0.0-beta feature for production usage.
Featuresedit
Bug fixesedit
Breaking changesedit
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 withElastic.Apm.NetCoreAll
#371 -
Based on feedback we also renamed the
UseElasticApm()
method in theElastic.Apm.NetCoreAll
package toUseAllElasticApm
- this method turns on every component of the Agent for ASP.NET Core. #371 -
Our logger abstraction, specifically the
IApmLogger
interface changed: #389 -
To follow the Elastic Common Schema (ECS), we renamed our
Tags
properties toLabels
. #416