While choosing the right migration strategies, such as re-hosting or re-architecting, one must access the different risks, costs, and benefits. However, often the details of what is where and what is dependent on what within the technical stack is missing or poorly documented. All that may exist is out of date diagrams and a mix of monitoring tool metrics that must be "stitched" together.
Not having enough details about the current environment is hindering organization's ability to make the right decisions when planning what to migrate and when.
To address this problem, Dynatrace's OneAgent can automatically discover the application, services, processes and to build a complete dependency mapping for the entire application environment. So, let's begin!
🔷 Review Dynatrace OneAgent
🔷 Review real-time data now available for the sample application
🔷 Review how Dynatrace helps with modernization planning
For this lab you are going to setup an EC2 instance that runs a Sample application that you can use to learn the Dynatrace web UI and to review how Dynatrace brings tremendous insights all through the OneAgent.
Referring to the picture below, here are the components for lab 1.
#1 . Sample Application
Sample app representing a simple architecture of a frontend and backend implemented as Docker containers that we will review in this lab.
#2 . Dynatrace monitoring
The Dynatrace OneAgent has been installed by the workshop provisioning scripts and is communicating to your Dynatrace Tenant.
Learn more about the various ways the OneAgent can be installed, in the Dynatrace documentation
#3 . Load generator process
A JMeter process sends simulated user traffic to the sample app running within a Docker container. You will not need to interact with this container, it just runs in the background.
A real-world scenario would often start with the application components running on a physical or virtualized host on-prem and not "Dockerized". To simplify the workshop, we "Dockerized" the application into a front-end and back-end. In Dynatrace, these Docker containers all show up as "processes" on a host just like a "non-Dockerized" application will.
The sample application is called Dynatrace Orders. A more detailed overview can be found here. All the source code can be found here.
To get the Public IP, open the EC2 instances
page in the AWS console. On the newly created host dt-orders-monolith
find the Public IP
as shown below.
To view the application, paste the public IP using HTTP
NOT HTTPS
into a browser that will look like this:
Use the menu on the home page to navigate around the application and notice the URL for key functionality. You will see these URLs later as we analyze the application.
customer/list.html
customer/5.html
catalog/list.html
catalog/searchForm.html
order/list.html
order/form.html
In the next few sections, you will review what the OneAgent automatically discovered for the host, services, processes, and the complete dependency mapping for the sample application.
As you plan your migration, each of these views will give insights into accessing the profile, consumption and dependencies to other systems and services.
The host running the sample application were all created using scripts that installed the sample application and to install the Dynatrace OneAgent. Since we don't have to install the OneAgent now, let's just review its status.
Deployment status
option from the left side menu to open the OneAgent deployment page.From the left-side menu in Dynatrace choose Hosts
then click on the host with the name dt-orders-monolith
.
On host page, you will see basic infrastructure information for the host.
Properties
section to see data about the host:Enterprises have many hosts, services, and application that are ever changing. The ability to automatically discover and change as the environment changes is a key feature that Smartscape delivers.
Dynatrace's near real-time environment-topology visualization tool, Smartscape, is where Dynatrace's auto-discovery is delivered into a quick and efficient visualization of all the topological dependencies in your infrastructure, processes, and services.
Smartscape shows all the dependencies of a given service. Those include connections to queues, web servers, app servers, and a native process. The host view shows historical and live time-series data for usage as well as the consuming processes. This information allows us to better plan the migration, as all depending services must be considered during the migration.
Referring to the picture above:
Let's see how Dynatrace can visualize these processes using Smartscape.
dt-orders-monolith
host page...
box on the to the right of the host nameSmartscape view
menu optionFeel free to explore the Smartscape.
In the Smartscape view, we saw the visualizations of the relationships in vertical stack and as well as the relationships spatially. Now let's view the processes and services running on the host.
As you plan your migration, you need more than just host level metrics. Knowing the details for each service, BEFORE you change it, will lower the risk of impacting the business.
Very quickly we have seen what processes and services are running on a host AND more importantly, what processes and services call (outbound) and are being called (inbound). Having a real-time picture is certainly more accurate that out of date documentation.
Return back to the host view for the host with the prefix of dt-orders-monolith
and locate the Processes and Containers
section.
Click on the monolith-frontend
process to open the process detail view.
You should be on the process page where you will see information for this process. Follow the picture below to locate the following:
Properties
line to toggle on/off to see additional data. Did you notice Docker?Dynatrace automatically recognizes many common processes like Tomcat and will capture process specific metrics such as JVM garbage collection. See a list of supported technologies, languages and containers in the Dynatrace documentation
In the picture above, the arrow shows the properties for Docker.
Our sample app was built as a Docker container and Dynatrace hooks into containers and provides code for injecting OneAgent into containerized process.
Dynatrace hooks into containers and provides code for injecting OneAgent into containerized processes.
There's no need to modify your Docker images, modify run commands, or create additional containers to enable Docker monitoring. Simply install OneAgent on your hosts that serve containerized applications and services. Dynatrace automatically detects the creation and termination of containers and monitors the applications and services contained within those containers.
You can read more about Dynatrace Docker Monitoring here and technical details here
Now Let's review a specific service.
services
square above the host infographic to open the list of servicesfrontend
You should be on the service page where you will see information for this specific service. Follow the picture below to locate the following:
Properties
line to toggle on/off to see additional dataWeb applications consist of web pages that are served by web servers and web application processes, for example Tomcat. Web and mobile applications are built upon services that process requests like web requests, web service calls, and messaging.
Such "server-side services" can take the form of web services, web containers, database requests, custom services, and more. Services may in turn call other services such as web services, remote services, and databases services.
As you plan your migration, it is important to gain a complete picture of interdependency to the rest of the environment architecture at host, processes, services, application perspectives. Since time is always scarce, being able to do this in a single place can shorten assessment timelines.
Let's now take a look at all the services being monitored by clicking on the Services
left side Dynatrace menu.
The filtered list should now look like this:
Choose the frontend
service.
On the frontend
service page, find the Dynamic Web Requests
section on the right and click the view Dynamic Requests
button to see what it calls.
On this page you can view the transactions as time-series charts.
On this page you can view the "top requests" and their response time consumption. You should recognize the URLs from the sample app!
By clicking on one of the requests, the time-series charts are filtered to just that one request.
On the top if the page on the right is a button labeled Create Analysis view
, click that.
Tryout the options available to view, filter and analyze data.
We just saw one way to review process and service communication, but let's look at how Dynatrace understands and visualizes your applications' transactions from end-to-end using SService Backtraces
and Service flows
Service flow
, you see the flow of service calls FROM a service, request, or their filtered subset. Along with the specific services that are triggered, you can also see how each component of a request contributes to the overall response time.Service backtrace
, you see the calls TO a service.As you plan your migration, it is important to gain a complete picture of interdependency to the rest of the environment architecture at host, processes, services, and application perspectives. Since time is always scarce, being able to do this in a single place can shorten assessment timelines.
Knowing the type of access, executed statements, and amount of data transferred during regular hours of operation allows for better planning and prioritization of the move groups. In some cases, you may decide to not migrate this database in favor of other services or databases that are less complex to migrate due to fewer dependencies.
frontend
service. You can use the breadcrumb
menu as shown below.frontend
service page, locate the Understand dependenciessection on the right, and then click the
view Service flow` button.You should now be on the Service flow page.
Right away, we can see how this application is structured:
Refer to the numbers in the picture above:
Refer to the numbers in the picture above:
backend
databaseDynatrace understands your applications transactions from end to end. This transactional insight is visualized several ways like the backtrace.
The backtrace tree view represents the sequence of services that led to this service call, beginning with the page load or user action in the browser.
Using the service flow and service backtrace, these two tools give you a complete picture of interdependency to the rest of the environment architecture at host, processes, services, and application perspectives.
Let's now take a look at the Services by clicking on the Services
left side Dynatrace menu.
Pick the backend
service.
On the backend
service, click on the Analyze Backtrace
button.
You should be on the service backtrace page where you will see information for this specific service.
This will get more interesting in the next lab, but for the monolith backend, we can see that the backtrace is as follows:
backend
backend
is called by the frontend
serviceApacheJMeter
traffic from the load generator scriptMy web application
. If you don't that is OK.If you click on any of the rows in the backtrace, the bottom portion of the page will expand.
As you plan your migration, Database observability is critical to a successful plan. Knowing the type of access, executed statements, and amount of data transferred during regular hours of operation allows for better migration planning and prioritization of the move groups. In some cases, you may decide to not migrate this database in favor of other services or databases that are less complex to migrate due to fewer dependencies.
When monitoring database activity, Dynatrace shows you which database statements are executed most often and which statements take up the most time. You can also see which services execute the database statements what will be direct input to migration planning and prioritization of the move groups.
Dynatrace monitors all the popular database SQL Server, Oracle, MongoDB to name a few. See Dynatrace documentation for more details on platform support.
To learn some out-of-the-box features of Dynatrace. Let's do a quick review of the database that exists for the sample application.
backend
service. One way is to go back to the Services
left side Dynatrace menu and then pick the backend
service.backend
service page, click on the [embedded]
database to open the database service page.The sample application uses an In memory Java relational database. On this page you can explore the database process like
By default, Dynatrace gives you FullStack horizontal (who talks to whom) and vertical (what runs on what) dependency visibility as part of Dynatrace Smartscape! All without a single line of code or configuration change – just by installing the OneAgent.
Seeing which processes make up the monolith has been an eye-opener for many teams that have done this exercise. "Oh – we completely forgot about the dependency to this legacy process we introduced 5 years ago!" – that's a common thing you hear!
As you plan your migration, knowing what technologies make up your eco-system is key so what you can decide whether to migrate, refactor or replace certain services.
The workshop is somewhat limited, so here is an example from another environment.
This is another out-of-the-box feature that helps you understand what technologies are in your environment with a heat map presentation to what degree they exist.
tag
, choose stage
, and the value of production
. It should look like this:1 . Choose the Dynatrace Hub
option from the left side menu to open the OneAgent deployment page.
2 . Explore all the integration options of Dynatrace while you are in the Hub
You can always click into the Hub
menu within Dynatrace to learn about the many technologies that Dynatrace supports.
This list is in sync and constantly updated in conjunction with the Dynatrace website hub page
By just installing the OneAgent, we have now gained a detailed topological view of sample application from the both the infrastructure and application tiers and we are now ready to tackle our adoption to the cloud armed with the answers we need.
In this section, you should have completed the following:
✅ Review Dynatrace OneAgent
✅ Review real-time data now available for the sample application
✅ Review how Dynatrace helps with modernization planning