Cisco ThousandEyes Last-Mile Connectivity on AWS

Partner Solution Deployment Guide

QS

April 2022
Hans Ashlock, ThousandEyes
Todd Escalona, AWS ISV Partner Management team
Vinod Shukla, AWS Integration & Automation team

Refer to the GitHub repository to view source files, report bugs, submit feature ideas, and post feedback about this Partner Solution. To comment on the documentation, refer to Feedback.

This Partner Solution was created by ThousandEyes (a part of Cisco) in collaboration with Amazon Web Services (AWS). Partner Solutions are automated reference deployments that help people deploy popular technologies on AWS according to AWS best practices. If you’re unfamiliar with AWS Partner Solutions, refer to the AWS Partner Solution General Information Guide.

Overview

This Quick Start, which deploys Cisco ThousandEyes Last-Mile Connectivity on the AWS Cloud, is an Amazon Connect integration. Follow the instructions in this guide to deploy the AWS CloudFormation template that builds this serverless architecture.

If you are unfamiliar with AWS Quick Starts, refer to the AWS Quick Start General Information Guide. For more information on Cisco ThousandEyes, refer to this ThousandEyes product overview.

Costs and licenses

To deploy this Quick Start, you need a ThousandEyes account. If you don’t have one, you can sign up for a 15-day free trial. No licenses are required.

There is no cost to use this Quick Start, but you will be billed for any AWS services or resources that this Quick Start deploys. For more information, refer to the AWS Quick Start General Information Guide.

Architecture

Deploying this Quick Start with default parameters builds the following ThousandEyes environment in the AWS Cloud.

Architecture
Figure 1. Quick Start architecture for ThousandEyes on AWS

As shown in Figure 1, this Quick Start sets up the following:

  • Amazon Connect, which communicates with the Amazon Connect Contact Control Panel (CCP) softphone client app using the Amazon Connect Streams API.

    • The Amazon Connect Health widget is integrated into the CCP. This widget displays end-user metrics from the ThousandEyes Endpoint Agent software. You can edit the client-side code to show additional metrics in the widget.

    • The Endpoint Agent software comprises a browser plugin and a lightweight system service installed on end-user Windows or macOS laptops or desktops.

  • Amazon API Gateway, which sets up the ThousandEyes metrics service.

  • AWS Lambda functions, which query the customer’s deployed Endpoint Agent software. Among other things, these functions display the response time of the server (Amazon Connect instance), the strength of the Wi-Fi signal, and the network latency.

  • An AWS Identity and Access Management (IAM) role for the Lambda functions.

  • Amazon Simple Storage Service (S3) to store the metrics.

Deployment options

This Quick Start provides one deployment option:

Predeployment steps

Deploy and configure Endpoint Agent

Deploy and configure the ThousandEyes Endpoint Agent software on the desired Windows- or macOS-based user devices. For details, refer to Configuring and Deploying the Endpoint Agent.

For each agent you deploy, note the agent name—typically the device hostname, such as hans-mac-us. You will enter agent names when you enable ThousandEyes session monitoring.

Configure ThousandEyes to monitor Amazon Connect

Next, you configure ThousandEyes to monitor Amazon Connect from each agent you’ve deployed. To do this, create a scheduled test, and then enable ThousandEyes session monitoring, as described in the following sections.

Create a scheduled test

  1. Log in to your ThousandEyes account at https://app.thousandeyes.com.

  2. Go to Test Settings.

  3. Choose Add New Test, and do the following, as shown in Figure 2.

    1. Under Type, choose Web and HTTP Server.

    2. Under Test Name, enter a name for your scheduled test, such as AmazonConnect. You will use this name when you set up the client widget.

    3. Under URL, enter the URL of your Amazon Connect service.

      NewTest
      Figure 2. Adding a new test
  4. Under Agents, select the Endpoint Agents that you’ve deployed, as shown in Figure 3.

    Agents
    Figure 3. Selecting your installed agents
  5. Choose Add New Test in the lower right.

Enable ThousandEyes session monitoring

When you complete the following steps, ThousandEyes will run network monitoring to your Amazon Connect instance from each of the ThousandEyes Endpoint Agents you’ve specified. It will also collect device-health metrics that can be used alongside network monitoring to troubleshoot issues that impact Amazon Connect services when users are using the Amazon Connect CCP softphone.

  1. While you’re still in the ThousandEyes console, in the navigation panel at left, choose Browser Session Settings. Choose the Monitored Domain Sets tab, and choose Add New Monitored Domain Set, as shown in Figure 4.

    SessionMonitoring
    Figure 4. Adding a new monitored domain set
  2. In the Monitored Domains box, enter the web domain that your users browse to when they use Amazon Connect. For example, if your users access Amazon Connect CCP by using your Salesforce instance, you might enter something like *.salesforce.com, as shown in Figure 5. Choose Add.

    AddMonitoredDomainSet
    Figure 5. Entering the monitored domain

Deployment steps

  1. Sign in to your AWS account, and launch this Partner Solution, as described under Deployment options. The AWS CloudFormation console opens with a prepopulated template.

  2. Choose the correct AWS Region, and then choose Next.

  3. On the Create stack page, keep the default setting for the template URL, and then choose Next.

  4. On the Specify stack details page, change the stack name if needed. Review the parameters for the template. Provide values for the parameters that require input. For all other parameters, review the default settings and customize them as necessary. When you finish reviewing and customizing the parameters, choose Next.

    Unless you’re customizing the Partner Solution templates or are instructed otherwise in this guide’s Predeployment section, don’t change the default settings for the following parameters: QSS3BucketName, QSS3BucketRegion, and QSS3KeyPrefix. Changing the values of these parameters will modify code references that point to the Amazon Simple Storage Service (Amazon S3) bucket name and key prefix. For more information, refer to the AWS Partner Solutions Contributor’s Guide.
  5. On the Configure stack options page, you can specify tags (key-value pairs) for resources in your stack and set advanced options. When you finish, choose Next.

  6. On the Review page, review and confirm the template settings. Under Capabilities, select all of the check boxes to acknowledge that the template creates AWS Identity and Access Management (IAM) resources that might require the ability to automatically expand macros.

  7. Choose Create stack. The stack takes about 10 minutes to deploy.

  8. Monitor the stack’s status, and when the status is CREATE_COMPLETE, the Cisco ThousandEyes Last-Mile Connectivity deployment is ready.

  9. To view the created resources, choose the Outputs tab.

Postdeployment steps

Embed the ThousandEyes client widget

You can use the included example client code in the softphone-client folder to embed a ThousandEyes metrics widget on the same webpage that you embed the Amazon Connect CCP. Integrating ThousandEyes metrics allows you display the health of each of your end user’s connection to Amazon Connect based on ThousandEyes monitoring.

  1. Clone the quickstart-thousandeyes-amazon-connect GitHub repository.

  2. In the softphone-client folder, open the index.html file. This is an example file and javascript that shows how to embed the ThousandEyes widget alongside the Amazon Connect CCP.

  3. Fill in the required variables:

    • instanceURL - URL of your Amazon Connect instance.

    • metricsURL - URL of the ThousandEyes metrics API service you deployed.

    • defaultHostName - Default hostname that identifies the end-user machine; this should be the same name as the computer name reported by the Endpoint Agent software.

    • defaultTestName - Name of the endpoint scheduled test that monitors your Amazon Connect instance.

    • defaultAccountGroup - ThousandEyes account group name that has the Amazon Connect test.

    • refreshS - Frequency (in seconds) to update health metrics. Should not be less than 60.

Here is an example code snippet from index.html:

<div id="ccpContainer1">
   <script>
      var instanceURL = "https://acmebusiness.my.connect.aws/connect/ccp#/";
      var metricsURL = "https://jur5bq3i8a.execute-api.us-east-1.amazonaws.com/v1";
      var defaultHostName = "hans-mac-us";
      var defaultAccountGroup = "Endpoint Agent";
      var defaultTestName = "Amazon Connect";
      var refreshS = 60;
      var container = document.getElementById("ccpContainer");
      var ccpURL = instanceURL;
      init();
   </script>
</div>

You can copy the contents of index.html as well as the /js/common.js file to your web server. You can also upload the contents of the softphone-client folder to an Amazon S3 bucket to run as an example static webpage to see the widget in action.

You should now see the ThousandEyes Amazon Connect Health widget on your Amazon Connect client webpage. Figure 6 shows an example of what the widget looks like embedded at the bottom of the default Amazon Connect CCP widget.

HealthWidget
Figure 6. Example Amazon Connect Health widget

As shown in Figure 7, you can modify the ThousandEyes Host Name (Endpoint Agent), Account Group, or Test Name (endpoint schedule test). To do so, choose the settings icon (gear). The client-side code stores these names as cookies so that they do not change on browser refresh.

CCP-Login
Figure 7. Where to change names for the host, account group, or test

Troubleshooting

For troubleshooting common Quick Start issues, refer to the AWS Quick Start General Information Guide and Troubleshooting CloudFormation.

Resources

Customer responsibility

After you deploy a Partner Solution, confirm that your resources and services are updated and configured—including any required patches—to meet your security and other needs. For more information, refer to the Shared Responsibility Model.

Feedback

To submit feature ideas and report bugs, use the Issues section of the GitHub repository for this Partner Solution. To submit code, refer to the Partner Solution Contributor’s Guide. To submit feedback on this deployment guide, use the following GitHub links:

Notices

This document is provided for informational purposes only. It represents current AWS product offerings and practices as of the date of issue of this document, which are subject to change without notice. Customers are responsible for making their own independent assessment of the information in this document and any use of AWS products or services, each of which is provided "as is" without warranty of any kind, whether expressed or implied. This document does not create any warranties, representations, contractual commitments, conditions, or assurances from AWS, its affiliates, suppliers, or licensors. The responsibilities and liabilities of AWS to its customers are controlled by AWS agreements, and this document is not part of, nor does it modify, any agreement between AWS and its customers.

The software included with this paper is licensed under the Apache License, version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of the License is located at https://aws.amazon.com/apache2.0/ or in the accompanying "license" file. This code is distributed on an "as is" basis, without warranties or conditions of any kind, either expressed or implied. Refer to the License for specific language governing permissions and limitations.