Web applications consist of web pages that are served by web servers and web containers, 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.
Processes are essentially containers that host services. When you look at processes, you're seeing topology information. Whereas services give you code-level insight. For example, you might have a Tomcat process that hosts a web application in the form of a server-side service.
While processes are host-centric, associated with a single machine in your environment, services are request-centric and therefore typically span across multiple machines in a data center.
How services fit into the complete picture
When thinking about monitoring your application, it's helpful to remember that Dynatrace monitors all of your application's services, processes, and infrastructure. By evaluating all such components collectively, Dynatrace is able to pinpoint exactly how each service contributes to the performance of your application. For example, in Java monitoring, Dynatrace sees your host, JVM, and processes as a whole. That's how we can easily discover garbage collection issues that affect the services running in a JVM.
Dynatrace automatically detects and names your applications' server-side services based on basic properties of your application deployment and configuration.
Dynatrace monitoring of services extends all the way down to the monitoring of discrete methods. By monitoring the performance of individual methods, we can offer you deeper insight into the performance of the services that drive your application.
Dynatrace monitors all the individual components that applications are built upon: web requests, database requests, processes, services, and more. It's these individual components working together that collectively deliver what your end users view as a complete application. Dynatrace identifies and tracks each of these individual application components at a highly granular level. Dynatrace doesn't simply identify that a service is running on a server in a process but rather identifies all the details of these components. For example, Dynatrace can show you which of your web services is running on your Tomcat application server and how your Tomcat server's performance is affected by its host, or even your VMware vCenter server. In this way, Dynatrace gives you insight into the performance of your unique application stack, including all its components and connections.
To provide you with a continuous view of service flows Dynatrace uses the following means to track transactions across tiers:
x-dynatraceheader for HTTP requests
dtdTraceTagInfocustom property for Java-based messaging services
- A unique key for message queues (based on message properties)
How your service landscape can be viewed
On your home dashboard, click the Services tile to view all the services in your environment that are monitored by Dynatrace. Dynatrace offers sophisticated means for analysis that enable you to gain insight into your server-side-services.
Dynatrace even enables you to visualize the complexities of your application stack and delivery chain with Smartscape technology. In a Smartscape visualization, you can see which individual web page calls which specific web server, the application server that receives the resulting web requests, and where the resulting web request service calls are sent.
Scope and usage of services
As service landscapes can become quite complex, Dynatrace automatically categorizes services based on their dependencies to other entities like services or applications.
Entry points: These services represent the first touch of a transaction with a monitored server-side service and are the starting points of PurePaths on the server-side. Entry point services usually represent services on top of a monitored web server or public API. Services can have entry point transactions as well as transactions that orginate with other monitored components.
Used by applications: These services are called by web applications, mobile apps, or custom applications (i.e., all applications that are monitored with Real User Monitoring). All Used by applications services are also Entry point services.
External dependencies: These services represent outgoing calls to systems that aren't monitored with the current Dynatrace environment. There are two types of external dependencies:
Calls to public networks: These services represent outgoing calls that are resolved to a public IP address and are therefore usually outside of your company network. A call to a payment provider like
paypal.comis an example of an external dependency.
Calls to unmonitored hosts: These represent calls that resolve to a private (internal) IP address and are usually under the responsibility of your organization. Therefore dedicated monitoring of these dependencies with OneAgent, or via Custom device monitoring, is recommended to gain visibility into these parts of your environment.
Background activity: These services represent requests that are executed within background threads.
Internal only: These services are only called by other monitored services. Therefore these services don't behave as entry points and they don't have any direct relation to applications.
Note: The scope and usage of your services are dynamically detected states. For example, soon as an "Internal only" service receives requests, that service is re-categorized as an "Entry point" service.