You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Application maps represent the logical structure of a distributed application. Individual components of the application are determined by their "roleName" or "name" property in recorded telemetry. These components are represented as circles on the map and are referred to as "nodes." HTTP calls between nodes are represented as arrows connecting these nodes, referred to as "connectors" or "edges." The node that makes the call is the "source" of the call, and the receiving node is the "target" of the call.
14
+
13
15
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.
14
16
15
17
Application Map also features [Intelligent view](#application-map-intelligent-view-public-preview) to assist with fast service health investigations.
@@ -243,11 +245,188 @@ For the [official definitions](https://github.com/Microsoft/ApplicationInsights-
243
245
```
244
246
245
247
Alternatively, *cloud role instance* can be helpful for scenarios where a cloud role name tells you the problem is somewhere in your web front end. But you might be running multiple load-balanced servers across your web front end. Being able to drill in a layer deeper via Kusto queries and knowing if the issue is affecting all web front-end servers or instances or just one can be important.
246
-
248
+
intelligent view
247
249
A scenario when 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 specific issue.
248
250
249
251
For more information about how to override the cloud role name property with telemetry initializers, see [Add properties: ITelemetryInitializer](api-filtering-sampling.md#addmodify-properties-itelemetryinitializer).
Application Map filters allow the user to reduce the number of nodes and edges shown by applying one or more filters. These filters can be used to reduce the scope of the map, showing a smaller and more focused map.
257
+
258
+
### Creating Application Map filters
259
+
260
+
To create a filter, select the "Add filter" button in the application map's toolbar.
261
+
262
+
:::image type="content" source="media/app-map/image-1.png" alt-text="A screenshot of the Add Filter button.":::
263
+
264
+
This pops up a dialog with three sections: 1) Select filter type, 2)
265
+
Choose filter parameters, and 3) Review.
266
+
267
+
:::image type="content" source="media/app-map/image-2.png" alt-text="A screenshot with the Node Filter radio button selected.":::
268
+
269
+
:::image type="content" source="media/app-map/image-3.png" alt-text="A screenshot with the Connector Edge Filter radio button selected.":::
270
+
271
+
The first section has two options:
272
+
273
+
1. Node filter
274
+
1. Connector (edge) filter
275
+
276
+
The contents in the other sections change based on the option selected.
277
+
278
+
#### Node filters
279
+
280
+
Node filters allow the user to leave only selected nodes on the map and hide the rest. A node filter checks each node if it contains a property (its name, for example) with a value that matches a search value through a given operator. If a node is removed by a node filter, all of its connectors (edges) are also removed.
281
+
282
+
There are three parameters available for nodes:
283
+
284
+
- "**Nodes included**" allows the user to select only nodes with
285
+
matching properties or to also include source nodes, target nodes,
286
+
or both in the resulting map.
287
+
288
+
- "Nodes and sources, targets"--This means nodes that match the search parameters will be included in the resulting map, and nodes that are sources or targets for the matching node will also be included, even if they don't have property values that
289
+
match the search. Source and target nodes are collectively referred to as "Connected" nodes.
290
+
291
+
- "Nodes and sources"--Same as above, but target nodes aren't automatically included in the results.
292
+
293
+
- "Nodes and targets"--Same as above, but source nodes aren't automatically included.
294
+
295
+
- "Nodes only"--All nodes in the resulting map must have a property value that matches.
296
+
297
+
- "**Operator**" is the type of check that will be performed on each
298
+
node's property values:
299
+
300
+
- contains
301
+
302
+
- !contains (not contains)
303
+
304
+
- == (equals)
305
+
306
+
- != (not equals)
307
+
308
+
- "**Search value**" is the text that has to be contained, not
309
+
contained, equal, or not equal to a node property value. Some of the
310
+
values found in nodes that are on the map are shown in a drop-down.
311
+
Any arbitrary value can be entered by clicking "Create option ..."
312
+
in the drop-down.
313
+
314
+
For example, in the screenshot below, the filter is being configured to
315
+
select **Node(s)** that **contain(s)** the text **"-west".****Source**
316
+
and t**arget** nodes will also be included in the resulting map. In the
317
+
same screenshot, the user is able to select one of the values found in
318
+
the map or to create an option that isn't an exact match to one found
319
+
in the map.
320
+
321
+
:::image type="content" source="media/app-map/image-4.png" alt-text="A screenshot with the filter configured to select nodes that contain the text west.":::
322
+
323
+
#### Connector (edge) filters
324
+
325
+
Connector filters examine the properties of a connector to match a value. Connectors that don't match the filter are removed from the map. The same happens to nodes with no connectors left.
326
+
327
+
Connector filters require three parameters:
328
+
329
+
- "**Filter connectors by**" allows the user to choose which property
330
+
of a connector to use:
331
+
332
+
- "**Error connector (highlighted red)**" selects connectors based
333
+
on their color (red or not). A value can't be entered for this
334
+
type of filter, only an operator that is "==" or "!=" meaning
335
+
"connector with errors" and "connector without errors."
336
+
337
+
- "**Error rate**" uses the average error rate for the
338
+
connector---the number of failed calls divided by the number of
339
+
all calls---expressed as a percentage. For example, a value of
340
+
"1" would refer to 1% failed calls.
341
+
342
+
- "**Average call duration (****ms)**" uses just that: the average
343
+
duration of all calls represented by the connector, in
344
+
milliseconds. For example, a value of "1000" would refer to
345
+
calls that averaged 1 second.
346
+
347
+
- "**Calls count**" uses the total number of calls represented by
348
+
the connector.
349
+
350
+
-**"Operator"** is the comparison that will be applied between the
351
+
connector property and the value entered below. The options change:
352
+
"Error connector" has equals/not equals options; all others have
353
+
greater/less than.
354
+
355
+
-**"Value"** is the comparison value for the filter. There's only
356
+
one option for the "Error connector" filter: "Errors." Other filter
357
+
types require a numeric value and offer a drop-down with some
358
+
pre-populated entries relevant to the map.
359
+
360
+
- Some of these entries have a designation "(Pxx)" which are
361
+
percentile levels. For example, "Average call duration" filter
362
+
may have the value "200 (P90)" which indicates 90% of all
363
+
connectors (regardless of the number of calls they represent)
364
+
have less than 200 ms call duration..
365
+
366
+
- When a specific number isn't shown in the drop-down, it can be
367
+
typed, and created by clicking on "Create option." Typing "P"
368
+
shows all the percentile values in the drop-down.
369
+
370
+
### Review section
371
+
372
+
The Review section contains textual and visual descriptions of what the filter will do, which should be helpful when learning how filters work:
373
+
374
+
:::image type="content" source="media/app-map/image-5.png" alt-text="A screenshot of the Review section with node in focus.":::
375
+
376
+
:::image type="content" source="media/app-map/image-6.png" alt-text="A screenshot of the Review section depicting an average call duration greater than 42 milliseconds.":::
377
+
378
+
### Using filters in Application Map
379
+
380
+
#### Filter interactivity
381
+
382
+
After configuring a filter in the "Add filter" pop-up, select "Apply" to create the filter. Several filters can be applied, and they work sequentially, from left to right. Each filter can remove further nodes and connectors, but can't add them back to the map.
383
+
384
+
The filters show up as rounded buttons above the application map:
385
+
386
+
:::image type="content" source="media/app-map/image-7.png" alt-text="A screenshot displaying the rounded filter buttons above the application map.":::
387
+
388
+
Clicking the :::image type="content" source="media/app-map/image-8.png" alt-text="A screenshot of a rounded X button."::: on a filter will remove that filter. Clicking elsewhere on the button allows the user to edit the filter's values. As the user changes values in the filter, the new values are applied so that the map is a preview of the change. Clicking "Cancel" restores the filter as it was before editing.
389
+
390
+
:::image type="content" source="media/app-map/image-9.png" alt-text="A screenshot displaying the Configure Connector Filter section with a Cancel button.":::
391
+
392
+
### Reusing filters
393
+
394
+
Filters can be reused in two ways:
395
+
396
+
- The "Copy link" button on the toolbar above the map encodes the
397
+
filter information in the copied URL. This link can be saved in the
398
+
browser's bookmarks or shared with others. "Copy link" preserves the
399
+
duration value, but not the absolute time, so the map shown at a
400
+
later time may be different from the one observed when the link was
401
+
created.
402
+
403
+
- The dashboard pin :::image type="content" source="media/app-map/image-10.png" alt-text="A screenshot displaying the dashboard pin button."::: is located next to the title bar of the Application Map blade. This button pins the map to a dashboard, along with the filters applied to it. This action can be useful for filters that are frequently interesting. As an example, the user can pin a map with "Error connector" filter applied to it, and the dashboard view will only show nodes that have errors in their HTTP calls.
404
+
405
+
#### Filter usage scenarios
406
+
407
+
There are many filter combinations. Here are some suggestions that apply to most maps and may be useful to pin on a dashboard:
408
+
409
+
- Show only errors that appear significant by using the "Error connector" filter along with "Intelligent view":\
410
+
:::image type="content" source="media/app-map/image-11.png" alt-text="A screenshot displaying the Last 24 hours and Highlighted Errors filters.":::
411
+
:::image type="content" source="media/app-map/image-12.png" alt-text="A screenshot displaying the Intelligent Overview toggle.":::
412
+
413
+
- Hide low-traffic connectors with no errors to quickly focus on issues that have higher impact:
414
+
:::image type="content" source="media/app-map/image-13.png" alt-text="A screenshot displaying the Last 24 hours, calls greater than 876, and highlihgted errors filters.":::
415
+
416
+
- Show high-traffic connectors with high average duration to focus on potential performance issues:
417
+
:::image type="content" source="media/app-map/image-14.png" alt-text="A screenshot displaying the Last 24 hours, calls greater than 3057, and average time greater than 467 filters.":::
418
+
419
+
- Show a specific portion of a distributed application (requires suitable roleName naming convention):
420
+
:::image type="content" source="media/app-map/image-15.png" alt-text="A screenshot displaying the Last 24 hours and Connected Contains West filters.":::
421
+
422
+
- Hide a dependency type that is too noisy:
423
+
:::image type="content" source="media/app-map/image-16.png" alt-text="A screenshot displaying the Last 24 hours and Nodes Contains Storage Accounts filters.":::
424
+
425
+
- Show only connectors that have higher error rates than a specific
426
+
:::image type="content" source="media/app-map/image-17.png" alt-text="A screenshot displaying the Last 24 hours and Errors greater than 0.01 filters.":::
If you're having trouble getting Application Map to work as expected, try these steps.
@@ -358,7 +539,7 @@ Common troubleshooting questions about Intelligent view.
358
539
359
540
A dependency might appear to be failing but the model doesn't indicate it's a potential incident:
360
541
361
-
* If this dependency has been failing for a while, the model might believe it's a regular state and not highlight the edge for you. It focuses on problem-solving in RT.
542
+
* If this dependency has been failing for a while, the model might believe it's a regular state, and not highlight the edge for you. It focuses on problem-solving in RT.
362
543
* If this dependency has a minimal effect on the overall performance of the app, that can also make the model ignore it.
363
544
* If none of the above is correct, use the **Feedback** option and describe your experience. You can help us improve future model versions.
0 commit comments