microsoft / applicationinsights-announcements Goto Github PK
View Code? Open in Web Editor NEWSubscribe to this repo to be notified about major changes in Application Insights.
Subscribe to this repo to be notified about major changes in Application Insights.
We are changing our data collection to accept JSON documents that are case sensitive. It has been possible to send incorrect case and it was handled in our processing. JSON specifies that field names are case sensitive.
Here’s the definition of what we mean:
Making this change provides the following benefits:
After this change, if applications POST data with incorrect casing of field names, the data will be rejected with a status code 400.
The .NET Services SDK implements the correct casing and we’re reviewing the current versions of the other Microsoft SDKs.
With the upcoming beta release of Application Insights SDK for web applications adaptive sampling will be enabled by default. Read more about adaptive sampling: microsoft/ApplicationInsights-dotnet#80
Disable it by removing the following from ApplicationInsights.config
:
<TelemetryProcessors>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
</Add>
</TelemetryProcessors>
As part of the OpenTracing specification a span can be related to its parent span using a ChildOf reference or a FollowsFrom reference: https://github.com/opentracing/specification/blob/master/specification.md#references-between-spans. As specified the latter is used when a parent span does not in any way depend on the result of the child span.
I have not found any way to make this very useful distinction in Application Insights. Currently Application Insights may in the Azure Portal Performance display end up flagging a span as an error when its child spans don't finish before the parent span. If the child span were declared as having a FollowsFrom reference, this could be avoided.
While it is still unclear where OpenTelemetry is going with this (see open-telemetry/opentelemetry-specification#65), I still think it would be useful for Application Insights to support.
If you got latest update of Status Monitor 2.4.0 you may end up in the situation when you're unable to enable the monitoring because update was not fully completed.
Symptoms:
You'll see the following pop up notification with the error after clicking Add Application Insights button:
Resolution:
Finish the update by clicking on Update is available link in the bottom left corner and Install SDK 2.4.0
We're working on the fix to prevent this manual step from being required.
Previously Application Insights Dependency Collector module was attempting to automatically collect asynchonous HTTP dependencies on applications compiled with .NET 4.5+ and running on .NET 4.5.1 and 4.5.2 runtime. We were using the mechanism built into .NET framework. However we discovered that the approach we were using was not reliable. Specifically, we could not detect whether HTTP calls failed or succeeded and also were reporting duplicate calls. To ensure correctness we will no longer be auto-collecting async HTTP dependencies on these runtime versions.
Customers wishing to collect HTTP dependencies on .NET 4.5.1 and .NET 4.5.2 should use Application Insights Status Monitor. On Azure WebApps you can also enable Application Insights Extension (please see Azure WebApp section here)
The changes will be enabled with upcoming Dependency Collector 2.1.0-beta3 release, however, even if you are not upgrading we are recommending that you enable Status Monitor or WebApp extension to ensure accuracy.
.NET runtime | Async HTTP | Sync HTTP | SQL |
---|---|---|---|
< 4.6 | install Status Monitor/WebApp Extension (1) | install Status Monitor/WebApp Extension | install Status Monitor/WebApp Extension |
>= 4.6 (if app is compiled with 4.5+) | auto-collected by framework, no Status Monitor/WebApp Extension required (2) | auto-collected by framework, no Status Monitor/WebApp Extension required (2) | auto-collected by framework, no Status Monitor/WebApp Extension required (3) |
(1) Before 2.1.0-beta3 release, Dependency Collector was attempting to auto-collect async HTTP dependencies using mechanism built into .NET framework, but that approach was found unreliable
(2) Starting with 2.1.0-beta3 release, Dependency Collector enabled with StatusMonitor/WebApp Extension provides better sync/async HTTP support by including HTTP verb (GET,POST,PUT etc).
(3) Status Monitor/WebApp Extension provides better SQL command instrumentation support by capturing CommandText property
There are important files that Microsoft projects should all have that are not present in this repository. A pull request has been opened to add the missing file(s). When the pr is merged this issue will be closed automatically.
Microsoft teams can learn more about this effort and share feedback within the open source guidance available internally.
Application Insights endpoint is going to accept data via HTTPS only.
The planned date to turn off HTTP endpoint is 10/27/2016.
After this date, the HTTP endpoint at address http://dc.services.visualstudio.com/v2/track is not going to accept any telemetry data.
If you develop and/or release any code or SDK that sends data to Application Insights endpoint, please make sure to release a new version that works with the HTTPS Application Insights endpoint: https://dc.services.visualstudio.com/v2/track.
ASP.NET Core 2.0 agent-based application monitoring will no longer be supported effective 30 MAY 2019.
This is a breaking change for customers running ASP.NET Core 2.0 in an App Service. We recommend moving to .NET Core 2.1 or higher.
Customers who manually instrumented through code using the ASP.NET Core 2.0.0 and 2.0.1 SDKs are unaffected by this change.
There is no way to set EnableAdaptiveSampling
to false when using the WebHostBuilder
extensions.
public static IWebHostBuilder UseApplicationInsights(this IWebHostBuilder webHostBuilder)
{
webHostBuilder.ConfigureServices(collection =>
{
collection.AddApplicationInsightsTelemetry();
});
return webHostBuilder;
}
Should this be possible? Right now I'm having to ditch this extension and do it myself:
webHostBuilder.ConfigureServices(collection =>
{
collection.AddApplicationInsightsTelemetry((options) =>
{
options.InstrumentationKey = appInsightsKey;
options.EnableAdaptiveSampling = false;
});
});
For all requests and exceptions collected by Web SDK we will not store the following fields as they bring little to no value for troubleshooting scenarios. This data will not be available for search, filtering and export. In SDK 2.0.0-beta2 DeviceTelemetryInitialzer
that was collecting these properties is removed from the list of pre-configured telemetry initializers.
"ai.application.ver" (if set to "Unknown") ITelemetry.Context.Component.Version
"ai.device.id": "sergkanz-dev.redmond.corp.microsoft.com" ITelemetry.Context.Device.Id
"ai.device.type": ITelemetry.Context.Device.Type (example: "PC")
"ai.device.oemName": ITelemetry.Context.Device.OemName (example: "Dell Inc.")
"ai.device.model": ITelemetry.Context.Device.Model (example: "Precision WorkStation T7500 ")
"ai.device.network": ITelemetry.Context.Device.Network (example: "Ethernet")
"ai.device.language": ITelemetry.Context.Device.Language ("en-US")
The following usage metrics are no longer automatically calculated and removed from Application Insights as we are making APM and not usage our primary focus:
We are recommending that the customers use Application Analytics queries to calculate these usage metrics.
Here's an example for session duration:
customEvents //or change to whatever type you feel is represented the most in your scenario
| where session_Id != ""
| summarize max(timestamp), min(timestamp) by session_Id
| extend sessionDurationSeconds=todouble(max_timestamp-min_timestamp)/10000000.00 //convert timespan to ticks and divide by 10mln to get seconds
| summarize percentile(sessionDurationSeconds, 50) , stdev(sessionDurationSeconds), avg(sessionDurationSeconds), count(sessionDurationSeconds) by bin(min_timestamp,1d)
| order by min_timestamp asc
The SDK Microsoft.ApplicationInsights.AspNet has been renamed to Microsoft.ApplicationInsights.AspNetCore to align with the naming in ASP.NET Core itself.
This is a breaking change.
The old package supports ASP.NET RC1 whereas the new package is built against the latest release of ASP.NET RC2. Due to breaking changes between ASP.NET RC1 and RC2 the old ApplicationInsights package will no longer be updated and all future updates will be using the new name Microsoft.ApplicationInsights.AspNetCore.
We have updated the SDK to use the .NET Core CLI runtime environment which picks the latest set of RC2 dependencies. Please note that this version is not compatible with RC1 bits or the DNX environment.
In order to update to the latest ApplicationInsights SDK for ASP.NET please remove any references to the old NuGet package and install the new named package instead (references can be found in the project.json file).
See here for migration steps from ASP.NET RC1 to RC2: https://docs.asp.net/en/latest/migration/rc1-to-rc2.html#namespace-and-package-id-changes
We apologize for the inconvenience of a manual upgrade to a new package name. We chose not to create an automatic migration from the old to new package naming because this could inadvertently break customers still using DNX or other pre-RC2 ASP.NET technologies who are not ready to migrate to .NET Core CLI and ASP.NET RC2.
When will the Application Insights Status Monitor get updated to a version greater than 2.4.0 or 2.4.1? We need the latest, so that there is support for dependency tracking from HttpClient async calls.
Does the Application Insights Status Monitor code exist within GitHub?
We removed these fields from the data output for export and search. They are not set explicitly in the SDK. This change was pushed on approximately Oct 19th.
For Remote Dependency, Request, Client perf, Page view, Event:
urldata.protocol
urlData.QueryParameters
urlData.Port
The full URL is still available. In processing, we would parse out and keep copies of protocol
, queryParameters
, and port
for easy of filtering. However, this was extra data and not exposed directly in the UI. This data can still be derived from the URL field or searched on.
For context (across events):
device.useragent
context.location.point.lat
context.location.point.long
User agent is still used for determining browser
and browser version
. It is dropped in processing and not available in search or export. lat
/ long
data is no longer generated in processing. It was not very accurate and had high cardinality. For scenarios such as map visualization in Power BI, it is recommended to use country/region instead.
Onboarding using Application Insights Status Monitor or portal extension for Azure WebApps is not supported for ASP.NET Core (formerly known as ASP.NET 5) applications. At the time of this writing, Status Monitor onboarding experience for ASP.NET Core applications is inconsistent and have not been verified, and as such, is not officially supported.
Please stay tuned for further announcements as we are working to improve the experience and documentation.
Is it possible to sample based on tracking type?
For example, I want to sample 50% of all tracing & metrics, but no sampling of events?
Slightly related to #1 given I don't want this for certain reasons but this would help me.
Currently latest stable ASP.NET Core SDK 2.0 is incompatible with portal-controlled sampling. Turning on server-side sampling from the Features and Pricing
page results in all telemetry dropped for services onboarded with this SDK. We are working on the hotfix to stable 2.0 (planned 2.0.1) version of ASP.NET Core SDK. ETA is 6/16/2017
This repository is currently missing a LICENSE file.
A license helps users understand how to use your project in a compliant manner. You can find the standard MIT license Microsoft uses at: https://github.com/microsoft/repo-templates/blob/main/shared/LICENSE.
If you would like to learn more about open source licenses, please visit the document at https://aka.ms/license (Microsoft-internal guidance).
REDACTED
To enable the collection please use telemetry initializers. This code needs to be in your snippet right after the initialization and before appInsights.trackPageView(...):
appInsights.queue.push(function () {
appInsights.context.addTelemetryInitializer(function (envelope) {
envelope.tags = envelope.tags || {};
if (typeof screen !== "undefined") {
envelope.tags["ai.device.screenResolution"] = screen.width + "X" + screen.height;
envelope.tags["ai.device.locale"] = navigator.language || navigator.browserLanguage || "unknown";
}
});
});
If you are using Microsoft.ApplicationInsights.AspNetCore SDK version 2.7.0, please update at your earliest to the 2.7.1 hotfix version.
https://github.com/microsoft/ApplicationInsights-aspnetcore/releases/tag/2.7.1
This contains a critical bug fix which caused SDK to silently capture exceptions from user code where application middlewares are configured. (Configure() method of Startup.cs)
All customers using Microsoft.ApplicationInsights.Web package to monitor ASP.NET applications are advised to upgrade to the latest version from nuget. (2.11.2 https://www.nuget.org/packages/Microsoft.ApplicationInsights.web)
Below is the bug description, and the symptoms are High CPU usage/crash, with following stacktrace in multiple threads.
\|\| + microsoft.aspnet.telemetrycorrelation!TelemetryCorrelationHttpModule.Application_EndRequest
--
\|\| + microsoft.aspnet.telemetrycorrelation!ActivityHelper.StopAspNetActivity
\|\| + system.diagnostics.diagnosticsource!DiagnosticSource.StopActivity
\|\| + system.diagnostics.diagnosticsource!DiagnosticListener.Write
\|\| + microsoft.ai.web!Microsoft.ApplicationInsights.Web.AspNetDiagnosticTelemetryModule+AspNetEventObserver.OnNext(value class System.Collections.Generic.KeyValuePair`2)
\|\| + microsoft.ai.web!RequestTrackingTelemetryModule.OnEndRequest
\|\| + microsoft.ai.web!RequestTrackingTelemetryModule.NeedProcessRequest
\|\| + microsoft.ai.web!RequestTrackingTelemetryModule.IsHandlerToFilter
\|\| + system.core!System.Collections.Generic.HashSet`1[System.__Canon].Contains(!0)
Hello,
I’ve just published v1.0.0-rc of Status Monitor v2. This is our replacement for StatusMonitor.
We are now recommending this version for production workloads!
I am very interested in your feedback!
Please don’t hesitate to contact me if you have any issues or comments.
Specifically,
After analyzing usage of standard dimensions in AppInsights, we decided to turn many of non-commonly used dimensions into plain properties. This will make it easier to find the ones that are important (instead of scrolling through long lists), will increase performance of AppInsights UI, and, of course, will reduce our cost of storing data that only very few people need. Below you can find a list of dimensions that will stay, will be removed, and some FAQs about the planned change.
availability.result
availability.runLocation
availability.testName
basicException.problemId
billingMetric.documentType
clientPerformance.performanceBucket
context.data.isSynthetic
context.device.browserVersion
context.device.deviceModel
context.device.osVersion
context.device.roleInstance
context.device.type
context.location.country
context.operation.name
event.name
remoteDependency.baseName
remoteDependency.durationMetric.name
remoteDependency.performanceBucket
remoteDependency.resultCode
remoteDependency.success
request.performanceBucket
request.responseCode
request.success
view.name
view.performanceBucket
context.device.deviceName
context.device.screenResolution.value
view.name
context.application.version
Context.sessionid
Context.anonuserid
Insight.severity
Insight.provider
• basicException.assembly
• basicException.exceptionGroup
• basicException.exceptionType
• basicException.failedUserCodeAssembly
• basicException.failedUserCodeMethod
• basicException.handledAt
• basicException.hasFullStack
• basicException.innermostExceptionThrownAtAssembly
• basicException.innermostExceptionThrownAtMethod
• basicException.innermostExceptionType
• basicException.method
• basicException.outerExceptionThrownAtAssembly
• basicException.outerExceptionThrownAtMethod
• basicException.outerExceptionType
• basicException.parsedStack.assembly
• basicException.parsedStack.fileName
• basicException.parsedStack.method
• basicException.severityLevel
• basicException.typeName
• clientPerformance.urlData.base
• context.application.build
• context.cloud.deploymentUnit
• context.cloud.environment
• context.cloud.location
• context.cloud.name
• context.cloud.role
• context.cloud.roleInstance
• context.device.language
• context.device.locale
• context.device.network
• context.device.oemName
• context.device.os
• context.device.screenResolution.height
• context.device.screenResolution.width
• context.device.vmName
• context.location.continent
• context.serverDevice.os
• context.serverDevice.osVersion
• context.user.campaignId
• context.user.storeRegion
• event.type
• event.urlData.base
• event.urlData.host
• event.urlData.protocol
• event.urlData.raw
• message.hasStackTrace
• message.level
• message.severity
• message.severityLevel
• performanceCounter.categoryName
• performanceCounter.instanceName
• remoteDependency.async
• remoteDependency.commandName
• remoteDependency.dependencyTypeName
• remoteDependency.type
• request.httpMethod
• request.urlData.base
• request.urlData.host
• request.urlData.protocol
• view.referrerData.base
• view.urlData.base
• view.urlData.host
• view.urlData.port
• view.urlData.protocol
Q: Will SDK continue to collect the values for the dimensions that are being cut?
A: There are no plan on changing AI SDK side. All data will remain available at:
• Event details screen
• Continuous export
*Q: If all data continues to float to AI, what areas are really impacted by the cut? *
A: The users will not be able to use the affected dimensions in the Metrics Explorer “group-by” drop-down box. Also, these dimensions will no longer be available in the filter list (in ME and Diagnostic Search).
*Q: Will I continue to be able to group-by/ filter by custom dimensions? *
A: Yes, absolutely. Custom dimensions will continue to work the way they work today.
Hi, I am working on a Go web application hosted on azure and my understanding was that Application Insights was supported. The Github page says that MS has worked on it in the past but they do not maintain it now. Just wanted to understand what's the roadmap of adding this in Azure SDK for GO and also if not, then why.
Thanks
Ashish
Prefix SQL:
will be removed from the name of the SQL. Use type
property to determine the type of telemetry. Please correct your analytics queries if you rely on this prefix in dependency name
If you still use this version you will not get request telemetry. Please upgrade SDK to the latest version.
Please advise.
We plan to deprecate PerformanceCounter type in favor of custom metrics.
Proposed conversion is similar to what we use for custom metrics today. When we receive PerformanceCounter (pc) we save it as a Metric (m):
m.Name = pc.CategoryName + “ - “ + pc.CounterName
m.Value = pc.Value
m.Count = 1
m.Properties[“CounterInstanceName”] = pc.InstanceName
foreach (prop in pc.Properties)
m.Properties[prop.Name] = prop.Value
There is a multi-step plan to accomplish this:
FAQ
Will it affect existing limits?
Will there be a data loss?
Hello,
I’ve just published v0.1-alpha of IISConfigurator. This is our replacement for StatusMonitor.
I’ve organized all our docs for the IISConfigurator here: https://github.com/Microsoft/ApplicationInsights-Home/blob/master/Samples/IISConfigurator/TOC.md
This includes:
Disclaimer: This is a prototype application. We do not recommend using this on your production environments.
Please pay close attention to the known issues.
Your apps may have issues if they include any of the following DLLs in the bin directory:
I am very interested in your feedback!
Please don’t hesitate to contact me if you have any issues or comments.
Specifically,
Edit 4/09/2019 - New releases are paused
I previously committed to a new version every two weeks.
I've run into an issue internally that is blocking me from keeping up this release schedule.
Rest assured that development of new features is still on schedule.
I'm sorry for this delay and I will resume deployments as soon as this situation is resolved.
Thank you for your patience.
Edit 4/10/2019 - Update
Internal issues are almost resolved. I expect I can resume deployments by Friday 4/12!
Thank you for your continued patience.
As part of our move towards W3C correlation standard, Application Insights will start transforming legacy correlation IDs matching certain pattern into W3C span IDs for Request and Dependency telemetry items. You can still find the original ID in the custom property ai_legacyRequestId.
If Request or Dependency ID matches |operationId.spanId.
pattern, then spanId
is used as an ID instead. Similar logic applies to Parent ID field on all items.
If Request ID or Dependency ID is changed like that, then transformation rule adds ai_legacyRequestId
custom dimension with the original ID value (|traceId.spanId.
)
The expected timeline of the change - EOM November.
Hello, I just wanted to know if ApplicationInsights-Python module - https://github.com/microsoft/ApplicationInsights-Python , is being deprecated? Or can we still use it.
We are trying to log custom events and metrics using this package, which seems to quite confusing when working with opencensus python sdk, please confirm if we can proceed with using this package, or are there any other packages with which we can log metrics and custom events along with the traces(logged usign open census). Thank you.
Where should the link point to? I would like to log an issue but don't know where to do that since this link is broken.
Is https://github.com/Microsoft/ApplicationInsights-Ruby now completely dead?
I'm running a Ruby on Rails application on a Azure App Service for Linux (Container) instance and would like to know how I can integrate into ApplicationInsights now or the near future.
Hello,
I’ve just published v0.2-alpha of Status Monitor v2 (formerly IISConfigurator). This is our replacement for StatusMonitor.
I’ve organized all our docs here.
Disclaimer: This is a prototype application. We do not recommend using this in your production environments.
What's New
Enable-InstrumentationEngine
.What's Next
I am very interested in your feedback!
Please don’t hesitate to contact me if you have any issues or comments.
Specifically,
EDIT 4/30
IISConfigurator has been renamed to Status Monitor v2.
The docs have been moved to Microsoft Docs https://docs.microsoft.com/azure/azure-monitor/app/status-monitor-v2-overview
As part of C# SDK 2.14 release updates, a new breaking change will be released to the public.
To adhere to compliance and security standards, Microsoft Application Insights (.NET/.NET Core) SDKs will no longer collect SQL commands in any format, by default.
The change itself, will now align the behaviors of ASP.NET Core and ASP.NET SDKs.
Our earlier behavior looked as follows:
Our new behavior for both ASP.NET & ASP.NET Core customers will look as follows:
Users who wish to delete any previous commands executed and stored in the past 30 days can use the purge command available here: https://docs.microsoft.com/en-us/rest/api/application-insights/components/purge
Modify ConfigureServices() with the line below:
services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) => { module. EnableSqlCommandTextInstrumentation = true; });
Modify ApplicationInsights.config file to have this line.
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector">,
<EnableSqlCommandTextInstrumentation>true</EnableSqlCommandTextInstrumentation>
</Add>
For ASP.NET customers, the above alone is insufficient to collect SQL text, if using System.Data.SqlClient.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.