Monitoring Microsoft Teams

This article covers the recommended approach to monitoring Microsoft Teams with AppNeta Performance Manager (APM). It assumes that Teams traffic does not pass through the corporate network but exits to the internet as close to the user as possible. The article:

  • outlines the steps to monitor using the Delivery, Experience, and Usage capabilities of APM.
  • makes recommendations on scheduling reports of the performance results.
  • lists the methods used to integrate with external systems for proactive alert notification.

Monitoring Point deployment

  • Deploy Enterprise Monitoring Points (EMPs) in remote offices and in Data Centers.
  • Deploy Native Monitoring Points (NMPs) on work-from-home (WFH) user computers.
  • Remote office Monitoring Points should belong to the same network subnet/segment as the end-users in those offices for optimal Delivery and Experience visibility.
    • A Monitoring Point can be connected to multiple networks simultaneously (wired/wireless/VLAN/IPv4/IPv6).
  • Remote office Monitoring Points require a SPAN/mirror of the WAN traffic of the entire office prior to any NAT or encapsulation for optimal Usage monitoring.

Delivery monitoring

Monitor network performance between you users and the Teams infrastructure by creating network paths from remote offices and WFH sites to AppNeta-hosted targets in Azure.

Delivery monitoring procedure

Create a Path Template Group. Use defaults except:

  • Path Template Group name = Teams.
  • When creating a path template:
  • When adding source interfaces:
    • For Add Sources, add an interface from each deployed Monitoring Point (EMPs and NMPs).

Using the AppNeta auto GMT target address ensures that AppNeta test traffic takes the same path into Azure as MS-Teams traffic. The dual-ended path configuration provides monitoring in both directions using UDP.

Investigating network issues

To determine the cause of a network path alert notification, see Troubleshooting Network Problems.

Experience monitoring

Create a script that emulates user login activity in order to monitor a user’s Teams experience.

Experience monitoring prerequisites

  • Remote office Monitoring Points deployed with interface(s) on the desired end-user subnets.
  • Credentials for a Teams testing user account (Multi-factor Authentication (MFA) must be disabled).

Experience monitoring procedure

  1. Create a Web App Group and name it (for example, “Teams”).
  2. In the “Monitor To…” column, add https://teams.microsoft.com as a Target URL.
  3. In the “Workflows…” column, do the following:
    1. Add a workflow name (for example, “Teams login”).
    2. Click Browser > Selenium.
    3. Click Need Any Variables?.
    4. Set the first variable to name=username and value=<Teams-testing-username> and click .
    5. Set the second variable to name=password and value=<Teams-testing-password>.
    6. Click Source.
    7. Replace the source content with:

      <?xml version="1.0" encoding="UTF-8" ?>
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
          <head profile="http://selenium-ide.openqa.org/profiles/test-case">
              <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
              <link rel="selenium.base" />
              <title>New Test</title>
          </head>
          <body>
              <table cellpadding="1" cellspacing="1" border="1">
                  <thead>
                      <tr>
                          <td rowspan="1" colspan="3">New Test</td>
                      </tr>
                  </thead>
                  <tbody>
                      <tr>
                          <td>open</td>
                          <td>/</td>
                          <td></td>
                      </tr>
                      <tr>
                          <td>waitForElementPresent</td>
                          <td>id=idSIButton9</td>
                          <td></td>
                      </tr>
                      <tr>
                         <td>type</td>
                          <td>id=i0116</td>
                          <td>${username}</td>
                      </tr>
                      <tr>
                          <td>click</td>
                          <td>id=idSIButton9</td>
                          <td></td>
                      </tr>
                      <tr>
                          <td>waitForElementNotPresent</td>
                          <td>id=i0116</td>
                          <td></td>
                      </tr>
                      <tr>
                          <td>waitForElementPresent</td>
                          <td>id=i0118</td>
                          <td></td>
                     </tr>
                      <tr>
                          <td>type</td>
                          <td>id=i0118</td>
                          <td>${password}</td>
                      </tr>
                      <tr>
                          <td>click</td>
                          <td>id=idSIButton9</td>
                          <td></td>
                      </tr>
                      <tr>
                          <td>waitForElementNotPresent</td>
                          <td>id=idA_PWD_ForgotPassword</td>
                          <td></td>
                      </tr>
                      <tr>
                          <td>keyDown</td>
                          <td></td>
                          <td>\e007</td>
                      </tr>
                      <tr>
                         <td>pause</td>
                          <td>1000</td>
                          <td></td>
                      </tr>
                      <tr>
                          <td>clickIfVisible</td>
                          <td>css=a.use-app-lnk</td>
                          <td></td>
                      </tr>
                      <tr>
                          <td>waitForElementPresent</td>
                          <td>css=img.user-picture</td>
                          <td></td>
                      </tr>
                      <tr>
                          <td>assertElementPresent</td>
                          <td>css=img.user-picture</td>
                          <td></td>
                      </tr>
                  </tbody>
              </table>
          </body>
      </html>
      
    8. In the Preview section, select a Monitoring Point and click Preview to verify the script.
    9. Click Save.
  4. In the “Monitor From…” column, add the Monitoring Points to run tests from.
  5. Click Save to save your Web App Group.

Investigating user experience issues

To determine the cause of a web path alert notification, see Troubleshooting User Experience Problems.

Usage monitoring

For remote office users, determine which Teams hosts are being accessed, how much bandwidth is devoted to Teams traffic, and how much Teams traffic is attributable to each user.

Usage monitoring prerequisites

Usage monitoring procedure

  1. Configure Traffic Direction by adding local subnet(s).
  2. Ensure Usage is running on the capture interfaces.
  3. Open the Top Applications chart for the Monitoring Point you are interested in.
  4. Expand the “Microsoft Teams” row and note hosts that follow the “*.relay.teams.microsoft.com” naming convention. These are the Teams hosts being accessed by Experience monitoring and your users.

Alerting and reporting

Event notification

Consider who will need to be notified in real time when issues with Microsoft Teams are detected, what systems they use to manage alerts, and how to integrate AppNeta notifications with those systems. AppNeta Performance Manager supports notification via:

  • Email notification - Use this method if you don’t have any other event monitoring infrastructure or if you prefer email alerts. Set up using the Update Notification Options page.
  • Event integration - Use this method if you already have an event monitoring system in place. Integrate directly with that system via POSTs that contain JSON event payloads.
  • SNMP notifications - Use this method if you are integrating with an SNMP system. Set up using the Manage SNMP page.

Daily status report

You can configure Daily Status reports to be delivered for each of the following:

Executive insight report

The Application Quality Report combines raw data and violations sourced from Experience and Delivery across a selection of applications, networks, and geographical locations to enable a high-level overview of the performance and trends over time. This report can scale up to span quarterly results and includes a one page summary aimed at an executive audience.