diff --git a/articles/azure-monitor/alerts/smart-detection-performance.md b/articles/azure-monitor/alerts/smart-detection-performance.md index d38822a9aa..a103cb5b34 100644 --- a/articles/azure-monitor/alerts/smart-detection-performance.md +++ b/articles/azure-monitor/alerts/smart-detection-performance.md @@ -44,7 +44,7 @@ The notifications include diagnostic information. Here's an example: 2. **Scope**. Is the problem affecting all traffic, or just some pages? Is it restricted to particular browsers or locations? This information can be obtained from the notification. 3. **Diagnose**. Often, the diagnostic information in the notification will suggest the nature of the problem. For example, if response time slows down when request rate is high, it may indicate that your server or dependencies are beyond their capacity. - Otherwise, open the Performance pane in Application Insights. You'll find there [Profiler](../profiler/profiler.md) data. If exceptions are thrown, you can also try the [snapshot debugger](../snapshot-debugger/snapshot-debugger.md). + Otherwise, open the **Performance** pane in Application Insights where you find [.NET Profiler](../profiler/profiler.md) data. If exceptions are thrown, you can also try the [Snapshot Debugger](../snapshot-debugger/snapshot-debugger.md). ## Configure Email Notifications @@ -121,7 +121,7 @@ The response time degradation notification tells you: * Count of this operation requests on the day of the detection and seven days before. * Correlation between degradation in this operation and degradations in related dependencies. * Links to help you diagnose the problem. - * Profiler traces can help you view where operation time is spent. The link is available if Profiler trace examples exist for this operation. + * .NET Profiler traces can help you view where operation time is spent. The link is available if .NET Profiler trace examples exist for this operation. * Performance reports in Metric Explorer, where you can slice and dice time range/filters for this operation. * Search for this call to view specific call properties. * Failure reports - If count > 1, it means that there were failures in this operation that might have contributed to performance degradation. @@ -169,8 +169,8 @@ Modify the time range and filters to explore the telemetry. ## Next steps These diagnostic tools help you inspect the telemetry from your app: -* [Profiler](../profiler/profiler.md) -* [snapshot debugger](../snapshot-debugger/snapshot-debugger.md) +* [Enable the .NET Profiler for Azure App Service apps](../profiler/profiler.md) +* [Snapshot Debugger](../snapshot-debugger/snapshot-debugger.md) * [Analytics](../logs/log-analytics-tutorial.md) * [Analytics smart diagnostics](../logs/log-query-overview.md) diff --git a/articles/azure-monitor/app/app-insights-overview.md b/articles/azure-monitor/app/app-insights-overview.md index 1314a9b34e..325db667f2 100644 --- a/articles/azure-monitor/app/app-insights-overview.md +++ b/articles/azure-monitor/app/app-insights-overview.md @@ -44,7 +44,7 @@ Application Insights provides many experiences to enhance the performance, relia ### Code analysis -* [Profiler](../profiler/profiler-overview.md): Capture, identify, and view performance traces for your application. +* [.NET Profiler](../profiler/profiler-overview.md): Capture, identify, and view performance traces for your application. * [Code optimizations](../insights/code-optimizations.md): Harness AI to create better and more efficient applications. * [Snapshot debugger](../snapshot-debugger/snapshot-debugger.md): Automatically collect debug snapshots when exceptions occur in .NET application diff --git a/articles/azure-monitor/app/asp-net-dependencies.md b/articles/azure-monitor/app/asp-net-dependencies.md index d0f77aac3d..850b0c60ae 100644 --- a/articles/azure-monitor/app/asp-net-dependencies.md +++ b/articles/azure-monitor/app/asp-net-dependencies.md @@ -150,7 +150,7 @@ Select the **Samples** button at the bottom right. Then select a sample to see t ### Profile your live site -The [Application Insights profiler](../../azure-monitor/app/profiler.md) traces HTTP calls to your live site and shows you the functions in your code that took the longest time. +The [.NET Profiler](../../azure-monitor/app/profiler.md) traces HTTP calls to your live site and shows you the functions in your code that took the longest time. ## Failed requests diff --git a/articles/azure-monitor/app/azure-ad-authentication.md b/articles/azure-monitor/app/azure-ad-authentication.md index d791e6a4cf..dc075575e9 100644 --- a/articles/azure-monitor/app/azure-ad-authentication.md +++ b/articles/azure-monitor/app/azure-ad-authentication.md @@ -34,7 +34,7 @@ The following Software Development Kits (SDKs) and features are unsupported for * [ApplicationInsights JavaScript web SDK](javascript.md). * [Application Insights OpenCensus Python SDK](/previous-versions/azure/azure-monitor/app/opencensus-python) with Python version 3.4 and 3.5. * [AutoInstrumentation for Python on Azure App Service](azure-web-apps-python.md) -* [Profiler](profiler-overview.md). +* [Application Insights Profiler for .NET](profiler-overview.md). diff --git a/articles/azure-monitor/app/codeless-app-service.md b/articles/azure-monitor/app/codeless-app-service.md index 48fd47a489..fa7d523e11 100644 --- a/articles/azure-monitor/app/codeless-app-service.md +++ b/articles/azure-monitor/app/codeless-app-service.md @@ -431,7 +431,7 @@ In order to enable telemetry collection with Application Insights, only the foll | XDT_MicrosoftApplicationInsights_Java | Flag to control if Java agent is included. | `0` or `1` (only applicable in Windows). | > [!NOTE] -> Profiler and Snapshot Debugger aren't available for Java applications. +> Snapshot Debugger isn't available for Java applications. ## [Node.js](#tab/nodejs) @@ -445,7 +445,7 @@ In order to enable telemetry collection with Application Insights, only the foll | XDT_MicrosoftApplicationInsights_NodeJS | Flag to control if Node.js agent is included. | `0` or `1` (only applicable in Windows). | > [!NOTE] -> Profiler and Snapshot Debugger aren't available for Node.js applications. +> Snapshot Debugger isn't available for Node.js applications. ## [Python (Preview)](#tab/python) @@ -459,7 +459,7 @@ In order to enable telemetry collection with Application Insights, only the foll | ApplicationInsightsAgent_EXTENSION_VERSION | Main extension, which controls runtime monitoring. | `~3` | > [!NOTE] -> Profiler and Snapshot Debugger aren't available for Python applications. +> Snapshot Debugger isn't available for Python applications. --- @@ -951,7 +951,7 @@ Release notes for Python will show here. ## Next steps -* [Run Profiler](./profiler.md) on your live app. +* [Enable the .NET Profiler for Azure App Service apps](./profiler.md) on your live app. * [Enable Azure diagnostics](../agents/diagnostics-extension-to-application-insights.md) to be sent to Application Insights. * [Monitor service health metrics](../data-platform.md) to make sure your service is available and responsive. * [Receive alert notifications](../alerts/alerts-overview.md) whenever operational events happen or metrics cross a threshold. diff --git a/articles/azure-monitor/app/connection-strings.md b/articles/azure-monitor/app/connection-strings.md index 3d53a8e84b..aebefdac71 100644 --- a/articles/azure-monitor/app/connection-strings.md +++ b/articles/azure-monitor/app/connection-strings.md @@ -80,7 +80,7 @@ For more information, see [Regions that require endpoint modification](./create- * [Telemetry Ingestion](./app-insights-overview.md): `dc` * [Live Metrics](./live-stream.md): `live` -* [Profiler](./profiler-overview.md): `profiler` +* [Profiler for .NET](./profiler-overview.md): `profiler` * [Snapshot](./snapshot-debugger.md): `snapshot` ## Connection string examples @@ -97,8 +97,8 @@ In this example, the connection string specifies the endpoint suffix and the SDK * Instrumentation key: 00000000-0000-0000-0000-000000000000 * The regional service Uniform Resource Identifiers (URIs) are based on the provided endpoint suffix: * Ingestion: `https://dc.ai.contoso.com` - * Live metrics: `https://live.ai.contoso.com` - * Profiler: `https://profiler.ai.contoso.com` + * Live Metrics: `https://live.ai.contoso.com` + * Profiler for .NET: `https://profiler.ai.contoso.com` * Debugger: `https://snapshot.ai.contoso.com` ### Connection string with explicit endpoint overrides @@ -111,8 +111,8 @@ In this example, the connection string specifies explicit overrides for every se * Instrumentation key: 00000000-0000-0000-0000-000000000000 * The regional service URIs are based on the explicit override values: * Ingestion: `https://custom.com:111/` - * Live metrics: `https://custom.com:222/` - * Profiler: `https://custom.com:333/` + * Live Metrics: `https://custom.com:222/` + * Profiler for .NET: `https://custom.com:333/` * Debugger: `https://custom.com:444/` ### Connection string with an explicit region diff --git a/articles/azure-monitor/app/create-workspace-resource.md b/articles/azure-monitor/app/create-workspace-resource.md index d3833762b1..1ee5b82d1f 100644 --- a/articles/azure-monitor/app/create-workspace-resource.md +++ b/articles/azure-monitor/app/create-workspace-resource.md @@ -22,7 +22,7 @@ Workspace-based Application Insights integrates with Azure Monitor and Log Analy - [Customer-managed key](../logs/customer-managed-keys.md) encrypts your data at rest with keys only you access. - [Azure Private Link](../logs/private-link-security.md) securely connects Azure PaaS services to your virtual network using private endpoints. -- [Bring your own storage (BYOS) for Profiler and Snapshot Debugger](./profiler-bring-your-own-storage.md) lets you manage data from Application Insights [Profiler](../profiler/profiler-overview.md) and [Snapshot Debugger](../snapshot-debugger/snapshot-debugger.md) with policies on encryption, lifetime, and network access. +- [Bring your own storage (BYOS) for .NET Profiler and Snapshot Debugger](./profiler-bring-your-own-storage.md) lets you manage data from [.NET Profiler](../profiler/profiler-overview.md) and [Snapshot Debugger](../snapshot-debugger/snapshot-debugger.md) with policies on encryption, lifetime, and network access. - [Commitment tiers](../logs/cost-logs.md#commitment-tiers) offer up to a 30% saving over pay-as-you-go pricing. - Log Analytics streaming processes data more quickly. diff --git a/articles/azure-monitor/app/java-standalone-profiler.md b/articles/azure-monitor/app/java-standalone-profiler.md index 9a822ba41c..349d36bcd7 100644 --- a/articles/azure-monitor/app/java-standalone-profiler.md +++ b/articles/azure-monitor/app/java-standalone-profiler.md @@ -1,18 +1,18 @@ --- -title: Java Profiler for Azure Monitor Application Insights -description: How to configure the Azure Monitor Application Insights for Java Profiler +title: Azure Monitor Application Insights Profiler for Java +description: How to configure the Azure Monitor Application Insights Profiler for Java ms.topic: conceptual ms.date: 11/15/2023 ms.devlang: java ms.custom: devx-track-java, devx-track-extended-java --- -# Java Profiler for Azure Monitor Application Insights +# Azure Monitor Application Insights Profiler for Java > [!NOTE] > The Java Profiler feature is in preview, starting from 3.4.0. -The Application Insights Java Profiler provides a system for: +The Java Profiler provides a system for: > [!div class="checklist"] > - Generating JDK Flight Recorder (JFR) profiles on demand from the Java Virtual Machine (JVM). @@ -20,7 +20,7 @@ The Application Insights Java Profiler provides a system for: ## Overview -The Application Insights Java profiler uses the JFR profiler provided by the JVM to record profiling data, allowing users to download the JFR recordings at a later time and analyze them to identify the cause of performance issues. +The Java Profiler uses the JFR profiler provided by the JVM to record profiling data, allowing users to download the JFR recordings at a later time and analyze them to identify the cause of performance issues. This data is gathered on demand when trigger conditions are met. The available triggers are thresholds over CPU usage, Memory consumption, and Request (service-level agreement triggers). Request triggers monitor Spans generated by OpenTelemetry and allow the user to configure service-level agreement (SLA) requirements over the duration of those Spans. @@ -31,11 +31,11 @@ When a threshold is reached, a profile of the configured type and duration is ga The flags that are no longer available are: -- jdk.JVMInformation -- jdk.InitialSystemProperty -- jdk.OSInformation -- jdk.InitialEnvironmentVariable -- jdk.SystemProcess +* jdk.JVMInformation +* jdk.InitialSystemProperty +* jdk.OSInformation +* jdk.InitialEnvironmentVariable +* jdk.SystemProcess However, you should review all enabled flags to ensure that profiles don't contain sensitive data. @@ -43,9 +43,10 @@ See [Configuring Profile Contents](#configuring-profile-contents) on setting a c ## Prerequisites -- JVM with Java Flight Recorder (JFR) capability - - Java 8 update 262+ - - Java 11+ +* JVM with Java Flight Recorder (JFR) capability + + * Java 8 update 262+ + * Java 11+ > [!WARNING] > OpenJ9 JVM is not supported @@ -54,16 +55,16 @@ See [Configuring Profile Contents](#configuring-profile-contents) on setting a c ### Triggers -For more detailed description of the various triggers available, see [profiler overview](../profiler/profiler-overview.md). +For more detailed description of the various triggers available, see [Profile production applications in Azure with Application Insights Profiler for .NET](../profiler/profiler-overview.md). -The ApplicationInsights Java Agent monitors CPU, memory, and request duration such as a business transaction. If it breaches a configured threshold, a profile is triggered. +The ApplicationInsights Java Agent monitors CPU, memory, and request duration such as a business transaction. If it breaches a configured threshold, a profile is triggered. #### Profile now -A **Profile now** button is located in the profiler user interface (see [profiler settings](../profiler/profiler-settings.md)). Selecting this button immediately requests a profile in all agents that are attached to the Application Insights instance. The default profiling duration is two minutes. You can change it by overriding `periodicRecordingDurationSeconds` (see [Configuration file](#configuration-file)). +A **Profile now** button is located in the profiler user interface (see [Configure Application Insights Profiler for .NET](../profiler/profiler-settings.md)). Selecting this button immediately requests a profile in all agents that are attached to the Application Insights instance. The default profiling duration is two minutes. You can change it by overriding `periodicRecordingDurationSeconds` (see [Configuration file](#configuration-file)). > [!WARNING] -> Invoking Profile now will enable the profiler feature, and Application Insights will apply default CPU and memory SLA triggers. When your application breaches those SLAs, Application Insights will gather Java profiles. If you wish to disable profiling later on, you can do so within the trigger menu shown in [Installation](#installation). +> Invoking **Profile now** will enable the profiler feature, and Application Insights will apply default CPU and memory SLA triggers. When your application breaches those SLAs, Application Insights will gather Java profiles. If you wish to disable profiling later on, you can do so within the trigger menu shown in [Installation](#installation). #### CPU @@ -79,15 +80,15 @@ Occupancy is evaluated after a tenured collection is performed. The maximum size For instance, take the following scenario: -- The Java heap could grow to a maximum of 1,024 mb. -- The Tenured Generation could grow to 90% of the heap. -- The maximum possible size of tenured would be 922 mb. -- Your threshold was set via the user interface to 75%, therefore your threshold would be 75% of 922 mb, 691 mb. +* The Java heap could grow to a maximum of 1,024 mb. +* The Tenured Generation could grow to 90% of the heap. +* The maximum possible size of tenured would be 922 mb. +* Your threshold was set via the user interface to 75%, therefore your threshold would be 75% of 922 mb, 691 mb. In this scenario, a profile occurs in the following circumstances: -- Full garbage collection is executed -- The Tenured regions occupancy is above 691 mb after collection +* Full garbage collection is executed +* The Tenured regions occupancy is above 691 mb after collection ### Request @@ -95,13 +96,13 @@ SLA triggers are based on OpenTelemetry, and they initiate a profile if certain Each individual trigger configuration is formed as follows: -- `Name` - A unique identifier for the trigger. -- `Filter` - Filters the requests of interest for the trigger. -- `Aggregation` - Calculates the ratio of requests that breached a given threshold. - - `Threshold` - A minimum value (in milliseconds) at which a request breach is determined to occur. - - `Minimum samples` - The minimum number of samples that must be collected for the aggregation to produce data, this setting is to prevent triggering off of small sample sizes. - - `Window` - Rolling time window (in milliseconds). -- `Threshold` - The threshold value (percentage) applied to the aggregation output. If this value is exceeded, a profile is initiated. +* `Name` - A unique identifier for the trigger. +* `Filter` - Filters the requests of interest for the trigger. +* `Aggregation` - Calculates the ratio of requests that breached a given threshold. + * `Threshold` - A minimum value (in milliseconds) at which a request breach is determined to occur. + * `Minimum samples` - The minimum number of samples that must be collected for the aggregation to produce data, this setting is to prevent triggering off of small sample sizes. + * `Window` - Rolling time window (in milliseconds). +* `Threshold` - The threshold value (percentage) applied to the aggregation output. If this value is exceeded, a profile is initiated. For instance, the following scenario would trigger a profile if: more than 75% of requests to a specific endpoint (/users/.*) take longer than 30 ms within a 60-second window, when at least 100 samples were gathered. @@ -111,28 +112,30 @@ For instance, the following scenario would trigger a profile if: more than 75% o The following steps guide you through enabling the profiling component on the agent and configuring resource limits that trigger a profile if breached. -1. Configure the resource thresholds that cause a profile to be collected: +Configure the resource thresholds that cause a profile to be collected: - 1. Browse to the Performance -> Profiler section of the Application Insights instance. - :::image type="content" source="./media/java-standalone-profiler/performance-blade.png" alt-text="Screenshot of the link to open performance pane." lightbox="media/java-standalone-profiler/performance-blade.png"::: - :::image type="content" source="./media/java-standalone-profiler/profiler-button.png" alt-text="Screenshot of the Profiler button from the Performance pane." lightbox="media/java-standalone-profiler/profiler-button.png"::: - - 2. Select "Triggers" +1. Browse to the **Performance** -> **Profiler** section of the Application Insights instance. + + :::image type="content" source="./media/java-standalone-profiler/performance-blade.png" alt-text="Screenshot of the link to open performance pane." lightbox="media/java-standalone-profiler/performance-blade.png"::: + :::image type="content" source="./media/java-standalone-profiler/profiler-button.png" alt-text="Screenshot of the Profiler button from the Performance pane." lightbox="media/java-standalone-profiler/profiler-button.png"::: - 3. Configure the required CPU, Memory, or Request triggers (if enabled) and select Apply. - :::image type="content" source="./media/java-standalone-profiler/trigger-settings.png" alt-text="Screenshot of trigger settings"::: +1. Select **Triggers** + +1. Configure the required CPU, Memory, or Request triggers (if enabled) and select **Apply**. + + :::image type="content" source="./media/java-standalone-profiler/trigger-settings.png" alt-text="Screenshot of trigger settings."::: > [!WARNING] -> The Java profiler does not support the "Sampling" trigger. Configuring this will have no effect. +> The Java Profiler does not support the "Sampling" trigger. Configuring this will have no effect. After these steps are completed, the agent will monitor the resource usage of your process and trigger a profile when the threshold is exceeded. When a profile is triggered and completed, it's viewable from the -Application Insights instance within the Performance -> Profiler section. From that screen the profile can be downloaded, once download the JFR recording file can be opened and analyzed within a tool of your choosing, for example Oracle JDK Mission Control (JMC). +Application Insights instance within the **Performance** -> **Profiler** section. From that screen the profile can be downloaded, once download the JFR recording file can be opened and analyzed within a tool of your choosing, for example Oracle JDK Mission Control (JMC). :::image type="content" source="./media/java-standalone-profiler/configure-blade-inline.png" alt-text="Screenshot of profiler page features and settings." lightbox="media/java-standalone-profiler/configure-blade-inline.png"::: ### Configuration -Configuration of the profiler triggering settings, such as thresholds and profiling periods, are set within the ApplicationInsights UI under the Performance, Profiler, Triggers UI as described in [Installation](#installation). +Configuration of the Java Profiler triggering settings, such as thresholds and profiling periods, are set in the Application Insights UI under **Performance** > **Profiler** > **Triggers**, as described in [Installation](#installation). Additionally, many parameters can be configured using environment variables and the `applicationinsights.json` configuration file. @@ -144,7 +147,8 @@ Profiles can be generated/edited in the JDK Mission Control (JMC) user interface ### Environment variables -- `APPLICATIONINSIGHTS_PREVIEW_PROFILER_ENABLED`: boolean (default: `true`) +* `APPLICATIONINSIGHTS_PREVIEW_PROFILER_ENABLED`: boolean (default: `true`) + Enables/disables the profiling feature. By default the feature is enabled within the agent (since agent 3.4.9). However, even though this feature is enabled within the agent, profiles aren't gathered unless enabled within the Portal as described in [Installation](#installation). ### Configuration file @@ -164,73 +168,79 @@ Example configuration: } } } - ``` -`memoryTriggeredSettings` This configuration is used if a memory profile is requested. This value can be one of: +`memoryTriggeredSettings` This configuration is used if a memory profile is requested. +This value can be one of: -- `profile-without-env-data` (default value). A profile with certain sensitive events disabled, see Warning section for details. -- `profile`. Uses the `profile.jfc` configuration that ships with JFR. -- A path to a custom jfc configuration file on the file system, for example, `/tmp/myconfig.jfc`. +* `profile-without-env-data` (default value). A profile with certain sensitive events disabled, see Warning section for details. +* `profile`. Uses the `profile.jfc` configuration that ships with JFR. +* A path to a custom jfc configuration file on the file system, for example, `/tmp/myconfig.jfc`. `cpuTriggeredSettings` This configuration is used if a cpu profile is requested. This value can be one of: -- `profile-without-env-data` (default value). A profile with certain sensitive events disabled, see Warning section for details. -- `profile`. Uses the `profile.jfc` jfc configuration that ships with JFR. -- A path to a custom jfc configuration file on the file system, for example, `/tmp/myconfig.jfc`. +* `profile-without-env-data` (default value). A profile with certain sensitive events disabled, see Warning section for details. +* `profile`. Uses the `profile.jfc` jfc configuration that ships with JFR. +* A path to a custom jfc configuration file on the file system, for example, `/tmp/myconfig.jfc`. `manualTriggeredSettings` This configuration is used if a manual profile is requested. This value can be one of: -- `profile-without-env-data` (default value). A profile with certain sensitive events disabled, see - Warning section for details. -- `profile`. Uses the `profile.jfc` jfc configuration that ships with JFR. -- A path to a custom jfc configuration file on the file system, for example, `/tmp/myconfig.jfc`. +* `profile-without-env-data` (default value). A profile with certain sensitive events disabled, see Warning section for details. +* `profile`. Uses the `profile.jfc` jfc configuration that ships with JFR. +* A path to a custom jfc configuration file on the file system, for example, `/tmp/myconfig.jfc`. `enableRequestTriggering` Whether JFR profiling should be triggered based on request configuration. This value can be one of: -- `true` Profiling is triggered if a request trigger threshold is breached. -- `false` (default value). Request configuration doesn't trigger profiling. +* `true` Profiling is triggered if a request trigger threshold is breached. +* `false` (default value). Request configuration doesn't trigger profiling. `periodicRecordingDurationSeconds` Profiling recording duration in seconds when a profiling session is started by using the **Profile now** button. The default value is `120`. ## Frequently asked questions ### What is Azure Monitor Application Insights Java Profiling? -Azure Monitor Application Insights Java profiler uses Java Flight Recorder (JFR) to profile your application using a customized configuration. -### What is Java Flight Recorder? +The Java Profiler uses Java Flight Recorder (JFR) to profile your application using a customized configuration. + +### What is Java Flight Recorder? + Java Flight Recorder (JFR) is a tool for collecting profiling data of a running Java application. JFR is integrated into the Java Virtual Machine (JVM) and is used for troubleshooting performance issues. Learn more about [Java SE JFR Runtime](https://docs.oracle.com/javacomponents/jmc-5-4/jfr-runtime-guide/about.htm#JFRUH170). ### What is the price and/or licensing fee implications for enabling App Insights Java Profiling? + Java Profiling is a free feature with Application Insights. [Azure Monitor Application Insights pricing](https://azure.microsoft.com/pricing/details/monitor/) is based on ingestion cost. ### Which Java profiling information is collected? -Profiling data collected by the JFR includes: method and execution profiling data, garbage collection data, and lock profiles. + +Profiling data collected by the JFR includes: method and execution profiling data, garbage collection data, and lock profiles. ### How can I use App Insights Java Profiling and visualize the data? + JFR recording can be viewed and analyzed with your preferred tool, for example [Java Mission Control (JMC)](https://jdk.java.net/jmc/8/). -### Are performance diagnosis and fix recommendations provided with App Insights Java Profiling? +### Are performance diagnosis and fix recommendations provided with App Insights Java Profiling? + 'Performance diagnostics and recommendations' is a new feature that is available soon as Application Insights Java Diagnostics. You can [sign up](https://aka.ms/JavaO11y) to preview this feature. JFR recording can be viewed with Java Mission Control (JMC). -### What's the difference between on-demand and automatic Java Profiling in App Insights? +### What's the difference between on-demand and automatic Java Profiling in App Insights? -On-demand is user triggered profiling in real-time whereas automatic profiling is with preconfigured triggers. +On-demand is user triggered profiling in real-time whereas automatic profiling is with preconfigured triggers. -Use [Profile Now](../profiler/profiler-settings.md) for the on-demand profiling option. [Profile Now](../profiler/profiler-settings.md) immediately profiles all agents that are attached to the Application Insights instance. +Use [Profile Now](../profiler/profiler-settings.md) for the on-demand profiling option. [Profile Now](../profiler/profiler-settings.md) immediately profiles all agents that are attached to the Application Insights instance. -Automated profiling is triggered a breach in a resource threshold. +Automated profiling is triggered by reaching a resource threshold. ### Which Java profiling triggers can I configure? -Application Insights Java Agent currently supports monitoring of CPU and memory consumption. CPU threshold is configured as a percentage of all available cores on the machine. Memory is the current Tenured memory region (OldGen) occupancy against the maximum possible size of the region. -### What are the required prerequisites to enable Java Profiling? +Application Insights Java Agent currently supports monitoring of CPU and memory consumption. CPU threshold is configured as a percentage of all available cores on the machine. Memory is the current Tenured memory region (OldGen) occupancy against the maximum possible size of the region. + +### What are the required prerequisites to enable Java Profiling? Review the [Prerequisites](#prerequisites) at the top of this article. -### Can I use Java Profiling for microservices application? +### Can I use Java Profiling for microservices application? Yes, you can profile a JVM running microservices using the JFR. diff --git a/articles/azure-monitor/app/live-stream.md b/articles/azure-monitor/app/live-stream.md index 6edc7ea6db..3f08e3b6bd 100644 --- a/articles/azure-monitor/app/live-stream.md +++ b/articles/azure-monitor/app/live-stream.md @@ -9,7 +9,7 @@ ms.devlang: csharp # Live metrics: Monitor and diagnose with 1-second latency -Use live metrics from [Application Insights](./app-insights-overview.md) to monitor web applications. Select and filter metrics and performance counters to watch in real time and inspect stack traces from sample failed requests and exceptions. The live metrics experience is a powerful diagnostic tool when combined with [Profiler](./profiler.md) and [Snapshot Debugger](./snapshot-debugger.md). +Use live metrics from [Application Insights](./app-insights-overview.md) to monitor web applications. Select and filter metrics and performance counters to watch in real time and inspect stack traces from sample failed requests and exceptions. The live metrics experience is a powerful diagnostic tool when combined with [.NET Profiler](./profiler-overview.md) and [Snapshot Debugger](./snapshot-debugger.md). With live metrics, you can: @@ -193,5 +193,5 @@ If you open live metrics, the SDKs switch to a higher frequency mode and send ne * [Monitor usage with Application Insights](./usage.md) * [Use Diagnostic Search](./transaction-search-and-diagnostics.md?tabs=transaction-search) -* [Profiler](./profiler.md) +* [Application Insights Profiler for .NET](./profiler-overview.md) * [Snapshot Debugger](./snapshot-debugger.md) diff --git a/articles/azure-monitor/app/opentelemetry-help-support-feedback.md b/articles/azure-monitor/app/opentelemetry-help-support-feedback.md index 49b68574ee..891e8c6c5e 100644 --- a/articles/azure-monitor/app/opentelemetry-help-support-feedback.md +++ b/articles/azure-monitor/app/opentelemetry-help-support-feedback.md @@ -109,7 +109,7 @@ The following chart breaks out OpenTelemetry feature support for each language. | Filter requests, dependencies, logs, and exceptions by anonymous user ID and synthetic source | :x: | :x: | :x: | :white_check_mark: | | Filter dependencies, logs, and exceptions by operation name | :x: | :x: | :x: | :white_check_mark: | | [Adaptive sampling](../app/sampling.md#adaptive-sampling) | :x: | :x: | :x: | :white_check_mark: | -| [Profiler](../profiler/profiler-overview.md) | :x: | :x: | :x: | :warning: | +| [.NET Profiler](../profiler/profiler-overview.md) | :x: | :x: | :x: | :warning: | | [Snapshot Debugger](../snapshot-debugger/snapshot-debugger.md) | :x: | :x: | :x: | :x: | **Key** diff --git a/articles/azure-monitor/app/transaction-search-and-diagnostics.md b/articles/azure-monitor/app/transaction-search-and-diagnostics.md index dd9c0f5441..c2e4227c90 100644 --- a/articles/azure-monitor/app/transaction-search-and-diagnostics.md +++ b/articles/azure-monitor/app/transaction-search-and-diagnostics.md @@ -210,15 +210,15 @@ This collapsible pane shows the other results that meet the filter criteria. Sel :::image type="content" source="media/search-and-transaction-diagnostics/searchResults.png" lightbox="media/search-and-transaction-diagnostics/searchResults.png" alt-text="Screenshot that shows search results."::: -## Profiler and Snapshot Debugger +## .NET Profiler and Snapshot Debugger -[Application Insights Profiler](./profiler.md) or [Snapshot Debugger](snapshot-debugger.md) help with code-level diagnostics of performance and failure issues. With this experience, you can see Profiler traces or snapshots from any component with a single selection. +[.NET Profiler](./profiler-overview.md) or [Snapshot Debugger](snapshot-debugger.md) help with code-level diagnostics of performance and failure issues. With this experience, you can see .NET Profiler traces or snapshots from any component with a single selection. -If you can't get Profiler working, contact serviceprofilerhelp\@microsoft.com. +If you can't get the .NET Profiler working, contact serviceprofilerhelp\@microsoft.com. If you can't get Snapshot Debugger working, contact snapshothelp\@microsoft.com. -:::image type="content" source="media/search-and-transaction-diagnostics/profilerTraces.png" lightbox="media/search-and-transaction-diagnostics/profilerTraces.png" alt-text="Screenshot that shows Profiler integration."::: +:::image type="content" source="media/search-and-transaction-diagnostics/profilerTraces.png" lightbox="media/search-and-transaction-diagnostics/profilerTraces.png" alt-text="Screenshot that shows .NET Profiler integration."::: ## Frequently asked questions @@ -255,7 +255,7 @@ In these scenarios, you can use Automatic Route Tracking to automatically create Time not explained in the Gantt chart is time that isn't covered by a tracked dependency. This issue can occur because external calls weren't instrumented, either automatically or manually. It can also occur because the time taken was in process rather than because of an external call. -If all calls were instrumented, in process is the likely root cause for the time spent. A useful tool for diagnosing the process is the [Application Insights profiler](./profiler.md). +If all calls were instrumented, in process is the likely root cause for the time spent. A useful tool for diagnosing the process is the [.NET Profiler](./profiler-overview.md). ### What if I see the message ***Error retrieving data*** while navigating Application Insights in the Azure portal? diff --git a/articles/azure-monitor/best-practices-data-collection.md b/articles/azure-monitor/best-practices-data-collection.md index 558c40b42e..4dab2121a3 100644 --- a/articles/azure-monitor/best-practices-data-collection.md +++ b/articles/azure-monitor/best-practices-data-collection.md @@ -123,11 +123,11 @@ Availability tests in Application Insights are recurring tests that monitor the See [Monitor the availability of any website](/previous-versions/azure/azure-monitor/app/monitor-web-app-availability) for a summary of the different kinds of tests and information on creating them. -### Configure Profiler +### Configure the Application Insights Profiler for .NET -Profiler in Application Insights provides performance traces for .NET applications. It helps you identify the "hot" code path that takes the longest time when it's handling a particular web request. The process for configuring the profiler varies depending on the type of application. +The .NET Profiler provides performance traces for .NET applications. It helps you identify the "hot" code path that takes the longest time when it's handling a particular web request. The process for configuring the .NET Profiler varies depending on the type of application. -See [Profile production applications in Azure with Application Insights](app/profiler-overview.md) for information on configuring Profiler. +See [Profile production applications in Azure with Application Insights](app/profiler-overview.md) for information on configuring the .NET Profiler. ### Configure Snapshot Debugger diff --git a/articles/azure-monitor/containers/monitor-kubernetes.md b/articles/azure-monitor/containers/monitor-kubernetes.md index 4afe51308c..0d62717be0 100644 --- a/articles/azure-monitor/containers/monitor-kubernetes.md +++ b/articles/azure-monitor/containers/monitor-kubernetes.md @@ -311,8 +311,8 @@ Following are common scenarios for monitoring your application. **Application performance**
- Use the **Performance** view in Application insights to view the performance of different operations in your application. -- Use [Profiler](../profiler/profiler-overview.md) to capture and view performance traces for your application. -- Use [Application Map](../app/app-map.md) to view the dependencies between your application components and identify any bottlenecks. +- Use the [.NET Profiler](../profiler/profiler-overview.md) to capture and view performance traces for your application. +- Use the [Application Map](../app/app-map.md) to view the dependencies between your application components and identify any bottlenecks. - Enable [distributed tracing](../app/distributed-trace-data.md), which provides a performance profiler that works like call stacks for cloud and microservices architectures, to gain better observability into the interaction between services. **Application failures**
diff --git a/articles/azure-monitor/essentials/network-security-perimeter.md b/articles/azure-monitor/essentials/network-security-perimeter.md index 8d2dc15dc0..bbf5e0ec51 100644 --- a/articles/azure-monitor/essentials/network-security-perimeter.md +++ b/articles/azure-monitor/essentials/network-security-perimeter.md @@ -46,7 +46,7 @@ The components of Azure Monitor that are supported with a network security perim The following components of Azure Monitor are **not** supported with a network security perimeter: -- Application insights Profiler and Debugger +- [Application Insights Profiler for .NET](./../profiler/profiler-overview.md) and [Snapshot Debugger](./../snapshot-debugger/snapshot-debugger.md) - Log Analytics customer managed key - Cross-resource queries that include any Log Analytics workspaces associated with an NSP diff --git a/articles/azure-monitor/includes/application-insights-limits.md b/articles/azure-monitor/includes/application-insights-limits.md index caf0ef3265..87174612f9 100644 --- a/articles/azure-monitor/includes/application-insights-limits.md +++ b/articles/azure-monitor/includes/application-insights-limits.md @@ -28,8 +28,8 @@ There are some limits on the number of metrics and events per application, that | Availability tests count per resource group | 800 | 800 | See [Azure Resource Manager](/azure/azure-resource-manager/management/resources-without-resource-group-limit) | | Availability tests maximum redirects per test | 10 | 10 | | | Availability tests minimum test frequency | 300 seconds | | Custom test frequencies or frequencies less than 5 minutes require [custom TrackAvailability](../app/availability-azure-functions.md) implementations. | -| [Profiler](../app/profiler.md) and [Snapshot](../app/snapshot-debugger.md) data retention | Two weeks | [Contact support.](https://azure.microsoft.com/support/options/) Maximum retention limit is six months. | | -| [Profiler](../app/profiler.md) data sent per day | No limit | No limit. | | -| [Snapshot](../app/snapshot-debugger.md) data sent per day | 30 snapshots per day per monitored app | No limit. | The number of snapshots collected per application can be modified through [configuration](../app/snapshot-debugger-vm.md). | +| [.NET Profiler](../app/profiler-overview.md) and [Snapshot Debugger](../app/snapshot-debugger.md) data retention | Two weeks | [Contact support.](https://azure.microsoft.com/support/options/) Maximum retention limit is six months. | | +| [.NET Profiler](../app/profiler-overview.md) data sent per day | No limit | No limit. | | +| [Snapshot Debugger](../app/snapshot-debugger.md) data sent per day | 30 snapshots per day per monitored app | No limit. | The number of snapshots collected per application can be modified through [configuration](../app/snapshot-debugger-vm.md). | For more information about pricing and quotas, see [Application Insights billing](../logs/cost-logs.md#application-insights-billing). diff --git a/articles/azure-monitor/insights/code-optimizations-troubleshoot.md b/articles/azure-monitor/insights/code-optimizations-troubleshoot.md index 4a5566549b..09955a522c 100644 --- a/articles/azure-monitor/insights/code-optimizations-troubleshoot.md +++ b/articles/azure-monitor/insights/code-optimizations-troubleshoot.md @@ -27,11 +27,11 @@ View the following demonstration video to learn how to set up Code Optimizations [Create an Application Insights resource](/azure/azure-monitor/app/create-workspace-resource) and verify that it's connected to the correct app. -### Step 3: Verify that Application Insights Profiler is enabled +### Step 3: Verify that .NET Profiler is enabled -[Enable Application Insights Profiler](/azure/azure-monitor/profiler/profiler-overview). +[Enable .NET Profiler](/azure/azure-monitor/profiler/profiler-overview). -### Step 4: Verify that Application Insights Profiler is collecting profiles +### Step 4: Verify that .NET Profiler is collecting profiles To make sure that profiles are uploaded to your Application Insights resource, follow these steps: @@ -42,7 +42,7 @@ To make sure that profiles are uploaded to your Application Insights resource, f :::image type="content" source="./media/code-optimizations-troubleshoot/performance-page.png" alt-text="Azure portal screenshot that shows how to navigate to the Application Insights Profiler."::: -1. On the **Application Insights Profiler** page, view the **Recent profiling sessions** section. +1. On the **Profiler** page, view the **Recent profiling sessions** section. :::image type="content" source="./media/code-optimizations-troubleshoot/profiling-sessions.png" alt-text="Azure portal screenshot of the Application Insights Profiler page." lightbox="./media/code-optimizations-troubleshoot/profiling-sessions.png"::: @@ -51,7 +51,7 @@ To make sure that profiles are uploaded to your Application Insights resource, f ### Step 5: Regularly check the Profiler -After you successfully complete the previous steps, keep checking the Profiler for insights. Meanwhile, the service continues to analyze your profiles and provide insights as soon as it detects any issues in your code. After you enable the Application Insights Profiler, several hours might be required for you to generate profiles and for the service to analyze them. If the service detects no issues in your code, a message appears that confirms that no insights were found. +After you successfully complete the previous steps, keep checking the **Profiler** page for insights. Meanwhile, the service continues to analyze your profiles and provide insights as soon as it detects any issues in your code. After you enable the .NET Profiler, several hours might be required for you to generate profiles and for the service to analyze them. If the service detects no issues in your code, a message appears that confirms that no insights were found. ## Contact us for help diff --git a/articles/azure-monitor/insights/code-optimizations.md b/articles/azure-monitor/insights/code-optimizations.md index a018e67018..441a432e0c 100644 --- a/articles/azure-monitor/insights/code-optimizations.md +++ b/articles/azure-monitor/insights/code-optimizations.md @@ -13,7 +13,7 @@ ms.collection: ce-skilling-ai-copilot # Monitor and analyze runtime behavior with Code Optimizations -Code Optimizations, an AI-based service in Azure Application Insights, works in tandem with the Application Insights Profiler to detect CPU and memory usage performance issues at a code level and provide recommendations on how to fix them. Code Optimizations identifies these CPU and memory bottlenecks by: +Code Optimizations, an AI-based service in Azure Application Insights, works in tandem with the Application Insights Profiler for .NET to detect CPU and memory usage performance issues at a code level and provide recommendations on how to fix them. Code Optimizations identifies these CPU and memory bottlenecks by: - Analyzing the runtime behavior of your application. - Comparing the behavior to performance engineering best practices. @@ -30,21 +30,23 @@ Make informed decisions and optimize your code using real-time performance data Before you can use Code Optimizations on your application: -- [Enable the Application Insights Profiler](../profiler/profiler-overview.md). +- [Enable the .NET Profiler](../profiler/profiler-overview.md). - Verify your application: - - Is .NET. - - Uses [Application Insights](../app/app-insights-overview.md). - - Is collecting profiles. + - Is .NET. + - Uses [Application Insights](../app/app-insights-overview.md). + - Is collecting profiles. -## Application Insights Profiler vs. Code Optimizations +## .NET Profiler vs. Code Optimizations -Application Insights Profiler and Code Optimizations work together to provide a holistic approach to performance issue detection. +The .NET Profiler and Code Optimizations work together to provide a holistic approach to performance issue detection. -### Application Insights Profiler -[The Profiler](../profiler/profiler-overview.md) focuses on tracing specific requests, down to the millisecond. It provides an excellent "big picture" view of issues within your application and general best practices to address them. +### .NET Profiler + +[The .NET Profiler](../profiler/profiler-overview.md) focuses on tracing specific requests, down to the millisecond. It provides an excellent "big picture" view of issues within your application and general best practices to address them. ### Code Optimizations -[Code Optimizations](https://aka.ms/codeoptimizations) analyzes the profiling data collected by the Application Insights Profiler. As the Profiler uploads data to Application Insights, our machine learning model analyzes some of the data to find where the application's code can be optimized. Code Optimizations: + +[Code Optimizations](https://aka.ms/codeoptimizations) analyzes the profiling data collected by the .NET Profiler. As the Profiler for .NET uploads data to Application Insights, our machine learning model analyzes some of the data to find where the application's code can be optimized. Code Optimizations: - Displays aggregated data gathered over time. - Connects data with the methods and functions in your application code. @@ -52,7 +54,7 @@ Application Insights Profiler and Code Optimizations work together to provide a ## Cost and overhead -Code Optimizations are generated automatically after [Application Insights Profiler is enabled](../profiler/profiler-overview.md#sampling-rate-and-overhead). It incurs no extra cost to you as it analyzes performance issues and generates performance recommendations. Some features (such as code-level fix suggestions) require [Copilot for GitHub](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot) and/or [Copilot for Azure](/azure/copilot/overview). +Code Optimizations are generated automatically after [.NET Profiler is enabled](../profiler/profiler-overview.md#sampling-rate-and-overhead). It incurs no extra cost to you as it analyzes performance issues and generates performance recommendations. Some features (such as code-level fix suggestions) require [Copilot for GitHub](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot) and/or [Copilot for Azure](/azure/copilot/overview). ## Supported regions @@ -74,6 +76,6 @@ You can set an explicit region using connection strings. [Learn more about conne Get started with Code Optimizations by enabling the following features on your application: - [Application Insights](../app/create-workspace-resource.md) -- [Application Insights Profiler](../profiler/profiler-overview.md) +- [.NET Profiler](../profiler/profiler-overview.md) Running into issues? Check the [Troubleshooting guide](./code-optimizations-troubleshoot.md) \ No newline at end of file diff --git a/articles/azure-monitor/insights/set-up-code-optimizations.md b/articles/azure-monitor/insights/set-up-code-optimizations.md index efcdbe9845..b43ece5a27 100644 --- a/articles/azure-monitor/insights/set-up-code-optimizations.md +++ b/articles/azure-monitor/insights/set-up-code-optimizations.md @@ -15,7 +15,7 @@ ms.reviewer: ryankahng Setting up Code Optimizations to identify and analyze CPU and memory bottlenecks in your web applications is a simple process in the Azure portal. In this guide, you learn how to: - Connect your web app to Application Insights. -- Enable the Profiler on your web app. +- Enable the .NET Profiler on your web app. [You can review your Code Optimizations in the Azure portal.](https://aka.ms/codeoptimizations) @@ -43,16 +43,16 @@ Before setting up Code Optimizations for your web app, ensure that your app is c 1. Click **Apply** at the bottom of the Application Insights pane. -## Enable Profiler on your web app +## Enable the .NET Profiler on your web app -Profiler collects traces on your web app for Code Optimizations to analyze. In a few hours, if Code Optimization notices any performance bottlenecks in your application, you can see and review Code Optimizations insights. +The .NET Profiler collects traces on your web app for Code Optimizations to analyze. In a few hours, if Code Optimization notices any performance bottlenecks in your application, you can see and review Code Optimizations insights. 1. Still in the Application Insights blade, under **Instrument your application**, select the **.NET** tab. -1. Under **Profiler**, select the toggle to turn on Profiler for your web app. +1. Under **Profiler**, select the toggle to turn on the .NET Profiler for your web app. - :::image type="content" source="media/set-up-code-optimizations/enable-profiler.png" alt-text="Screenshot of how to enable Profiler for your web app."::: + :::image type="content" source="media/set-up-code-optimizations/enable-profiler.png" alt-text="Screenshot of how to enable .NET Profiler for your web app."::: -1. Verify the Profiler is collecting traces. +1. Verify the .NET Profiler is collecting traces. 1. Navigate to your Application Insights resource. 1. From the left menu, select **Investigate** > **Performance**. 1. In the Performance blade, select **Profiler** from the top menu. diff --git a/articles/azure-monitor/ip-addresses.md b/articles/azure-monitor/ip-addresses.md index 1928a68668..9bd494420e 100644 --- a/articles/azure-monitor/ip-addresses.md +++ b/articles/azure-monitor/ip-addresses.md @@ -125,7 +125,7 @@ Managing changes to source IP addresses can be time consuming. Using *service ta :::image type="content" source="alerts/media/action-groups/action-group-service-tag.png" alt-text="Screenshot that shows how to add a service tag." border="true"::: -## Profiler +## Application Insights Profiler for .NET | Purpose | URI | IP | Ports | | --- | --- | --- | --- | @@ -136,7 +136,7 @@ Managing changes to source IP addresses can be time consuming. Using *service ta ## Snapshot Debugger > [!NOTE] -> Profiler and Snapshot Debugger share the same set of IP addresses. +> Application Insights Profiler for .NET and Snapshot Debugger share the same set of IP addresses. | Purpose | URI | IP | Ports | | --- | --- | --- | --- | diff --git a/articles/azure-monitor/logs/private-link-configure.md b/articles/azure-monitor/logs/private-link-configure.md index 2df99675a8..a203a89409 100644 --- a/articles/azure-monitor/logs/private-link-configure.md +++ b/articles/azure-monitor/logs/private-link-configure.md @@ -242,9 +242,9 @@ This zone covers the global endpoints used by Azure Monitor, which means endpoin * **in.ai**: Application Insights ingestion endpoint (both a global and a regional entry). * **api**: Application Insights and Log Analytics API endpoint. * **live**: Application Insights live metrics endpoint. -* **profiler**: Application Insights profiler endpoint. +* **profiler**: Application Insights Profiler for .NET endpoint. * **snapshot**: Application Insights snapshot endpoint. -* **diagservices-query**: Application Insights Profiler and Snapshot Debugger (used when accessing profiler/debugger results in the Azure portal). +* **diagservices-query**: Application Insights Profiler for .NET and Snapshot Debugger (used when accessing profiler/debugger results in the Azure portal). This zone also covers the resource-specific endpoints for the following DCEs: diff --git a/articles/azure-monitor/logs/private-link-design.md b/articles/azure-monitor/logs/private-link-design.md index 40e6453d99..8613099c80 100644 --- a/articles/azure-monitor/logs/private-link-design.md +++ b/articles/azure-monitor/logs/private-link-design.md @@ -21,6 +21,7 @@ When you create an [Azure Monitor Private Link Scope (AMPLS)](./private-link-sec The following sections describe how to plan your Azure Monitor private link configuration based on your network topology. ### Avoid DNS overrides by using a single AMPLS + Some networks are composed of multiple virtual networks or other connected networks. If these networks share the same DNS, configuring a private link on any of them would update the DNS and affect traffic across all networks. In the following diagram, virtual network 10.0.1.x connects to AMPLS1, which creates DNS entries that map Azure Monitor endpoints to IPs from range 10.0.1.x. Later, virtual network 10.0.2.x connects to AMPLS2, which overrides the same DNS entries by mapping *the same global/regional endpoints* to IPs from the range 10.0.2.x. Because these virtual networks aren't peered, the first virtual network now fails to reach these endpoints. To avoid this conflict, create only a single AMPLS object per DNS. @@ -28,21 +29,23 @@ In the following diagram, virtual network 10.0.1.x connects to AMPLS1, which cre :::image type="content" source="./media/private-link-security/dns-overrides-multiple-vnets.png" lightbox="./media/private-link-security/dns-overrides-multiple-vnets.png" alt-text="Diagram that shows DNS overrides in multiple virtual networks." border="false"::: ### Hub-and-spoke networks + Hub-and-spoke networks should use a single private link connection set on the hub (main) network, and not on each spoke virtual network. You might prefer to create separate private links for your spoke virtual networks to allow each virtual network to access a limited set of monitoring resources. In this case, you can create a dedicated private endpoint and AMPLS for each virtual network. You must also verify they don't share the same DNS zones to avoid DNS overrides. :::image type="content" source="./media/private-link-security/hub-and-spoke-with-single-private-endpoint-with-data-collection-endpoint.png" lightbox="./media/private-link-security/hub-and-spoke-with-single-private-endpoint-with-data-collection-endpoint.png" alt-text="Diagram that shows a hub-and-spoke single private link." border="false"::: - ### Peered networks + With network peering, networks can share each other's IP addresses and most likely share the same DNS. In this case, create a single private link on a network that's accessible to your other networks. Avoid creating multiple private endpoints and AMPLS objects because only the last one set in the DNS applies. ### Isolated networks -If your networks aren't peered, you must also separate their DNS to use private links. You can then create a separate private endpoint for each network, and a separate AMPLS object. Your AMPLS objects can link to the same workspaces/components or to different ones. +If your networks aren't peered, you must also separate their DNS to use private links. You can then create a separate private endpoint for each network, and a separate AMPLS object. Your AMPLS objects can link to the same workspaces/components or to different ones. ## Select an access mode + Private link access modes allow you to control how private links affect your network traffic. Which you select is critical to ensuring continuous, uninterrupted network traffic. Access modes can apply to all networks connected to your AMPLS or to specific networks connected to it. Access modes are set separately for ingestion and queries. For example, you can set the Private Only mode for ingestion and the Open mode for queries. @@ -50,19 +53,18 @@ Access modes can apply to all networks connected to your AMPLS or to specific ne > [!IMPORTANT] > Log Analytics ingestion uses resource-specific endpoints so it doesn't adhere to AMPLS access modes. To assure Log Analytics ingestion requests can't access workspaces out of the AMPLS, set the network firewall to block traffic to public endpoints, regardless of the AMPLS access modes. - ### Private Only access mode + This mode allows the virtual network to reach only private link resources in the AMPLS. This is the most secure option and prevents data exfiltration by blocking traffic out of the AMPLS to Azure Monitor resources. :::image type="content" source="./media/private-link-security/ampls-private-only-access-mode.png" lightbox="./media/private-link-security/ampls-private-only-access-mode.png" alt-text="Diagram that shows the AMPLS Private Only access mode." border="false"::: - ### Open access mode + This mode allows the virtual network to reach both private link resources and resources not in the AMPLS (if they [accept traffic from public networks](./private-link-design.md#control-network-access-to-ampls-resources)). The Open access mode doesn't prevent data exfiltration, but it still offers the other benefits of private links. Traffic to private link resources is sent through private endpoints before it is validated and then sent over the Microsoft backbone. The Open mode is useful for mixed mode where some resources are accessed publicly and others accessed over a private link. It can also be useful during a gradual onboarding process. :::image type="content" source="./media/private-link-security/ampls-open-access-mode.png" lightbox="./media/private-link-security/ampls-open-access-mode.png" alt-text="Diagram that shows the AMPLS Open access mode." border="false"::: - > [!IMPORTANT] > Apply caution when you select your access mode. Using the Private Only access mode will block traffic to resources not in the AMPLS across all networks that share the same DNS regardless of subscription or tenant. If you can't add all Azure Monitor resources to the AMPLS, start by adding select resources and applying the Open access mode. Switch to the Private Only mode for maximum security only after you've added all Azure Monitor resources to your AMPLS. @@ -73,8 +75,6 @@ In the following diagram, VNet1 uses the Open mode and VNet2 uses the Private On :::image type="content" source="./media/private-link-security/ampls-mixed-access-modes.png" lightbox="./media/private-link-security/ampls-mixed-access-modes.png" alt-text="Diagram that shows mixed access modes." border="false"::: - - ## Control network access to AMPLS resources Azure Monitor components can be set to either: @@ -109,17 +109,18 @@ Following are exceptions to this network access: * Add resources hosting the monitored workloads to a private link. For example, see [Using private endpoints for Azure Web App](/azure/app-service/networking/private-endpoint). * Non-portal consumption experiences must also run on the private-linked virtual network that includes the monitored workloads. -* [Provide your own storage account](../app/profiler-bring-your-own-storage.md) to support private links for the Profiler and Debugger. +* [Provide your own storage account](../app/profiler-bring-your-own-storage.md) to support private links for the .NET Profiler and Debugger. > [!NOTE] > To fully secure workspace-based Application Insights, lock down access to the Application Insights resource and the underlying Log Analytics workspace. ### Managed Prometheus + * Private Link ingestion settings are made using AMPLS and settings on the Data Collection Endpoints (DCEs) that reference the Azure Monitor workspace used to store Prometheus metrics. * Private Link query settings are made directly on the Azure Monitor workspace used to store Prometheus metrics and aren't handled with AMPLS. - ## Next steps + - Learn how to [configure your private link](private-link-configure.md). - Learn about [private storage](private-storage.md) for custom logs and customer-managed keys. - Learn about [Private Link for Automation](/azure/automation/how-to/private-link-security). diff --git a/articles/azure-monitor/logs/private-link-security.md b/articles/azure-monitor/logs/private-link-security.md index ed30d76601..22788c2386 100644 --- a/articles/azure-monitor/logs/private-link-security.md +++ b/articles/azure-monitor/logs/private-link-security.md @@ -17,8 +17,8 @@ Advantages of using Private Link with Azure Monitor include the following. See [ - Securely connect your private on-premises network to Azure Monitor by using Azure ExpressRoute and Private Link. - Keep all traffic inside the Azure backbone network. - ## Basic concepts + Instead of creating a private link for each resource the virtual network connects to, Azure Monitor uses a single private link connection using a private endpoint from the virtual network to an Azure Monitor Private Link Scope (AMPLS). The AMPLS is a set of Azure Monitor resources that define the boundaries of your monitoring network. :::image type="content" source="./media/private-link-security/private-link-basic-topology.png" lightbox="./media/private-link-security/private-link-basic-topology.png" alt-text="Diagram that shows basic resource topology."::: @@ -31,23 +31,26 @@ Notable aspects of the AMPLS include the following: * **Controls network access to your Azure Monitor resources**: Configure each of your workspaces or components to accept or block traffic from public networks, potentially using different settings for data ingestion and query requests. ## DNS zones + When you create an AMPLS, your DNS zones map Azure Monitor endpoints to private IPs to send traffic through the private link. Azure Monitor uses both resource-specific endpoints and shared global/regional endpoints to reach the workspaces and components in your AMPLS. Because Azure Monitor uses some shared endpoints, configuring a private link even for a single resource changes the DNS configuration that affects traffic to *all resources*. The use of shared endpoints also means you should use a single AMPLS for all networks that share the same DNS. Creating multiple AMPLS resources will cause Azure Monitor DNS zones to override each other and break existing environments. See [Plan by network topology](./private-link-design.md#plan-by-network-topology) for further details. ### Shared global and regional endpoints + When you configure Private Link even for a single resource, traffic to the following endpoints will be sent through the allocated private IPs: -* **All Application Insights endpoints**: Endpoints handling ingestion, live metrics, the Profiler, and the debugger to Application Insights endpoints are global. +* **All Application Insights endpoints**: Endpoints handling ingestion, live metrics, the .NET Profiler, and the debugger to Application Insights endpoints are global. * **The query endpoint**: The endpoint handling queries to both Application Insights and Log Analytics resources is global. ### Resource-specific endpoints + Log Analytics endpoints are workspace specific, except for the query endpoint discussed earlier. As a result, adding a specific Log Analytics workspace to the AMPLS will send ingestion requests to this workspace over the private link. Ingestion to other workspaces will continue to use the public endpoints. [Data collection endpoints](../essentials/data-collection-endpoint-overview.md) are also resource specific. You can use them to uniquely configure ingestion settings for collecting guest OS telemetry data from your machines (or set of machines) when you use the new [Azure Monitor Agent](../agents/azure-monitor-agent-overview.md) and [data collection rules](../essentials/data-collection-rule-overview.md). Configuring a data collection endpoint for a set of machines doesn't affect ingestion of guest telemetry from other machines that use the new agent. - ## Next steps + - [Design your Azure Private Link setup](private-link-design.md). - Learn how to [configure your private link](private-link-configure.md). - Learn about [private storage](private-storage.md) for custom logs and customer-managed keys. diff --git a/articles/azure-monitor/profiler/includes/profiler-overhead.md b/articles/azure-monitor/profiler/includes/profiler-overhead.md index c3061877cc..e339b4536b 100644 --- a/articles/azure-monitor/profiler/includes/profiler-overhead.md +++ b/articles/azure-monitor/profiler/includes/profiler-overhead.md @@ -6,6 +6,6 @@ ms.date: 07/11/2024 --- > [!NOTE] -> When Profiler is actively running and collecting traces, it typically adds between 5% to 15% of CPU and memory overhead to your server. +> When the Application Insights Profiler for .NET is actively running and collecting traces, it typically adds between 5% to 15% of CPU and memory overhead to your server. > -> There is **no additional cost** for storing data captured by Profiler. The data is automatically deleted after 15 days. \ No newline at end of file +> There is **no additional cost** for storing data captured by .NET Profiler. The data is automatically deleted after 15 days. \ No newline at end of file diff --git a/articles/azure-monitor/snapshot-debugger/snapshot-debugger-app-service.md b/articles/azure-monitor/snapshot-debugger/snapshot-debugger-app-service.md index 6608ff3f61..c764bfc7e2 100644 --- a/articles/azure-monitor/snapshot-debugger/snapshot-debugger-app-service.md +++ b/articles/azure-monitor/snapshot-debugger/snapshot-debugger-app-service.md @@ -54,7 +54,7 @@ To disable Snapshot Debugger for your App Services resource: # [Azure Resource Manager](#tab/arm) -You can also set app settings within the Azure Resource Manager template to enable Snapshot Debugger and Profiler. For example: +You can also set app settings within the Azure Resource Manager template to enable Snapshot Debugger and .NET Profiler. For example: ```json { diff --git a/articles/azure-monitor/snapshot-debugger/snapshot-debugger-troubleshoot.md b/articles/azure-monitor/snapshot-debugger/snapshot-debugger-troubleshoot.md index efcedad57a..25b6fb4317 100644 --- a/articles/azure-monitor/snapshot-debugger/snapshot-debugger-troubleshoot.md +++ b/articles/azure-monitor/snapshot-debugger/snapshot-debugger-troubleshoot.md @@ -157,7 +157,7 @@ You can check the Status Page of this extension by going to the following url: > [!NOTE] > The domain of the Status Page link will vary depending on the cloud. -This domain is the same as the Kudu management site for App Service. The status page shows the installation state of the Profiler and Snapshot Collector agents. If there was an unexpected error, it shows how to fix it. +This domain is the same as the Kudu management site for App Service. The status page shows the installation state of the [.NET Profiler](./../profiler/profiler.md) and Snapshot Collector agents. If there was an unexpected error, it shows how to fix it. You can use the Kudu management site for App Service to get the base url of this Status Page: