From 5d66a5a987b3dc1128b10da52a3a5b7882283f7d Mon Sep 17 00:00:00 2001 From: Adam Ratzman <adamratzman@microsoft.com> Date: Sat, 15 Mar 2025 16:51:29 -0400 Subject: [PATCH 1/6] wip --- .../fundamentals/dashboard/usage-telemetry.md | 165 ++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 docs/fundamentals/dashboard/usage-telemetry.md diff --git a/docs/fundamentals/dashboard/usage-telemetry.md b/docs/fundamentals/dashboard/usage-telemetry.md new file mode 100644 index 0000000000..fcc9d35e88 --- /dev/null +++ b/docs/fundamentals/dashboard/usage-telemetry.md @@ -0,0 +1,165 @@ +--- +title: .NET Aspire dashboard telemetry +description: Learn about what telemetry the .NET Aspire dashboard sends and how to opt out. +ms.date: 03/05/2025 +--- + +# .NET Aspire dashboard telemetry + +The Aspire dashboard includes a telemetry feature that collects usage data when the dashboard is launched through Visual Studio or Visual Studio Code as part of a running Aspire application. This information is sent to Microsoft to help the Aspire team understand how the dashboard is used and help improve the product. Exception information is also sent when unhandled exceptions occur in the dashboard. + +## Scope + +.NET Aspire dashboard usage telemetry is supported when using Visual Studio or Visual Studio Code to run an Aspire application containing a dashboard resource. + +Telemetry is collected only when the Aspire dashboard is open in the browser and the instance of Visual Studio or Visual Studio Code has not opted out of telemetry collection. + +### How to opt out + +.NET Aspire dashboard telemetry is enabled by default for `Aspire >= 9.2` when launched through `Visual Studio >= 17.14` or `C# Dev Kit >= [VSC RELEASE VERSION]`. + +To opt out, you may either: + +- Uncheck the "Enable dashboard telemetry" setting in the Aspire dashboard settings page. This setting will apply to the current browser and is saved in browser localStorage. +- Set the `DOTNET_DASHBOARD_ENABLE_TELEMETRY` environment variable to `false`. This will apply to all users accessing the Aspire dashboard. + +#### Configure OTLP HTTP with app host + +If the dashboard and your app are started by the app host, the dashboard OTLP endpoints are configured in the app host's _launchSettings.json_ file. + +Consider the following example JSON file: + +:::code language="json" source="snippets/BrowserTelemetry/BrowserTelemetry.AppHost/Properties/launchSettings.json" highlight="12,25"::: + +The preceding launch settings JSON file configures all profiles to include the `DOTNET_DASHBOARD_OTLP_HTTP_ENDPOINT_URL` environment variable. + +#### Configure OTLP HTTP with standalone dashboard + +If the dashboard is used standalone, without the rest of .NET Aspire, the OTLP HTTP endpoint is enabled by default on port `18890`. However, the port must be mapped when the dashboard container is started: + +### [Bash](#tab/bash) + +```bash +docker run --rm -it -d \ + -p 18888:18888 \ + -p 4317:18889 \ + -p 4318:18890 \ + --name aspire-dashboard \ + mcr.microsoft.com/dotnet/aspire-dashboard:9.0 +``` + +### [PowerShell](#tab/powershell) + +```powershell +docker run --rm -it -d ` + -p 18888:18888 ` + -p 4317:18889 ` + -p 4318:18890 ` + --name aspire-dashboard ` + mcr.microsoft.com/dotnet/aspire-dashboard:9.0 +``` + +--- + +The preceding command runs the dashboard container and maps gRPC OTLP to port `4317` and HTTP OTLP to port `4318`. + +### CORS configuration + +By default, browser apps are restricted from making cross domain API calls. This impacts sending telemetry to the dashboard because the dashboard and the browser app are always on different domains. Configuring CORS in the .NET Aspire dashboard removes the restriction. + +If the dashboard and your app are started by the app host, no CORS configuration is required. .NET Aspire automatically configures the dashboard to allow all resource origins. + +If the dashboard is used standlone then CORS must be configured manually. The domain used to view the browser app must be configured as an allowed origin by specifing the `DASHBOARD__OTLP__CORS__ALLOWEDORIGINS` environment variable when the dashboard container is started: + +### [Bash](#tab/bash) + +```bash +docker run --rm -it -d \ + -p 18888:18888 \ + -p 4317:18889 \ + -p 4318:18890 \ + -e DASHBOARD__OTLP__CORS__ALLOWEDORIGINS=https://localhost:8080 \ + --name aspire-dashboard \ + mcr.microsoft.com/dotnet/aspire-dashboard:9.0 +``` + +### [PowerShell](#tab/powershell) + +```powershell +docker run --rm -it -d ` + -p 18888:18888 ` + -p 4317:18889 ` + -p 4318:18890 ` + -e DASHBOARD__OTLP__CORS__ALLOWEDORIGINS=https://localhost:8080 ` + --name aspire-dashboard ` + mcr.microsoft.com/dotnet/aspire-dashboard:9.0 +``` + +--- + +The preceding command runs the dashboard container and configures `https://localhost:8080` as an allowed origin. That means a browser app that is accessed using `https://localhost:8080` has permission to send the dashboard telemetry. + +Multiple origins can be allowed with a comma separated value. Or all origins can be allowed with the `*` wildcard. For example, `DASHBOARD__OTLP__CORS__ALLOWEDORIGINS=*`. + +For more information, see [.NET Aspire dashboard configuration: OTLP CORS](configuration.md#otlp-cors). + +### OTLP endpoint security + +Dashboard OTLP endpoints can be secured with API key authentication. When enabled, HTTP OTLP requests to the dashboard must include the API key as the `x-otlp-api-key` header. By default a new API key is generated each time the dashboard is run. + +API key authentication is automatically enabled when the dashboard is run from the app host. Dashboard authentication can be disabled by setting `DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS` to `true` in the app host's _launchSettings.json_ file. + +OTLP endpoints are unsecured by default in the standalone dashboard. + +## Browser app configuration + +A browser app uses the [JavaScript OTEL SDK](https://opentelemetry.io/docs/languages/js/getting-started/browser/) to send telemetry to the dashboard. Successfully sending telemetry to the dashboard requires the SDK to be correctly configured. + +### OTLP exporter + +OTLP exporters must be included in the browser app and configured with the SDK. For example, exporting distributed tracing with OTLP uses the [@opentelemetry/exporter-trace-otlp-proto](https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-proto) package. + +When OTLP is added to the SDK, OTLP options must be specified. OTLP options includes: + +- `url`: The address that HTTP OTLP requests are made to. The address should be the dashboard HTTP OTLP endpoint and the path to the OTLP HTTP API. For example, `https://localhost:4318/v1/traces` for the trace OTLP exporter. If the browser app is launched by the app host then the HTTP OTLP endpoint is available from the `OTEL_EXPORTER_OTLP_ENDPOINT` environment variable. + +- `headers`: The headers sent with requests. If OTLP endpoint API key authentication is enabled the `x-otlp-api-key` header must be sent with OTLP requests. If the browser app is launched by the app host then the API key is available from the `OTEL_EXPORTER_OTLP_HEADERS` environment variable. + +### Browser metadata + +When a browser app is configured to collect distributed traces, the browser app can set the trace parent a browser's spans using the `meta` element in the HTML. The value of the `name="traceparent"` meta element should correspond to the current trace. + +In a .NET app, for example, the trace parent value would likely be assigned from the <xref:System.Diagnostics.Activity.Current?displayProperty=nameWithType> and passing its <xref:System.Diagnostics.Activity.Id?displayProperty=nameWithType> value as the `content`. For example, consider the following Razor code: + +```razor +<head> + @if (Activity.Current is { } currentActivity) + { + <meta name="traceparent" content="@currentActivity.Id" /> + } + <!-- Other elements omitted for brevity... --> +</head> +``` + +The preceding code sets the `traceparent` meta element to the current activity ID. + +## Example browser telemetry code + +The following JavaScript code demonstrates the initialization of the OpenTelemetry JavaScript SDK and the sending of telemetry data to the dashboard: + +:::code language="javascript" source="snippets/BrowserTelemetry/BrowserTelemetry.Web/Scripts/index.js"::: + +The preceding JavaScript code defines an `initializeTelemetry` function that expects the OTLP endpoint URL, the headers, and the resource attributes. These parameters are provided by the consuming browser app that pulls them from the environment variables set by the app host. Consider the following Razor code: + +:::code language="razor" source="snippets/BrowserTelemetry/BrowserTelemetry.Web/Pages/Shared/_Layout.cshtml" highlight="31-38"::: + +> [!TIP] +> The bundling and minification of the JavaScript code is beyond the scope of this article. + +For the complete working example of how to configure the JavaScript OTEL SDK to send telemetry to the dashboard, see the [browser telemetry sample](https://github.com/dotnet/aspire/tree/main/playground/BrowserTelemetry). + +## See also + +- [.NET Aspire dashboard configuration](configuration.md) +- [Standalone .NET Aspire dashboard](standalone.md) +- [Browser telemetry sample](https://github.com/dotnet/aspire/tree/main/playground/BrowserTelemetry) From 82f3012156e2177b91d2e9c357770e7485e52f52 Mon Sep 17 00:00:00 2001 From: "Ratzman, Adam Mortimer" <aratzman@iu.edu> Date: Tue, 18 Mar 2025 13:23:02 -0400 Subject: [PATCH 2/6] wip --- docs/fundamentals/dashboard/usage-telemetry.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/fundamentals/dashboard/usage-telemetry.md b/docs/fundamentals/dashboard/usage-telemetry.md index fcc9d35e88..93aefe5a47 100644 --- a/docs/fundamentals/dashboard/usage-telemetry.md +++ b/docs/fundamentals/dashboard/usage-telemetry.md @@ -20,10 +20,10 @@ Telemetry is collected only when the Aspire dashboard is open in the browser and To opt out, you may either: -- Uncheck the "Enable dashboard telemetry" setting in the Aspire dashboard settings page. This setting will apply to the current browser and is saved in browser localStorage. - Set the `DOTNET_DASHBOARD_ENABLE_TELEMETRY` environment variable to `false`. This will apply to all users accessing the Aspire dashboard. +- Disable telemetry collection in the host IDE. -#### Configure OTLP HTTP with app host +#### Disclosure If the dashboard and your app are started by the app host, the dashboard OTLP endpoints are configured in the app host's _launchSettings.json_ file. From f5c2c8a7ff88d719ea8af39fc5b615237c312796 Mon Sep 17 00:00:00 2001 From: Adam Ratzman <adamratzman@microsoft.com> Date: Tue, 18 Mar 2025 14:42:26 -0400 Subject: [PATCH 3/6] update --- .../fundamentals/dashboard/usage-telemetry.md | 154 ++---------------- 1 file changed, 18 insertions(+), 136 deletions(-) diff --git a/docs/fundamentals/dashboard/usage-telemetry.md b/docs/fundamentals/dashboard/usage-telemetry.md index 93aefe5a47..0327e4d26f 100644 --- a/docs/fundamentals/dashboard/usage-telemetry.md +++ b/docs/fundamentals/dashboard/usage-telemetry.md @@ -14,152 +14,34 @@ The Aspire dashboard includes a telemetry feature that collects usage data when Telemetry is collected only when the Aspire dashboard is open in the browser and the instance of Visual Studio or Visual Studio Code has not opted out of telemetry collection. -### How to opt out +## How to opt out -.NET Aspire dashboard telemetry is enabled by default for `Aspire >= 9.2` when launched through `Visual Studio >= 17.14` or `C# Dev Kit >= [VSC RELEASE VERSION]`. +.NET Aspire dashboard telemetry is enabled by default for `Aspire >= 9.2` when launched through Visual Studio `>= 17.14` or C# Dev Kit `>= [VSC RELEASE VERSION]`. To opt out, you may either: - Set the `DOTNET_DASHBOARD_ENABLE_TELEMETRY` environment variable to `false`. This will apply to all users accessing the Aspire dashboard. - Disable telemetry collection in the host IDE. -#### Disclosure +## Disclosure -If the dashboard and your app are started by the app host, the dashboard OTLP endpoints are configured in the app host's _launchSettings.json_ file. +If dashboard telemetry is enabled, there will be a disclosure statement at the bottom of the settings panel informing that telemetry is enabled. This statement will appear any time telemetry collection is enabled. -Consider the following example JSON file: +## Data points -:::code language="json" source="snippets/BrowserTelemetry/BrowserTelemetry.AppHost/Properties/launchSettings.json" highlight="12,25"::: +Aspire dashboard telemetry does not collect personal data like IP addresses or use browser fingerprinting. It does not scan your code and does not extract source code, authorship, or deployment configuration. The data is sent securely to Microsoft using [https://azure.microsoft.com/services/monitor/](Azure Monitor) through existing telemetry APIs in Visual Studio and Visual Studio Code. -The preceding launch settings JSON file configures all profiles to include the `DOTNET_DASHBOARD_OTLP_HTTP_ENDPOINT_URL` environment variable. +Protecting your privacy is important to us. If you suspect that telemetry is collecting sensitive data or the data is being insecurely or inappropriately handled, file an issue in the [dotnet/aspire](https://github.com/dotnet/aspire) repository for investigation. -#### Configure OTLP HTTP with standalone dashboard +The Aspire dashboard does not collect telemetry on Visual Studio versions `< 17.14` or C# Dev Kit versions `< [VSC RELEASE VERSION`. It collects the following data: -If the dashboard is used standalone, without the rest of .NET Aspire, the OTLP HTTP endpoint is enabled by default on port `18890`. However, the port must be mapped when the dashboard container is started: - -### [Bash](#tab/bash) - -```bash -docker run --rm -it -d \ - -p 18888:18888 \ - -p 4317:18889 \ - -p 4318:18890 \ - --name aspire-dashboard \ - mcr.microsoft.com/dotnet/aspire-dashboard:9.0 -``` - -### [PowerShell](#tab/powershell) - -```powershell -docker run --rm -it -d ` - -p 18888:18888 ` - -p 4317:18889 ` - -p 4318:18890 ` - --name aspire-dashboard ` - mcr.microsoft.com/dotnet/aspire-dashboard:9.0 -``` - ---- - -The preceding command runs the dashboard container and maps gRPC OTLP to port `4317` and HTTP OTLP to port `4318`. - -### CORS configuration - -By default, browser apps are restricted from making cross domain API calls. This impacts sending telemetry to the dashboard because the dashboard and the browser app are always on different domains. Configuring CORS in the .NET Aspire dashboard removes the restriction. - -If the dashboard and your app are started by the app host, no CORS configuration is required. .NET Aspire automatically configures the dashboard to allow all resource origins. - -If the dashboard is used standlone then CORS must be configured manually. The domain used to view the browser app must be configured as an allowed origin by specifing the `DASHBOARD__OTLP__CORS__ALLOWEDORIGINS` environment variable when the dashboard container is started: - -### [Bash](#tab/bash) - -```bash -docker run --rm -it -d \ - -p 18888:18888 \ - -p 4317:18889 \ - -p 4318:18890 \ - -e DASHBOARD__OTLP__CORS__ALLOWEDORIGINS=https://localhost:8080 \ - --name aspire-dashboard \ - mcr.microsoft.com/dotnet/aspire-dashboard:9.0 -``` - -### [PowerShell](#tab/powershell) - -```powershell -docker run --rm -it -d ` - -p 18888:18888 ` - -p 4317:18889 ` - -p 4318:18890 ` - -e DASHBOARD__OTLP__CORS__ALLOWEDORIGINS=https://localhost:8080 ` - --name aspire-dashboard ` - mcr.microsoft.com/dotnet/aspire-dashboard:9.0 -``` - ---- - -The preceding command runs the dashboard container and configures `https://localhost:8080` as an allowed origin. That means a browser app that is accessed using `https://localhost:8080` has permission to send the dashboard telemetry. - -Multiple origins can be allowed with a comma separated value. Or all origins can be allowed with the `*` wildcard. For example, `DASHBOARD__OTLP__CORS__ALLOWEDORIGINS=*`. - -For more information, see [.NET Aspire dashboard configuration: OTLP CORS](configuration.md#otlp-cors). - -### OTLP endpoint security - -Dashboard OTLP endpoints can be secured with API key authentication. When enabled, HTTP OTLP requests to the dashboard must include the API key as the `x-otlp-api-key` header. By default a new API key is generated each time the dashboard is run. - -API key authentication is automatically enabled when the dashboard is run from the app host. Dashboard authentication can be disabled by setting `DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS` to `true` in the app host's _launchSettings.json_ file. - -OTLP endpoints are unsecured by default in the standalone dashboard. - -## Browser app configuration - -A browser app uses the [JavaScript OTEL SDK](https://opentelemetry.io/docs/languages/js/getting-started/browser/) to send telemetry to the dashboard. Successfully sending telemetry to the dashboard requires the SDK to be correctly configured. - -### OTLP exporter - -OTLP exporters must be included in the browser app and configured with the SDK. For example, exporting distributed tracing with OTLP uses the [@opentelemetry/exporter-trace-otlp-proto](https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-proto) package. - -When OTLP is added to the SDK, OTLP options must be specified. OTLP options includes: - -- `url`: The address that HTTP OTLP requests are made to. The address should be the dashboard HTTP OTLP endpoint and the path to the OTLP HTTP API. For example, `https://localhost:4318/v1/traces` for the trace OTLP exporter. If the browser app is launched by the app host then the HTTP OTLP endpoint is available from the `OTEL_EXPORTER_OTLP_ENDPOINT` environment variable. - -- `headers`: The headers sent with requests. If OTLP endpoint API key authentication is enabled the `x-otlp-api-key` header must be sent with OTLP requests. If the browser app is launched by the app host then the API key is available from the `OTEL_EXPORTER_OTLP_HEADERS` environment variable. - -### Browser metadata - -When a browser app is configured to collect distributed traces, the browser app can set the trace parent a browser's spans using the `meta` element in the HTML. The value of the `name="traceparent"` meta element should correspond to the current trace. - -In a .NET app, for example, the trace parent value would likely be assigned from the <xref:System.Diagnostics.Activity.Current?displayProperty=nameWithType> and passing its <xref:System.Diagnostics.Activity.Id?displayProperty=nameWithType> value as the `content`. For example, consider the following Razor code: - -```razor -<head> - @if (Activity.Current is { } currentActivity) - { - <meta name="traceparent" content="@currentActivity.Id" /> - } - <!-- Other elements omitted for brevity... --> -</head> -``` - -The preceding code sets the `traceparent` meta element to the current activity ID. - -## Example browser telemetry code - -The following JavaScript code demonstrates the initialization of the OpenTelemetry JavaScript SDK and the sending of telemetry data to the dashboard: - -:::code language="javascript" source="snippets/BrowserTelemetry/BrowserTelemetry.Web/Scripts/index.js"::: - -The preceding JavaScript code defines an `initializeTelemetry` function that expects the OTLP endpoint URL, the headers, and the resource attributes. These parameters are provided by the consuming browser app that pulls them from the environment variables set by the app host. Consider the following Razor code: - -:::code language="razor" source="snippets/BrowserTelemetry/BrowserTelemetry.Web/Pages/Shared/_Layout.cshtml" highlight="31-38"::: - -> [!TIP] -> The bundling and minification of the JavaScript code is beyond the scope of this article. - -For the complete working example of how to configure the JavaScript OTEL SDK to send telemetry to the dashboard, see the [browser telemetry sample](https://github.com/dotnet/aspire/tree/main/playground/BrowserTelemetry). - -## See also - -- [.NET Aspire dashboard configuration](configuration.md) -- [Standalone .NET Aspire dashboard](standalone.md) -- [Browser telemetry sample](https://github.com/dotnet/aspire/tree/main/playground/BrowserTelemetry) +| Aspire dashboard versions | Data | Notes | +|--------------|------|------| +| 9.2 | Page navigation history. | Includes page settings. | +| 9.3 | Resource types being used. | | +| 9.3 | Request user agent. | | +| 9.3 | Invoked dashboard commands. | Command name is securely hashed. | +| 9.3 | Request language and set dashboard language. | | +| 9.3 | Resource restart times. | | +| 9.3 | OTel data processing times. | | +| 9.3 | Dashboard-related unhandled exceptions. | | From 35b0546e61fa6feb7ad1f34d554045102f5f38e1 Mon Sep 17 00:00:00 2001 From: Adam Ratzman <adamratzman@microsoft.com> Date: Tue, 18 Mar 2025 15:00:57 -0400 Subject: [PATCH 4/6] add image --- .../media/explore/dashboard-settings-drawer.png | Bin 0 -> 37005 bytes docs/fundamentals/dashboard/usage-telemetry.md | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 docs/fundamentals/dashboard/media/explore/dashboard-settings-drawer.png diff --git a/docs/fundamentals/dashboard/media/explore/dashboard-settings-drawer.png b/docs/fundamentals/dashboard/media/explore/dashboard-settings-drawer.png new file mode 100644 index 0000000000000000000000000000000000000000..6a73c178243f9752f8cf35b152b8d41d8fcf30f1 GIT binary patch literal 37005 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 literal 0 HcmV?d00001 diff --git a/docs/fundamentals/dashboard/usage-telemetry.md b/docs/fundamentals/dashboard/usage-telemetry.md index 0327e4d26f..78e5c9b71d 100644 --- a/docs/fundamentals/dashboard/usage-telemetry.md +++ b/docs/fundamentals/dashboard/usage-telemetry.md @@ -27,6 +27,8 @@ To opt out, you may either: If dashboard telemetry is enabled, there will be a disclosure statement at the bottom of the settings panel informing that telemetry is enabled. This statement will appear any time telemetry collection is enabled. +:::image type="content" source="media/explore/dashboard-settings-drawer.png" lightbox="media/explore/dashboard-settings-drawer.png" alt-text="A screenshot of the .NET Aspire dashboard settings drawer."::: + ## Data points Aspire dashboard telemetry does not collect personal data like IP addresses or use browser fingerprinting. It does not scan your code and does not extract source code, authorship, or deployment configuration. The data is sent securely to Microsoft using [https://azure.microsoft.com/services/monitor/](Azure Monitor) through existing telemetry APIs in Visual Studio and Visual Studio Code. From 437c2e26bea334210aa35b181a1765ec3c11fb4e Mon Sep 17 00:00:00 2001 From: Adam Ratzman <adam@adamratzman.com> Date: Tue, 25 Mar 2025 13:00:23 -0600 Subject: [PATCH 5/6] Revision based on suggestions, add to TOC --- .../explore/dashboard-settings-drawer.png | Bin 37005 -> 0 bytes ...microsoft-collected-dashboard-telemetry.md | 51 ++++++++++++++++++ .../fundamentals/dashboard/usage-telemetry.md | 49 ----------------- docs/toc.yml | 2 + 4 files changed, 53 insertions(+), 49 deletions(-) delete mode 100644 docs/fundamentals/dashboard/media/explore/dashboard-settings-drawer.png create mode 100644 docs/fundamentals/dashboard/microsoft-collected-dashboard-telemetry.md delete mode 100644 docs/fundamentals/dashboard/usage-telemetry.md diff --git a/docs/fundamentals/dashboard/media/explore/dashboard-settings-drawer.png b/docs/fundamentals/dashboard/media/explore/dashboard-settings-drawer.png deleted file mode 100644 index 6a73c178243f9752f8cf35b152b8d41d8fcf30f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37005 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 diff --git a/docs/fundamentals/dashboard/microsoft-collected-dashboard-telemetry.md b/docs/fundamentals/dashboard/microsoft-collected-dashboard-telemetry.md new file mode 100644 index 0000000000..5a1a498bb4 --- /dev/null +++ b/docs/fundamentals/dashboard/microsoft-collected-dashboard-telemetry.md @@ -0,0 +1,51 @@ +--- +title: Microsoft-collected dashboard telemetry +description: Learn about what telemetry the .NET Aspire dashboard sends and how to opt out. +ms.date: 3/25/2025 +--- + +# Microsoft-collected dashboard telemetry + +The .NET Aspire dashboard collects diagnostic data to help developers monitor and analyze their applications. Separately, when the dashboard is launched through Visual Studio or Visual Studio Code as part of a running .NET Aspire application, Microsoft collects usage data about the dashboard itself. This data helps the .NET Aspire team improve the product. Additionally, unhandled exception details from the dashboard are sent to Microsoft to assist in identifying and resolving issues. + +## Scope + +.NET Aspire dashboard usage telemetry is collected only when running the dashboard from Visual Studio or Visual Studio Code. Telemetry is gathered while the dashboard is open in the browser, unless you have [opted out](#how-to-opt-out) of telemetry collection. + +## How to opt out + +Starting with .NET Aspire 9.2, dashboard usage telemetry is enabled by default. Dashboard usage telemetry is not collected in early version. This feature aligns with the following IDE versions: + +- Visual Studio: 17.14 or later. +- C# Dev Kit: [VSC RELEASE VERSION] or later. + +- Set the `DOTNET_DASHBOARD_ENABLE_TELEMETRY` environment variable to `false`. This will apply to all users accessing the Aspire dashboard. +- Disable telemetry collection in the host IDE. Learn how to opt out in [Visual Studio](https://learn.microsoft.com/en-us/visualstudio/ide/visual-studio-experience-improvement-program) or [Visual Studio Code](https://code.visualstudio.com/docs/configure/telemetry#_disable-telemetry-reporting). + +## Disclosure + +When dashboard usage telemetry is enabled, there's a disclosure statement at the bottom of the settings panel, informing you that telemetry is enabled. This disclosure statement appears anytime usage telemetry is enabled. + +## Data points + +.NET Aspire dashboard usage telemetry doesn't collect personal data, such as, IP addresses or use browser fingerprinting. It doesn't scan your code and doesn't extract source code, authorship, or deployment configuration. The data is sent securely to Microsoft using [https://azure.microsoft.com/services/monitor/](Azure Monitor) through existing telemetry APIs in Visual Studio and Visual Studio Code. + +Protecting your privacy is important to Microsoft. If you suspect that telemetry is collecting sensitive data or the data is being insecurely or inappropriately handled, file an issue in the [:::image type="icon" source="../../media/github-mark.svg border="false"::: GitHub dotnet/aspire](https://github.com/dotnet/aspire) repository for investigation. + +The .NET Aspire dashboard doesn't collect telemetry on Visual Studio versions `< 17.14` or C# Dev Kit versions `< [VSC RELEASE VERSION]`. It collects the following data: + +| .NET Aspire dashboard versions | Data | Notes | +|--|--|--| +| 9.3 | Page navigation history. | Includes page settings. | +| 9.3 | Resource types being used. | | +| 9.3 | Request user agent. | | +| 9.3 | Invoked dashboard commands. | Command name is securely hashed. | +| 9.3 | Request language and set dashboard language. | | +| 9.3 | Resource restart times. | | +| 9.3 | OTel data processing times. | | +| 9.3 | Dashboard-related unhandled exceptions. | | + +## See also + +- [.NET Aspire dashboard](overview.md) +- [.NET Aspire dashboard configuration](configuration.md) diff --git a/docs/fundamentals/dashboard/usage-telemetry.md b/docs/fundamentals/dashboard/usage-telemetry.md deleted file mode 100644 index 78e5c9b71d..0000000000 --- a/docs/fundamentals/dashboard/usage-telemetry.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: .NET Aspire dashboard telemetry -description: Learn about what telemetry the .NET Aspire dashboard sends and how to opt out. -ms.date: 03/05/2025 ---- - -# .NET Aspire dashboard telemetry - -The Aspire dashboard includes a telemetry feature that collects usage data when the dashboard is launched through Visual Studio or Visual Studio Code as part of a running Aspire application. This information is sent to Microsoft to help the Aspire team understand how the dashboard is used and help improve the product. Exception information is also sent when unhandled exceptions occur in the dashboard. - -## Scope - -.NET Aspire dashboard usage telemetry is supported when using Visual Studio or Visual Studio Code to run an Aspire application containing a dashboard resource. - -Telemetry is collected only when the Aspire dashboard is open in the browser and the instance of Visual Studio or Visual Studio Code has not opted out of telemetry collection. - -## How to opt out - -.NET Aspire dashboard telemetry is enabled by default for `Aspire >= 9.2` when launched through Visual Studio `>= 17.14` or C# Dev Kit `>= [VSC RELEASE VERSION]`. - -To opt out, you may either: - -- Set the `DOTNET_DASHBOARD_ENABLE_TELEMETRY` environment variable to `false`. This will apply to all users accessing the Aspire dashboard. -- Disable telemetry collection in the host IDE. - -## Disclosure - -If dashboard telemetry is enabled, there will be a disclosure statement at the bottom of the settings panel informing that telemetry is enabled. This statement will appear any time telemetry collection is enabled. - -:::image type="content" source="media/explore/dashboard-settings-drawer.png" lightbox="media/explore/dashboard-settings-drawer.png" alt-text="A screenshot of the .NET Aspire dashboard settings drawer."::: - -## Data points - -Aspire dashboard telemetry does not collect personal data like IP addresses or use browser fingerprinting. It does not scan your code and does not extract source code, authorship, or deployment configuration. The data is sent securely to Microsoft using [https://azure.microsoft.com/services/monitor/](Azure Monitor) through existing telemetry APIs in Visual Studio and Visual Studio Code. - -Protecting your privacy is important to us. If you suspect that telemetry is collecting sensitive data or the data is being insecurely or inappropriately handled, file an issue in the [dotnet/aspire](https://github.com/dotnet/aspire) repository for investigation. - -The Aspire dashboard does not collect telemetry on Visual Studio versions `< 17.14` or C# Dev Kit versions `< [VSC RELEASE VERSION`. It collects the following data: - -| Aspire dashboard versions | Data | Notes | -|--------------|------|------| -| 9.2 | Page navigation history. | Includes page settings. | -| 9.3 | Resource types being used. | | -| 9.3 | Request user agent. | | -| 9.3 | Invoked dashboard commands. | Command name is securely hashed. | -| 9.3 | Request language and set dashboard language. | | -| 9.3 | Resource restart times. | | -| 9.3 | OTel data processing times. | | -| 9.3 | Dashboard-related unhandled exceptions. | | diff --git a/docs/toc.yml b/docs/toc.yml index ce9a2dbf84..349018d170 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -81,6 +81,8 @@ items: href: fundamentals/dashboard/enable-browser-telemetry.md - name: Security considerations href: fundamentals/dashboard/security-considerations.md + - name: Microsoft-collected dashboard telemetry + href: fundamentals/dashboard/microsoft-collected-dashboard-telemetry.md - name: Testing items: From d09a4ba74e365cb4fa8c3ae86ee9dedecbcee7a8 Mon Sep 17 00:00:00 2001 From: David Pine <david.pine@microsoft.com> Date: Wed, 26 Mar 2025 12:29:43 -0500 Subject: [PATCH 6/6] Apply suggestions from code review --- .../dashboard/microsoft-collected-dashboard-telemetry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/fundamentals/dashboard/microsoft-collected-dashboard-telemetry.md b/docs/fundamentals/dashboard/microsoft-collected-dashboard-telemetry.md index 5a1a498bb4..8a8c368c22 100644 --- a/docs/fundamentals/dashboard/microsoft-collected-dashboard-telemetry.md +++ b/docs/fundamentals/dashboard/microsoft-collected-dashboard-telemetry.md @@ -20,7 +20,7 @@ Starting with .NET Aspire 9.2, dashboard usage telemetry is enabled by default. - C# Dev Kit: [VSC RELEASE VERSION] or later. - Set the `DOTNET_DASHBOARD_ENABLE_TELEMETRY` environment variable to `false`. This will apply to all users accessing the Aspire dashboard. -- Disable telemetry collection in the host IDE. Learn how to opt out in [Visual Studio](https://learn.microsoft.com/en-us/visualstudio/ide/visual-studio-experience-improvement-program) or [Visual Studio Code](https://code.visualstudio.com/docs/configure/telemetry#_disable-telemetry-reporting). +- Disable telemetry collection in the host IDE. Learn how to opt out in [Visual Studio](/visualstudio/ide/visual-studio-experience-improvement-program) or [Visual Studio Code](https://code.visualstudio.com/docs/configure/telemetry#_disable-telemetry-reporting). ## Disclosure