Skip to content

Deploy MS Teams Observability with OTLP

Deploy the MS Teams Observability collector and export Teams telemetry to an OTLP-compatible backend such as Grafana Cloud, Datadog, or any OTLP logs endpoint.

Estimated time: 30–40 minutes

What you will deploy:

  • Microsoft Entra app registration for Graph API access
  • Collector binary on a Linux or Windows host
  • OTLP output to your chosen backend
  • Live Teams telemetry in your OTLP platform
  • 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 OTLP endpoint
  • An OTLP-compatible backend with a reachable logs endpoint and credentials
  • 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 you choose your OTLP backend.

Add the OTLP output to your config.yaml. Choose your backend:

output:
otel:
- name: "grafana"
enabled: true
endpoint: "https://otlp-gateway-prod-eu-west-2.grafana.net/otlp/v1/logs"
service_name: "ms-teams-agent"
deployment_environment: "prod"
headers:
Authorization: "Basic <credentials>"

See OTLP to Grafana for detailed setup.

See OTLP 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 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

✅ Success criteria:

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

❌ If this fails:

  1. Run a collector cycle: ms-teams-agent run --config ./config.yaml --ignore-state
  2. In your OTLP platform, confirm logs are visible:
    • Grafana: filter logs by service_name = "ms-teams-agent"
    • Datadog: check Log Explorer for Teams event families
    • Dynatrace (OTLP): confirm logs arrive with expected source fields