This cookbook contains the full source code for FlyFast, utilizing both the FlyFast-WebUI and FlyFast-FlightSearch to demonstrates how works OpenTelemetry with Riverbed APM.
Note
The FlyFast demo app is instrumented with OpenTelemetry configured to send the OpenTelemetry traces to the APM OpenTelemetry Collector, which in turns exports traces to the Riverbed APM backend (whether APM SaaS or APM Analysis Server). In the app, both the WebUI frontend and the FlighSearch API backend are instrumented: the frontend instrumentation uses an experimental OpenTelemetry for Javascript in the browser, and the FlightSearch API uses OpenTelemetry for Python.
- an APM SaaS account, or an APM Analysis Server
- optional an account for Aternity UJI
- a Docker host, for example Docker Desktop
- git (Git)
git clone --recurse-submodules https://github.com/riverbed/FlyFast.git --depth 1
Open the APM web console and navigate to Agents > Install Agents (for example https://apm.myaccount.aternity.com)
- Grab the Analysis Server Host, for example agents.apm.myaccount.aternity.com
- Find your CustomerID, for example 12341234-12341234-13241234
Those information are required to activate the APM OpenTelemetry Collector with an APM account. The CustomerID is not required when it is not an APM SaaS.
*optional* See details for Aternity UJI
- Open Aternity UJI and navigate to Settings & Administration > Sites
- Find the site configured for FlyFast and get the UJI Tag Prefix, for example my-UJI-Tag-Prefix-FlyFast
Start the containers using the compose.yaml, using the snipppet below and replacing the values with the information collected at step 2. and step 3.
For example in Bash:
cd FlyFast
# Configure the APM OpenTelemetry Collector
export RIVERBED_APM_SERVER_HOST="agents.apm.myaccount.aternity.com"
export RIVERBED_APM_CUSTOMER_ID="12341234-12341234-13241234"
# Start the containers
docker compose up
or in PowerShell:
cd FlyFast
# Configure the APM OpenTelemetry Collector
$env:RIVERBED_APM_SERVER_HOST="agents.apm.myaccount.aternity.com"
$env:RIVERBED_APM_CUSTOMER_ID="12341234-12341234-13241234"
# Start the containers
docker compose up
*optional* Add configuration for Aternity UJI
in Bash:
cd FlyFast
# Configure the APM OpenTelemetry Collector
export RIVERBED_APM_SERVER_HOST="agents.apm.myaccount.aternity.com"
export RIVERBED_APM_CUSTOMER_ID="12341234-12341234-13241234"
# Optional - Configure the Aternity UJI tag
# Replace "my-UJI-Tag-Prefix-FlyFast" with your UJI Tag Prefix collected at step 3.
export ALLUVIO_UJI_TAG='<script id=\"ALLUVIO-Aternity-UJI\" src=\"https:\/\/your-UJI-Tag-Prefix-FlyFast\.btttag\.com\/btt\.js\"><\/script>'
# Start the containers
docker compose up
or in PowerShell
cd FlyFast
# Configure the APM OpenTelemetry Collector
# Replace the value with your information collected at step 2.
$env:RIVERBED_APM_SERVER_HOST="agents.apm.myaccount.aternity.com"
$env:RIVERBED_APM_CUSTOMER_ID="12341234-12341234-13241234"
# Optional - Configure the Aternity UJI tag
# Replace "your-UJI-Tag-Prefix-FlyFast" with your UJI Tag Prefix collected at step 3.
$env:ALLUVIO_UJI_TAG='<script id=\"ALLUVIO-Aternity-UJI\" src=\"https:\/\/your-UJI-Tag-Prefix-FlyFast\.btttag\.com\/btt\.js\"><\/script>'
# Start the containers
docker compose up
The web application should now be available on http://localhost.
Open the url in your browser and navigate through the application a few times to generate page views and transaction that will be monitored by APM.
Go to the APM web console to monitor the instance and observe every transaction.
View details of a specific transaction as a waterfall chart:
See Notes
In the Riverbed Community Toolkit, the cookbook Synthetic-004-Browse-FlyFast show how to set up a synthetic test for FlyFast on a Windows machine.
Press CTRL + C
in the shell where it is running.
Or in a shell, go to the folder where you keep the compose.yaml and run:
docker compose stop
docker compose build --no-cache
Stay up to date with the latest changes.
git submodule update --remote
git clone https://github.com/riverbed/FlyFast.git
cd FlyFast
git submodule init
git submodule update
Copyright (c) 2022 - 2024 Riverbed Technology, Inc.
The contents provided here are licensed under the terms and conditions of the MIT License accompanying the software ("License"). The scripts are distributed "AS IS" as set forth in the License. The script also include certain third party code. All such third party code is also distributed "AS IS" and is licensed by the respective copyright holders under the applicable terms and conditions (including, without limitation, warranty and liability disclaimers) identified in the license notices accompanying the software.