 Hello, I am Rahul Bagaria, a Product Manager on the Visual Studio Application Insights team. In today's increasingly complex world of software having access to the most relevant data that can help you detect and fix production problems, as well as make future business decisions, is crucial for your applications to succeed. Application Insights is a preview service in the Microsoft Azure portal which can definitely help you succeed with deep diagnostics and analytics capabilities for any of your web apps and services. In this video, I'm going to give you an overview tour of Application Insights and discuss how you can detect triage and diagnose real-world problems for your web apps and services. We will visit the Azure portal and I will take you through a deep diagnostics experience with Application Insights for a fully configured production app. We will discuss how quickly you can get started on any web platform, and in the end, we will cover the resources so that you can learn more about the service and get started today. Application Insights is an end-to-end solution where telemetry data is collected at every tier, sent to the Cloud for processing and storage, and made available in a powerful and interactive experience in Azure portal. We can talk about this in terms of three key pillars. Firstly, Application Insights gives you a comprehensive view across your entire application stack with deep performance and diagnostics telemetry available out of the box, which you can support with any custom data using our open-source SDKs. Secondly, it provides a set of powerful exploration tools enabling you to quickly identify and diagnose issues, assess customer impact, and prioritize accordingly. Thirdly, Application Insights makes telemetry an integral part of your development process, bridging pre- and post-production, testing and monitoring, and providing integrated experiences with Visual Studio, Visual Studio Team Services, and Azure diagnostics. Application Insights provides you with deep insights and analytics enabling you to easily detect and diagnose issues and prioritize them based on their impact. In a typical detect-triage-diagnosed scenario, it provides a suite of capabilities that you can take advantage of. To detect issues, you can set up synthetic availability tests pinging your site at regular intervals from points around the globe. You can set up elaborate multi-step web tests to monitor resources and availability of your backend services. You can monitor real user response times and failure rates with threshold-based alerts, notifying you in real time. Once an issue is detected, you need to assess the impact and triage the situation. With information on real user impact and affected requests, it makes it easy to prioritize fixes. If 1 percent of all HTTP requests fail, that might not sound too bad until you discover it's click here to pay button that's failing. So once you are ready to diagnose the problem, you can go deep and analyze your data in different ways, slicing and dicing, querying logs, and ultimately getting to the line of code that requires fixing. All this correlated with any contextual information required around requests, performance counters, remote dependencies, etc. So let's check this out with a demo. Here we are in the Microsoft Azure portal where the application and site service is hosted. I'll click on one ASP.NET application that I have been running for quite some time. This application is hosted on an Azure VM, and in one single look, I can monitor how my application is performing, both from client side as well as server side. I can also see how many failures are occurring that I might want to care about. I can drill down into any of these charts and metrics to get more details and more context about these. So let's have a look. I'll click on the server response time chart and get more details about that particular chart. I can see the server response time data split across different continents, and I can get a sense of what's the average response time looking like. Similarly, I can get details around the dependency duration, what's the typical request pattern, how many dependency calls are made, and so on. If I go down the blade, I can get details around the slowest requests that my site was generating, and some of these I might want to drill down and explore further to diagnose the issue. Similarly, I can click on the browser page load performance and get more details from the client side on what was the response time there, how many page views occurred, and get a split on the client performance around client processing time, send request time, receiving response time, and so on. I can get a sense of the slowest page loads, which might be interesting for me to figure out and diagnose further. Similar to this, I can click on failed requests and get more details about the failures occurring for my application. Now, these failures can be occurring anywhere. These may be in your code, in the backend service. These might be in the dependencies that you are calling. For example, you are doing a database call, you are calling a web service, some Azure storage requests. So the issue can happen anywhere, and with application insights, you can track all of them very easily. Now, in this particular chart, I can get a sense that out of all the failed requests that occurred in the last 24 hours, there is a split of 304 occurring on Internet Explorer, three on Chrome, and I can get some insights and patterns from that. I can see that a total of seven dependency errors have occurred, and the typical exception rate has been around 50 exceptions per hour, which is a bit high for my application, and I would want to figure out what's going wrong. So once I come down, I can get a sense of which are the most popular errors. So I can see that 98% of my errors are happening in some report request, whereas only around 1.5% are occurring in a customer create scenario. While that is low, from my perspective, that's a more important scenario that I would want to resolve earlier. So I click on that to get a more instance-level detail on that particular issue. Now, for this particular error, I can get each individual instance on when that exception occurred. I can get a sense of the real user impact as well. So I can see that there were five failures, but only two real users were impacted. So in a real situation, this will give you an idea about how many actual users got impacted by some production issue, with which you can either take a prioritization decision or impact your communication methods. So let us click on one particular instance of this exception and see what details we can find to diagnose and solve the problem. So once the blade opens, I can see details around that particular failed request. I can see what was the response time, what was the exact URL, what was the response code, when did it occur, and all the different things. I can get the entire exception, and I can click on it to see the details around the exception message, as well as the entire call stack. Now, with this call stack, I can easily go to the exact page where the exception was occurring and be able to drill down the problem. Coming back, I can see all the remote dependencies that this particular request was calling. Now, with Application Insights, all these dependencies are being monitored out of the box without you having to write a single line of code. So in this particular request, there were multiple database calls and one of them failed at the end, and that was the exact issue with which this request failed. Now, if I want to diagnose that, I just have to click and get more details around that failed dependency call. I can see the details that it's a SQL dependency, I can have the SQL statement where the problem occurred, as well as a dependency call stack to be able to help me figure out who I need to approach. Another thing which is very important when you are diagnosing a real production issue is to figure out how the user could have reached that particular point in the product where they hit that issue. And that is where all telemetry for this user session helps you a lot. Since Application Insights is collecting all the different data points from across your application stack, so we are able to capture all dependency calls, all these traces that you are sending, all requests that are generated, even user page views, exceptions, and any custom instrumentation that you would have sent from the SDK. Now, with Application Insights, you can get a timeline-based view of when from the point that the user started a particular session, what exactly did they do? So they came to the homepage, a couple of log messages were captured, a dependency was called, so on and so forth, till the point they hit an exception, and exited the scenario. Now, with this information, it empowers you as a developer to retrace or reproduce that entire failure sequence and be able to solve that situation much better. Now, let's come back to our overview page. Out of all these metrics and properties that we are just seeing here, you can set up alerts on top of any of them. Now, these alerts, you can set up your own flexible thresholds and say that if something goes beyond or below a particular threshold, you can immediately get a real-time email alert. As an example, I have an alert setup here which says if my CPU usage goes more than 10%, I want to be immediately alerted with an email. Similarly, you can set up alerts on any custom metric, any out-of-the-box metric that Application Insights is collecting for you. We talked about availability tests. You can set up URL ping tests and multi-step web tests right from the Azure portal. And all of these web tests can be run in a regular duration, typically five minutes or so, and you have an option of around 16 global points of presence with which you can test your data. And once a failure occurs, you can click on a particular failure, you can get a geographically distributed view, and you can see what has been the average response time from a particular location, and get more and more details that you would wish to diagnose further. Similar to this, if I am interested, I can drill down further into performance counters as well, things like IO, memory, process CPU, and so on, and even get some basic usage and session-level details around how many active users I have, what are the most popular page views, how many sessions have occurred, and so on. With Application Insights, you get this entire interactive experience on the Azure portal, but you also can export the data directly to an Azure Blob Storage, on top of which you can write your own custom processing engine. And we also have articles available with which you can set up and export to Power BI, to Excel, to SQL, and so on, essentially allowing you to further process and correlate with any other data sources. We just saw how easy it is to detect, triage, and diagnose issues in real-time with Application Insights. It is equally easy to get started for any web app or service that you want to monitor. If you have access to code, and can instrument and redeploy the application, you can get the full suite of telemetry data, including basic usage and session telemetry. Application Insights comes as part of Visual Studio for ASP.NET developers, integrates with the Diagnostics Hub in Visual Studio, and provides flexibility to search production monitoring data right from the IDE. You can also add our plugin to Eclipse for Java apps, or use the JavaScript snippet to monitor browser site telemetry in HTML JavaScript websites. If you want to monitor an application already in production, and do not want to redeploy, you can still get the standard performance telemetry by installing status monitor agent on your iOS server, or even with Azure Extensions for Azure VMs or Azure App Services. To re-trade, all our SDKs are open-sourced on GitHub and available for most of the popular web platforms, with which you can get started today. And that wraps up a quick overview of Application Insights. Please consult these resources for more information and do look for other connect videos diving deep into ALM and DevOps scenarios. We are looking forward to your feedback and we hope it helps you to be successful and much more productive. Thanks for watching.