Application Map: Triage Distributed Applications
Application Map helps you spot performance bottlenecks or failure hotspots across all components of your distributed application. Each node on the map represents an application component or its dependencies; and has health KPI and alerts status. You can select any component to get more detailed diagnostics, such as Application Insights events. If your app uses Azure services, you can also select Azure diagnostics, such as SQL Database Advisor recommendations.
Application Map also features an Intelligent View to assist with fast service health investigations.
What is a Component?
Components are independently deployable parts of your distributed/microservices application. Developers and operations teams have code-level visibility or access to telemetry generated by these application components.
- Components are different from "observed" external dependencies such as SQL, Event Hubs etc., which your team/organization may not have access to (code or telemetry).
- Components run on any number of server/role/container instances.
- Components can be separate Application Insights resources (even if subscriptions are different) or different roles reporting to a single Application Insights resource. The preview map experience shows the components regardless of how they're set up.
Composite Application Map
You can see the full application topology across multiple levels of related application components. Components could be different Application Insights resources, or different roles in a single resource. The app map finds components by following HTTP dependency calls made between servers with the Application Insights SDK installed.
This experience starts with progressive discovery of the components. When you first load the Application Map, a set of queries is triggered to discover the components related to this component. A button at the top-left corner will update with the number of components in your application as they're discovered.
On clicking "Update map components", the map is refreshed with all components discovered until that point. Depending on the complexity of your application, this update may take a minute to load.
If all of the components are roles within a single Application Insights resource, then this discovery step isn't required. The initial load for such an application will have all its components.

One of the key objectives with this experience is to be able to visualize complex topologies with hundreds of components.
Select any component to see related insights and go to the performance and failure triage experience for that component.

Investigate failures
Select investigate failures to launch the failures pane.


Investigate performance
To troubleshoot performance problems, select investigate performance.


Go to details
The Go to details button displays the end-to-end transaction experience, which offers views at the call stack level.


View Logs (Analytics)
To query and investigate your applications data further, select view in Logs (Analytics).


Alerts
To view active alerts and the underlying rules that cause the alerts to be triggered, select alerts.


Set or override cloud role name
Application Map uses the cloud role name property to identify the components on the map.
Follow this guidance to manually set or override cloud role names and change what gets displayed on the Application Map:
Note
The Application Insights SDK or Agent automatically adds the cloud role name property to the telemetry emitted by components in an Azure App Service environment.
Write custom TelemetryInitializer as below.
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;
namespace CustomInitializer.Telemetry
{
public class MyTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
{
//set custom role name here
telemetry.Context.Cloud.RoleName = "Custom RoleName";
telemetry.Context.Cloud.RoleInstance = "Custom RoleInstance";
}
}
}
}
ASP.NET apps: Load initializer in the active TelemetryConfiguration
In ApplicationInsights.config:
<ApplicationInsights>
<TelemetryInitializers>
<!-- Fully qualified type name, assembly name: -->
<Add Type="CustomInitializer.Telemetry.MyTelemetryInitializer, CustomInitializer"/>
...
</TelemetryInitializers>
</ApplicationInsights>
An alternate method for ASP.NET Web apps is to instantiate the initializer in code, for example in Global.aspx.cs:
using Microsoft.ApplicationInsights.Extensibility;
using CustomInitializer.Telemetry;
protected void Application_Start()
{
// ...
TelemetryConfiguration.Active.TelemetryInitializers.Add(new MyTelemetryInitializer());
}
Note
Adding initializer using ApplicationInsights.config or using TelemetryConfiguration.Active is not valid for ASP.NET Core applications.
ASP.NET Core apps: Load initializer to the TelemetryConfiguration
For ASP.NET Core applications, adding a new TelemetryInitializer is done by adding it to the Dependency Injection container, as shown below. This step is done in ConfigureServices method of your Startup.cs class.
using Microsoft.ApplicationInsights.Extensibility;
using CustomInitializer.Telemetry;
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}
Understanding cloud role name within the context of the Application Map
As far as how to think about cloud role name, it can be helpful to look at an Application Map that has multiple cloud role names present:

In the Application Map above, each of the names in green boxes are cloud role name values for different aspects of this particular distributed application. So for this app its roles consist of: Authentication, acmefrontend, Inventory Management, a Payment Processing Worker Role.
In this app, each of those cloud role names also represents a different unique Application Insights resource with their own instrumentation keys. Since the owner of this application has access to each of those four disparate Application Insights resources, Application Map is able to stitch together a map of the underlying relationships.
For the official definitions:
[Description("Name of the role the application is a part of. Maps directly to the role name in azure.")]
[MaxStringLength("256")]
705: string CloudRole = "ai.cloud.role";
[Description("Name of the instance where the application is running. Computer name for on-premises, instance name for Azure.")]
[MaxStringLength("256")]
715: string CloudRoleInstance = "ai.cloud.roleInstance";
Alternatively, cloud role instance can be helpful for scenarios where cloud role name tells you the problem is somewhere in your web front-end, but you might be running across your web front-end multiple load-balanced servers so being able to drill in a layer deeper via Kusto queries and knowing if the issue is impacting all web front-end servers/instances or just one can be important.
A scenario where you might want to override the value for cloud role instance could be if your app is running in a containerized environment. In this case, just knowing the individual server might not be enough information to locate a given issue.
For more information about how to override the cloud role name property with telemetry initializers, see Add properties: ITelemetryInitializer.
Application Map Intelligent View (public preview)
Intelligent View summary
Application Map's Intelligent View is designed to aid in service health investigations. It applies machine learning (ML) to quickly identify potential root cause(s) of issues by filtering out noise. The ML model learns from Application Map's historical behavior to identify dominant patterns and anomalies that indicate potential causes of an incident.
In large distributed applications there's always some degree of noise coming from "benign" failures, which may cause Application Map to be noisy by showing many red edges. The Intelligent View shows only the most probable causes of service failure and removes node-to-node red edges (service-to-service communication) in healthy services. It not only highlights (in red) the edges that should be investigated but also offers actionable insights for the highlighted edge.
Intelligent View benefits
- Reduces time to resolution by highlighting only failures that need to be investigated
- Provides actionable insights on why a certain red edge was highlighted
- Enables Application Map to be used for large distributed applications seamlessly. (By focusing only on the edges marked red).
Enabling Intelligent View in Application Map
Enable the Intelligent View toggle. Optionally, to change the sensitivity of the detections choose--Low, Medium, or High. See more detail on sensitivity here.
After the Intelligent View has been enabled, select one of the highlighted edges to see the "actionable insights". The insights will be visible in the panel on the right and explain why the edge was highlighted.
Begin your troubleshooting journey by selecting Investigate Failures. This button will launch the failures pane, in which you may investigate if the detected issue is the root cause. If no edges are red, the ML model didn't find potential incidents in the dependencies of your application.
Provide your feedback by pressing the Feedback button on the map.
How does Intelligent View determine where red edges are highlighted?
Intelligent View uses the patented AIOps machine learning model to highlight what's truly important in an Application Map.
A non-exhaustive list of example considerations includes:
- Failure rates
- Request counts
- Durations
- Anomalies in the data
- Types of dependency
For comparison, the normal view only utilizes the raw failure rate.
How does Intelligent View sensitivity work?
Intelligent View sensitivity adjusts the probability that a service issue will be detected.
Adjust sensitivity to achieve the desired confidence level in highlighted edges.
| Sensitivity Setting | Result |
|---|---|
| High | Fewer edges will be highlighted. |
| Medium (default) | A balanced number of edges will be highlighted. |
| Low | More edges will be highlighted. |
Limitations of Intelligent View
- Large distributed applications may take a minute to load Intelligent View.
- Timeframes of up to seven days are supported.
We would love to hear your feedback. (Portal feedback)
Troubleshooting
If you're having trouble getting Application Map to work as expected, try these steps:
General
Make sure you're using an officially supported SDK. Unsupported/community SDKs might not support correlation.
Refer to this article for a list of supported SDKs.
Upgrade all components to the latest SDK version.
If you're using Azure Functions with C#, upgrade to Functions V2.
Confirm cloud role name is correctly configured.
If you're missing a dependency, make sure it's in the list of auto-collected dependencies. If not, you can still track it manually with a track dependency call.
Too many nodes on the map
Application Map constructs an application node for each unique cloud role name present in your request telemetry. In addition, a dependency node is constructed for each unique combination of type, target, and cloud role name.
If there are more than 10,000 nodes in your telemetry, Application Map won't be able to fetch all the nodes and links, so your map will be incomplete. If this scenario occurs, a warning message will appear when viewing the map.
Application Map only supports up to 1000 separate ungrouped nodes rendered at once. Application Map reduces visual complexity by grouping dependencies together that have the same type and callers.
If your telemetry has too many unique cloud role names or too many dependency types, that grouping will be insufficient, and the map will be unable to render.
To fix this issue, you'll need to change your instrumentation to properly set the cloud role name, dependency type, and dependency target fields.
Dependency target should represent the logical name of a dependency. In many cases, it's equivalent to the server or resource name of the dependency. For example, If there are HTTP dependencies, it's set to the hostname. It shouldn't contain unique IDs or parameters that change from one request to another.
Dependency type should represent the logical type of a dependency. For example, HTTP, SQL or Azure Blob are typical dependency types. It shouldn't contain unique IDs.
The purpose of cloud role name is described in the above section.
Intelligent View
Why isn't this edge highlighted, even with low sensitivity?
Try these steps if a dependency appears to be failing but the model doesn't indicate it's a potential incident:
- If this dependency has been failing for a while now, the model might believe it's a regular state and not highlight the edge for you. It focuses on problem solving in RT.
- If this dependency has a minimal effect on the overall performance of the app that can also make the model ignore it.
- If none of the above is correct, use the Feedback option and describe your experience--you can help us improve future model versions.
Why is the edge highlighted?
In a case where an edge is highlighted the explanation from the model should point you to the most important features that made the model give this dependency a high probability score. The recommendation isn't based solely on failures but other indicators like unexpected latency in dominant flows.
Intelligent View doesn't load
Follow these steps if Intelligent View doesn't load.
- Set the configured time frame to six days or less.
- The
Try previewbutton must be selected to opt in.
Intelligent View takes a long time to load
Avoid selecting the Update Map Component.
Enable Intelligent View only for a single Application Insight resource.
Portal feedback
To provide feedback, use the feedback option.

Next steps
- To learn more about how correlation works in Application Insights consult the telemetry correlation article.
- The end-to-end transaction diagnostic experience correlates server-side telemetry from across all your Application Insights monitored components into a single view.
- For advanced correlation scenarios in ASP.NET Core and ASP.NET, consult the track custom operations article.
Povratne informacije
Pošalјite i prikažite povratne informacije za