Skip to content

Deploy MS Teams Observability with Grafana

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

Grafana MS Teams Observability home dashboard
The Grafana plugin home dashboard after data starts flowing.

Estimated time: 30–45 minutes

What you will deploy:

  • Microsoft Entra app registration for Graph API access
  • Collector binary on a Linux or Windows host
  • Grafana plugin app from the Plugin Catalog
  • Loki datasource (self-hosted or Grafana Cloud)
  • 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
  • Supported Grafana instance
  • A Loki datasource (self-hosted or Grafana Cloud Logs)
  • 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 with Grafana OTLP output:

microsoft_authentication:
graph:
tenant_id: "<tenant-id>"
client_id: "<client-id>"
client_secret: "<secret>"
license:
filepath: /etc/ms-teams-observability-agent/license.json
output:
otel:
- name: "grafana"
enabled: true
endpoint: "https://otlp-gateway-prod-eu-west-2.grafana.net/otlp/v1/logs"
service_name: "msteams-callrecords"
deployment_environment: "production"
headers:
Authorization: "Basic <base64-credentials>"
collection_config:
interval_collection_minutes: 10
max_call_duration_hours: 5
features:
calls_collection:
enabled: true

Use the Grafana Cloud Logs OTLP endpoint and credentials from your Grafana Cloud stack details.

Follow Plugin Installation to install the MS Teams Observability plugin from the Grafana Plugin Catalog.

  1. Go to Connections → Data Sources → MS Teams Observability Datasource
  2. Enter your Loki URL, tenant ID, and credentials
  3. Set Service Name to msteams-callrecords
  4. Click Save & test
  1. Validate collector config:

    Terminal window
    ms-teams-agent validate --config ./config.yaml
  2. Test Graph auth and OTLP 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
  1. In Grafana, open Apps → Microsoft Teams Observability
  2. The Home page should show real tenant data
  3. Navigate to Calls to see individual call records
  4. Check Call Overview for stream-level quality details