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
Before You Start
Section titled “Before You Start”- 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.comand your Dynatrace tenant - Dynatrace SaaS tenant with Grail enabled
- License file for live mode (see License)
Step 1 — Create Microsoft Entra App
Section titled “Step 1 — Create Microsoft Entra App”Follow the canonical guide: Azure Permissions.
At the end, you must have:
tenant_idclient_idclient_secretorclient_certificate_path
Step 2 — Install the Collector
Section titled “Step 2 — Install the Collector”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: trueDo not configure the output section yet — that comes after Dynatrace setup.
Step 3 — Configure Dynatrace Backend
Section titled “Step 3 — Configure Dynatrace Backend”Follow Configure Dynatrace to:
- Create a Grail bucket named
ms_teams - Create an OpenPipeline with processing, metric extraction, and storage assignment steps
- Create a dynamic route for
MSTeams_*records - Allow outbound hosts:
graph.microsoft.com,login.microsoftonline.com - Store Microsoft credentials in Credential Vault
Step 4 — Configure Collector Output
Section titled “Step 4 — Configure Collector Output”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.
Step 5 — Validate
Section titled “Step 5 — Validate”-
Validate file structure and business rules:
Terminal window ms-teams-agent validate --config ./config.yaml -
Test Graph auth and Dynatrace connectivity:
Terminal window ms-teams-agent test-connection --config ./config.yaml -
Run one dry cycle:
Terminal window ms-teams-agent run --config ./config.yaml --dry-run
✅ Success criteria:
validatereturns no errortest-connectionconfirms Graph authentication and Dynatrace connectivitydry-runcompletes one cycle without errors
❌ If this fails:
Step 6 — Install Dynatrace App
Section titled “Step 6 — Install Dynatrace App”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.
Step 7 — Verify Data
Section titled “Step 7 — Verify Data”- In Dynatrace, open Logs and filter by
log.source = "MSTeams_CallRecords_CallMetadata" - Confirm records are arriving in the
ms_teamsbucket - Open the MS Teams Observability app — the Overview page should show real tenant data
Next Steps
Section titled “Next Steps”- Explore App Pages for calls, sites, users, and issues
- Upload a sites file for site-level dashboards
- Configure service mode for production persistence