Skip to content

Latest commit

 

History

History
154 lines (104 loc) · 9.77 KB

portalfx-telemetry.md

File metadata and controls

154 lines (104 loc) · 9.77 KB

Portal Telemetry Overview

Ibiza portal tracks several pieces of information as users navigate through the portal. Extensions do not need to consume any APIs to have this information collected.

Note: Currently, telemetry is made available to partners through Kusto. All Azure employees should have access, if you don't have access ensure you have joined your team's standard access group and it's listed here http://aka.ms/standardaccess. If it is not listed then please reach out to Ibiza Telemetry.

You can access our Kusto cluster using Kusto Explorer or Kusto Web Explorer.

Our Kusto cluster contains two databases:

  • AzurePortal - which contains the raw data
  • AzPtlCosmos - which is our main telemetry database used in all the official dashboards and reports. Data from this database is deduped, geo-coded, expanded and has test traffic filtered out.

There are two tables used for telemetry:

  • ClientTelemetry - contains telemetry logged by Framework and Hubs. In this table, you can find all the telemetry events (e.g. BladeLoaded, PartLoaded) which are logged by default for any extension which is registered in the portal.
  • ExtTelemetry - contains extension telemetry. As an extension author, you may log additional telemetry to this table.
    • Note: Your extension will log to this table only if you have onboarded to the telemetry services provided by Framework.

You can read more here about Kusto and about the data provided in our Kusto cluster.

Tracked Actions

top-telemetry.md

Logging

There are two options for collecting telemetry and error/warning logs. You can either configure and use the Portal Framework's built-in telemetry services or you can utilize an entirely custom telemetry system.

We advise you to use the telemetry controller provided by Framework in order to take advantage of the system which is already in place.

Information should be collected in a way that that ensures no personally identifiable information (PII) is captured. It is very important for security and compliance reasons that PII data is not sent to telemetry services and you should have practices in place to ensure that this is enforced.

Onboarding to ExtTelemetry/ExtEvents tables

To start using the built-in controller provided by Framework for collecting telemetry and error/warning logs, just add this.EnablePortalLogging = true; in the constructor of your extension definition class:

  public Definition(ApplicationConfiguration applicationConfiguration)
  {
      this.EnablePortalLogging = true;
  }

You can read here more details about using the telemetry controller provided by Framework.

Logging telemetry to ExtTelemetry table

You can use the Portal telemetry APIs to log telemetry. However, before you do so you will need to initialize the telemetry service.

  // Initialize the telemetry functionality and make it available for use.
  MsPortalFx.Base.Diagnostics.Telemetry.initialize("ExtensionName", false /* traceBrowserInformation */ );

Note that you don't need to trace browser information to your particular extension as this data is collected globally. However, if you would like the browser information in your own telemetry store set traceBrowserInformation to true.

To log telemetry, you can call the trace method as shown below:

  MsPortalFx.Base.Diagnostics.Telemetry.trace({
      extension: "Microsoft_Azure_NewExtension",
      source: "Links",
      action: "LinkClicked",
      name: "Recommended",
      data: {...}
  });

Telemetry logs go to ExtTelemetry table, which is available in Kusto in both AzurePortal and AzPtlCosmos databases. The recommended format for name column is 'Extension/Microsoft_Azure_NewExtension/Blade/NewBladeName', if the event is related to a blade. Please do not stringify data and context columns when passing them through. These columns usually contain JSON values. You should pass their values as objects, as otherwise, this will result in double-encoded strings.

Logging errors/warnings to ExtEvents table

To log errors/warnings, you can call the error/warning methods as shown below:

  var log = new MsPortalFx.Base.Diagnostics.Log("logging_area");
  log.warning(errorMessage, code, args);
  log.error(errorMessage, code, args);

Args can be provided for additional information to get logged together with the message. Pass it as an object and do not stringify it before passing it through.

Errors and warnings are logged to ExtEvents table, which is available in Kusto only in AzurePortal database.

NOTE: Verbose logging is currently disabled in mpac/production, in order to prevent overly aggressive logging. We recommend you to use verbose logging only for debugging.

We have built Extension Errors Dashboard for giving you the ability to analyze easier the errors and warnings thrown by your extension.

NOTE: In the charts from Extension Errors Dashboard, we aggregate the error messages by omitting the text which is within double quotes (") or single quotes ('). We consider those parts to be the dynamic part of the message (e.g. an id, a timestamp etc.). For example, a message like [Could not find part "PartName1"] will be treated as [Could not find part ""]. Please use this format for all the logged error messages, if you want them to be aggregated by our queries.

Available Power BI Dashboards

Following are some of the dashboards that we support. If you do not have access to any of these please contact ibiza-telemetry@microsoft.com

Name Power BI Link
Portal Dashboard http://aka.ms/portalfx/dashboard
Portal Performance Dashboard https://aka.ms/portalfx/performance/viewer
Name Metrics Docs
Performance Docs top-extensions-performance.md
Reliability Docs portalfx-reliability.md
Create Telemetry Docs portalfx-telemetry-create.md
How to analyze client errors portalfx-telemetry-extension-errors.md

Collecting Feedback From Your Users

In February 2016 we introduced a standardized pane for collecting user feedback. We currently expose one method to extension developers.

Resource Deleted Survey

To ask a user why they deleted a resource use the openResourceDeletedFeedbackPane method:

  import * as FxFeedback from "Fx/Feedback";
  FxFeedback.openResourceDeletedFeedbackPane("displayNameOfTheDeletedResource", optionalObjectWithAnyAdditionalDataYouWantToLog);

Call this method after a user starts the deletion process for a resource. Shell will open the feedback pane with a standardized survey. The name of the resource you pass to the method will be shown to the user in the survey. Responses to this survey are logged to the telemetry tables. If the feedback pane is already open calls to this method will be no-ops.

Questions?

Read more about Kusto query language.

Ask questions on: https://stackoverflow.microsoft.com/questions/tagged?tagnames=ibiza-telemetry