Skip to content

Deploy MS Teams Observability with Dynatrace

Deploy the MS Teams Observability collector and Dynatrace app to monitor real Teams call quality, user activity, and site performance.

Estimated time: 45–60 minutes

What you will deploy:

  • Microsoft Entra app registration for Graph API access
  • Collector binary on a Linux or Windows host
  • Dynatrace Grail bucket, OpenPipeline, and routing
  • Dynatrace app with live data
  • Microsoft 365 tenant with Teams calling activity
  • Entra ID permission to create an app registration
  • Admin consent for Graph application permissions
  • Collector host with outbound HTTPS access to graph.microsoft.com and your Dynatrace tenant
  • Dynatrace SaaS tenant with Grail enabled
  • License file for live mode (see License)

Follow the canonical guide: Azure Permissions.

At the end, you must have:

  • tenant_id
  • client_id
  • client_secret or client_certificate_path

Follow Collector Installation to download the binary and build your config.yaml.

Your minimum config:

microsoft_authentication:
graph:
tenant_id: "<tenant-id>"
client_id: "<client-id>"
client_secret: "<secret>"
license:
filepath: /etc/ms-teams-observability-agent/license.json
collection_config:
interval_collection_minutes: 10
features:
calls_collection:
enabled: true

Do not configure the output section yet — that comes after Dynatrace setup.

Follow Configure Dynatrace to:

  1. Create a Grail bucket named ms_teams
  2. Create an OpenPipeline with processing, metric extraction, and storage assignment steps
  3. Create a dynamic route for MSTeams_* records
  4. Allow outbound hosts: graph.microsoft.com, login.microsoftonline.com
  5. Store Microsoft credentials in Credential Vault

Add the Dynatrace output to your config.yaml:

output:
dynatrace:
enabled: true
dynatrace_tenant_id: "your-tenant-id"
dynatrace_api_token: "your-logs-ingest-token"

See Collector Connection for all parameters.

  1. Validate file structure and business rules:

    Terminal window
    ms-teams-agent validate --config ./config.yaml
  2. Test Graph auth and Dynatrace connectivity:

    Terminal window
    ms-teams-agent test-connection --config ./config.yaml
  3. Run one dry cycle:

    Terminal window
    ms-teams-agent run --config ./config.yaml --dry-run

✅ Success criteria:

  • validate returns no error
  • test-connection confirms Graph authentication and Dynatrace connectivity
  • dry-run completes one cycle without errors

❌ If this fails:

Follow App Installation to install from Hub or ZIP upload. Activate live mode by configuring tenant ID, credential vault reference, and license in the app settings.

  1. In Dynatrace, open Logs and filter by log.source = "MSTeams_CallRecords_CallMetadata"
  2. Confirm records are arriving in the ms_teams bucket
  3. Open the MS Teams Observability app — the Overview page should show real tenant data