I’m happy to announce that the Application Insights Windows SDKs have reached the 1.0.0 milestone. By reaching the 1.0.0 milestone we will take on greater stability around SDK changes and a longer support lifetime. We will continue to drive improvements and new features into the SDK but you can feel comfortable that this SDK version will avoid breaking changes in the future. The 1.0.0 SDK includes some API changes to improve experiences and a number of stability and performance enhancing fixes. You can see a full list of changes by viewing the release notes.
What platforms are supported?
Application Insights supports many of the application types you are likely using today, and is rapidly adding support for additional platforms. Application Insights strives to support any application in any environment.
- ASP.Net Web Applications
- Windows Applications
- Java Web Applications
Other supported platforms (1.0.0 coming soon)
- Mac OS X
Please refer to documentation for the full set of supported platforms and information on getting started. As our SDKs are compiled into your application, we feel it is important that you fully understand all the code executing. To support this understanding all of our SDKs are open source or in the process of being open sourced, please visit our GitHub home for more details or to make contributions.
What do the SDKs do?
The SDKs provide a rich set of automatic telemetry capture out of the box. Getting started with Application Insights is as easy as integrating the SDK into your application and rebuilding. Each platform specific SDK collects automatically the telemetry that is highest value for that platform.
Each SDK auto populates every telemetry item with a set of common context properties. By collecting them for every telemetry item you will be able to perform multi dimension slicing of any telemetry type in the Application Insights portal. In addition the SDKs collect correlation values, such as userID and sessionID, that enable correlation across different telemetry types. The list below represents some of the context properties automatically provided by the SDK. All of these values are able to be specified in code, if you would prefer more fine grained control over what is collected.
- Application Version
- Model Name
- OEM Name
- Network Type
- OS Version
- Browser Version
- Country or Region
All client SDKs collect basic usage telemetry automatically. This includes tracking of users and sessions in an anonymous manner. This basic telemetry is critical to understanding if your application is succeeding and being used by your customers. In addition, feel comfortable that basic usage telemetry is free and unlimited and not charged against your monthly quota.
Recently (in SDK 0.17 and now in 1.0), we introduced an important change in how we count users and sessions. Until today, our definition of a “Session” was a broad one – a session could be originated by a user or by another computing entity (e.g. another app calling a RESTful endpoint). This was confusing to many and could cause inflated metric values. Starting SDK 1.0, Session in Application Insight means “User Session”. These are implications of this change:
- App instrumented with SDK 1.0, may report lower numbers of users and sessions, specifically for apps who had non-trivial volume of non-user originated calls
The SDKs also collects pageview telemetry automatically. For web applications you get traditional views into the popularity of pageviews and pageview performance. For mobile device apps the SDKs collect pageviews representing the rending of UI views on each platform. This allows you to understand not just if your users are engaging with your application, but insight into what parts of your application are being used the most frequently.
Crashes and Exceptions
Being able to diagnose failures within your application is critical for the success of your product. To aid in diagnostics of difficult failure cases the AppInsights SDK collect telemetry relating to client app crash and server failures and exceptions. The SDKs are able to provide a significant amount of value in collection of this diagnostics information and provides deep insights into the failure modes of your app. For iOS crashes this includes symbolication support to convert machine code crash reports to readable stack traces. For server apps this allows for correlation of request failures to exceptions and dependency failures.
Request and Dependency Telemetry
For server and service application, the Web and Java SDKs provide automatic telemetry collection of all incoming process requests and details of all outgoing dependency calls. This information is critical to understand the performance and operational characteristics of your server app. The SDKs provide a deep level of data collection, including information on duration and performance, status codes, and correlation to other telemetry data.
The Application Insights SDKs support the ability to collect machine performance counters from where your application is running. In addition to collecting basic performance counters like processor CPU and available memory the SDKs support collection of any custom performance counter from your windows machine. Collection of performance counters can provide significant insight into monitoring and diagnosing impact the application host environment is having on your application.
Application Insights SDKs allow the collection of trace (or log) telemetry. You can configure the SDKs to automatically capture telemetry from many of the existing popular trace logging frameworks you are potentially using such as Log4Net, NLog, System.Diagnostics, LogBack, or Log4J. In addition to automatic collect you can always log trace telemetry directly through the SDK API.
The SDK provide a simple and powerful API. This API allows for logging of any custom telemetry data. All automatic telemetry can be controlled, augmented, or replaced through the API. It also exposes the 2 dedicated custom telemetry types, Events and Metrics. Custom Events and Metrics are powerful tools for collecting any telemetry data. Custom Events represent a single discrete instance of any tracked actions within your application. Custom Metrics support logging of time-series based data, through simple logging of data values, you can extract average and sum metrics over time. In addition, like all telemetry custom telemetry can be populated with properties, allowing for later multi dimensional analysis.
How do I get started?
The best way to understand the value of Application Insights and the functionality provided by the SDKs is to add Application Insights to an existing application or try it out with a new prototype application. The getting started process should take no longer than 5 minutes. In addition, new application are created as part of the free tier, allowing for a quick and no risk evaluation of Application Insights.
If you’re an existing Application Insights customer upgrading is simple. Utilize NuGet package manager to upgrade your references to the latest stable version.