Icon

Comments have been closed on this page. Please use AppMon & UEM Open Q & A forum for questions about this plugin.

Description

The Server Timeline dashlet can be used to perform detailed and visual analysis of transactions captured by any Dynatrace agent (Java, .NET, Webserver, Native ADK).

The following screenshot shows the dashlet with some sample data from EasyTravel along with annotations that explain the various parts of the dashlet UI:

Overview

Icon

This is an experimental release. Use at your own risk. Do not use in production.
Please let us know what you think in the forum.

Name

Dynatrace Server Timeline Dashlet

Product Version

Dynatrace 5.6+

Author

Dynatrace LLC

Plugin Version

Matching the product version

Download

AppMon 2018 October (7.2)
AppMon 2018 April (7.1)

AppMon 2017 May (7.0)

Dynatrace AppMon 6.5
Dynatrace 6.3

License

Dynatrace Experimental Software License

Support

Experimental - Not Supported

Table of content

Requirements

This dashlet performs a lot of analysis directly in the client and therefore typically requires

  • More heap memory in the client: 768M is recommended for analyzing up to 300.000 records, 1024M is recommended for analyzing up to 1 million records.
  • More bandwidth from the Dynatrace client to the Dynatrace server: A full refresh of the dashlet with 300.000 records transfers about 10 MB of data from the server to the client.

Presented data

The following sample illustrates the data presented by the Server Timeline dashlet. Assume that we analyze a single PurePath that was created for a HTTP request handled by a Servlet. The servlet internally calls 2 backend services via RMI in order to fulfill the request:

| Method                     | Argument     | Exec Total | API      | Agent    |
+----------------------------+--------------+------------+----------+----------+
| doGet                      | /booking.jsp |       1000 | Servlet  | Frontend |
|   checkCreditCard          | -            |        400 | Remoting | Frontend |
|     Synchronous Invocation | -            |          - | -        | -        |
|       checkCreditCard      | -            |        300 | Remoting | Backend  |
|   processBooking           | -            |        500 | Remoting | Frontend |
|     Synchronous Invocation | -            |          - | -        | -        |
|       processBooking       | -            |        400 | Remoting | Backend  |
|         executeQuery       | SELECT * ... |        200 | JDBC     | Backend  |

This results in 4 server calls. 1 for the entry point of the transaction in the frontend, 2 for the backend service calls and 1 special record for the slow database query.

Property

HTTP request

RMI call to checkCreditCard

RMI call to processBooking

Database query

Name

/booking.jsp

checkCreditCard

processBooking

SELECT * FROM Account

AgentName

Frontend

Backend

Backend

Database

EntryPoint

true

false

false

false

WebRequest

true

false

false

false

Kind

Web Request

Remoting

Remoting

Database

Http.Request.Method

GET

-

-

-

Duration

1000

300

400

200

SelfTime

300

300

400

-

RemotingCount

2

0

0

-

RemotingTime

900

0

0

-

DatabaseTime

0

0

200

-

TotalDatabaseTime

200

0

200

-

The timeline will visualize the start time and the duration of each of those server calls with a box.
The tree table below shows all server calls that match a specific filter expression (e.g. all transaction entry points) and group them together hierarchically using certain properties (e.g. by agent name and URL).
The histogram, scatter plot or bar chart on the bottom will help to visualize certain metrics for a group of calls (e.g. all HTTP requests with a specific URL).

The following table shows a few different filter expression and the matching server calls:

Filter Expression

Matching server calls

EntryPoint

/booking.jsp

Agent = "Backend"

checkCreditCard, processBooking

Kind = "Database"

SELECT * FROM Account

Duration >= 500

/booking.jsp, processBooking

DatabaseTime > 100

processBooking

Organizing the server calls hierarchically into groups is important to make sense of the data, especially if thousands of calls have to be analyzed.

Without any splitting criteria the dashlet will show a flat list of records, similar to the upper table in the PurePath dashlet.

| Name                    | Splitting  | Count | Duration | SelfTime | Database Time |
+-------------------------+------------+-------+----------+----------+---------------+
| /booking.jsp            | -          |     1 |     1000 |      300 |             0 |
| checkCreditCard         | -          |     1 |      300 |      300 |             0 |
| processBooking          | -          |     1 |      400 |      400 |           200 |
| SELECT * FROM Account   | -          |     1 |      200 |        - |             - |

Splitting by Agent results in:

| Name                    | Splitting  | Count | Duration | SelfTime | Database Time |
+-------------------------+------------+-------+----------+----------+---------------+
| Frontend                | Agent      |     1 |     1000 |      300 |             0 |
|   /booking.jsp          | -          |     1 |     1000 |      300 |             0 |
| Backend                 | Agent      |     2 |      700 |      700 |           200 |
|   checkCreditCard       | -          |     1 |      300 |      300 |             0 |
|   processBooking        | -          |     1 |      400 |      400 |           200 |
| Database                | Agent      |     1 |      200 |        - |             - |
|   SELECT * FROM Account | -          |     1 |      200 |        - |             - |

Splitting by EntryPoint results in:

| Name                    | Splitting  | Count | Duration | SelfTime | Database Time |
+-------------------------+------------+-------+----------+----------+---------------+
| true                    | EntryPoint |     1 |     1000 |      300 |             0 |
|   /booking.jsp          | -          |     1 |     1000 |      300 |             0 |
| false                   | EntryPoint |     3 |     1100 |      700 |           200 |
|   checkCreditCard       | -          |     1 |      400 |      300 |             0 |
|   processBooking        | -          |     1 |      500 |      400 |           200 |
|   SELECT * FROM Account | -          |     1 |      200 |        - |             - |

Splitting first by EntryPoint and then by Kind results in:

| Name                      | Splitting  | Count | Duration | SelfTime | Database Time |
+---------------------------+------------+-------+----------+----------+---------------+
| true                      | EntryPoint |     1 |     1000 |      300 |             0 |
|   Web Request             | Kind       |     1 |     1000 |      300 |             0 |
|     /booking.jsp          | -          |     1 |     1000 |      300 |             0 |
| false                     | EntryPoint |     3 |     1100 |      700 |           200 |
|   Remoting                | Kind       |     2 |      900 |      700 |             0 |
|     checkCreditCard       | -          |     1 |      400 |      300 |             0 |
|     processBooking        | -          |     1 |      500 |      400 |           200 |
|   Database                | Kind       |     1 |      200 |        - |             0 |
|     SELECT * FROM Account | -          |     1 |      200 |        - |             - |

Dashlet functionality

The dashlet consists of 3 major areas.

  • The graph on top visualizes the start time and duration of server calls in a timeline.
  • The tree in the center can be used to filter and group together server calls in order to analyze the resulting aggregated metrics.
  • The charts on the bottom can be used to visualize certain metrics for groups of server calls selected in the table.

Dashlet display options

The dashlet display options allow to adapt the basic layout and workflow of the dashlet:

  • Show timeline
  • Show table
  • Show charts
  • Apply filter expression to timeline: If this option is enabled, the timeline will only show server calls that match the filter expression usually only used for filtering the table.
  • Apply table selection to timeline: If this option in enabled, the timeline will highlight server calls that are selected in the table below. If this option is disabled, it is possible to filter the table by selection server calls in the timeline.

Timeline

The timeline visualizes the start time and duration of server calls in a chart the uses time as its X-axis.

The toolbar on top can be used to:

  • Preconfigure the timeline, table, and charts for some common analysis workflows (Run analysis)
  • Change the zoom level of the chart. However in most cases zooming with the mouse will be simpler and more accurate.
  • Change the way how similar server calls are grouped together in the timeline (Group by)
  • Change the way how colors are used to visualize specific metrics in the timeline (e.g. color calls that use a lot of CPU red and others green)

The context menu additionally allows to configure the following options:

  • Maximum number of rows: This setting allows to limit the maximum number of concurrent server calls that are shown for a single group.
  • Measures: These settings are used to configure the heat charts that are visible above server calls that are grouped by agent name and host.
    • Host CPU utilization:
    • Process CPU utilization:
    • Host memory utilization:
    • Process memory utilization: This requires a subscription of the Java Virtual Machine - Memory Utilization measure in the system profile.

Run analysis

Name

Effect

Analyze all transaction entry points

Timeline: Group by agent name and host.
Table filter: EntryPoint AND NOT Processing
Table splitting: AgentGroup, AgentName, Kind, Name

Analyze HTTP requests

Timeline: Group by HTTP host.
Table filter: EntryPoint AND NOT Processing AND WebRequest
Table splitting: Application, Http.Request.Host, Http.Request.PathTree, Http.Request.URI

Analyze HTTP errors

Timeline: Group by HTTP host, color by HTTP response code.
Table filter: EntryPoint AND NOT Processing AND WebRequest AND Http.Response.Status >= 400
Table splitting: Http.Response.Status, Http.Request.Host, Http.Request.PathTree, Http.Request.URI

Analyze agents

Timeline: Group by agent name and host, color by consumed CPU time.
Table filter: NOT Processing
Table splitting: AgentGroup, AgentHost, AgentName, Kind, Name

Analyze database usage per transaction

Timeline: Group by agent name and host, color by amount of time spent for database calls.
Table filter: EntryPoint AND NOT Processing AND TotalDatabaseCount > 0
Table splitting: AgentGroup, AgentName, Kind, Name

Analyze garbage collection impact on transaction

Timeline: Group by agent name and host, color by amount of time spent for GC.
Table filter: EntryPoint AND NOT Processing AND TotalGarbageCollection > 0
Table splitting: AgentGroup, AgentName, Kind, Name

Analyze synchronization impact on transaction

Timeline: Group by agent name and host, color by amount of time spent for lock synchronization.
Table filter: EntryPoint AND NOT Processing AND TotalSyncAndWaitTime > 0
Table splitting: AgentGroup, AgentName, Kind, Name

Analyze geographical client locations of HTTP requests

Timeline: Group by country of HTTP client.
Table filter: EntryPoint AND NOT Processing AND WebRequest
Table splitting: Http.Client.LocationTree, Http.Request.Host, Http.Request.URI

Analyze user agents of HTTP requests

Timeline: Group by browser used by HTTP client.
Table filter: EntryPoint AND NOT Processing AND WebRequest
Table splitting: Http.Client.BrowserTree, Http.Request.Host, Http.Request.URI

Analyze transferred bytes for HTTP requests

Timeline: Group by HTTP host.
Table filter: EntryPoint AND NOT Processing AND WebRequest AND (Http.Request.Size >= 0 || Http.Response.Size >= 0)
Table splitting: Application, Http.Request.Host, Http.Request.PathTree, Http.Request.URI

Analyze HTTP requests taking longer than 1s

Timeline: Group by HTTP host.
Table filter: EntryPoint AND NOT Processing AND WebRequest AND Duration > 1
Table splitting: Application, Http.Request.Host, Http.Request.URI

Analyze HTTP requests consuming more than 1s of CPU time

Timeline: Group by HTTP host.
Table filter: EntryPoint AND NOT Processing AND WebRequest AND TotalCPU > 1
Table splitting: Application, Http.Request.Host, Http.Request.URI

Analyze HTTP requests making more than 100 database calls

Timeline: Group by HTTP host.
Table filter: EntryPoint AND NOT Processing AND WebRequest AND TotalDatabaseCount > 100
Table splitting: Application, Http.Request.Host, Http.Request.URI

Analyze HTTP requests from robots

Timeline: Group by browser.
Table filter: EntryPoint AND NOT Processing AND WebRequest AND Http.Client.BrowserType = "Robot"
Table splitting: Http.Client.BrowserTree, Http.Request.Host, Http.Request.URI

Group by

This setting effects the way how server calls are grouped together vertically into named groups. The following splittings are available in the timeline:

  • Agent ID and Thread
  • Agent ID
  • Agent name and host (default)
  • Agent name
  • Agent host
  • Agent group
  • Application
  • Kind
  • HTTP request method
  • HTTP host
  • HTTP response code
  • HTTP response content type
  • Browser type
  • Browser
  • Continent
  • Country

Color by

This setting effects the color used for painting server calls in the timeline. The following coloring criteria are available in the timeline:

  • None (default): All server calls are colored in a neutral blue
  • Agent name and host: Use different colors for server calls on different agents
  • Application
  • Kind
  • HTTP request method
  • HTTP host
  • HTTP response code
  • HTTP response content type
  • Browser type
  • Browser
  • Continent
  • Country
  • CPU %: Percent of time consuming CPU time while executing server call
  • Self time %: Percent of time spent in this server call without time spent in child calls
  • Garbage Collection %: Percent of time spent in garbage collection
  • Synchronization %: Percent of time spent for synchronizing with other threads (e.g. using locks)
  • Database + Web Service + Remoting %: Percent of time spent for waiting for either database, web service or remoting calls
  • Database %: Percent of time spent for waiting for database calls
  • Web Service %: Percent of time spent for waiting for web service calls
  • Remoting %: Percent of time spent for waiting for remoting calls
  • HTTP Requests %: Percent of time spent for waiting for HTTP requests

Tree with filtering and grouping capabilities

The tree in the center of the dashlet allows flexible filtering and grouping of server calls. Both are based on text-based expressions that are similar to conditions in C-based programming languages.

The toolbar on top can be used to:

  • Change the current filter or splitting expression
  • Choose between a couple of predefined filter or splitting expressions
  • Save the current filter or splitting expression so that is can easily be reused later.

The context menu additionally provides the following actions:

  • Focus on selected records: Show and analyze only the selected server calls in the timeline and tree. This can be used to reduce data similar to applying a filter expression. E.g. a typical workflow would be to split by URI and then focus on the requests consuming the most amount of CPU time.
  • Focus on selected PurePaths: Show and analyze only server calls of PurePaths contained in the current selection in the timeline and tree. This is similar to a drill-down without leaving the current dashlet.
  • Previous focus: Restore the focus after it was changed by one of the first 2 actions.
  • Reset focus: Reset the focus so that all server calls (matching the filter expression) are again showed in the timeline and tree.

Available values

All values are case insensitive.

Icon

Note, that the text controls provide completion of value names by pressing Ctrl + Space.

Property

Type

Description

Example

Agent

String

Agent identifier using the format <agent-name>@<agent-host> [<agent-id>]

dotNetFrontend_easyTravel@dynaday [703ad952]

AgentName

String

The name of the agent

dotNetFrontend_easyTravel

AgentGroup

String

The name of the agent group

Customer Web Frontend (Java)

AgentNameAndHost

String

Agent name and host using the format <agent-name>@<agent-host>

dotNetFrontend_easyTravel@dynaday

AgentHost

String

The host of the agent

dstadler

ThreadName

String

The name of the current thread

http-bio-8080"-exec-7

EntryPoint

Boolean

Whether this call is the start of a transaction

-

ThrewException

Boolean

Whether this call threw an exception

-

CompareSource

Boolean

Whether this call comes from the comparison source session

-

Processing

Boolean

Whether this call was still in progress during analysis of the dashlet

-

Error

Boolean

Whether this call resulted in some kind of error as specified by the "Error Detection" section in the system profile

-

Kind

String

Classification of call in "Method Call", "Web Request", Web Service", "Remoting", "Messaging", "Database", and "Client-side call"

-

All

Splitting

Special splitting criteria that always yields the value "All". Useful for getting overall metrics without splitting

-

Name

String

A short string representation of the call, e.g. URI for web requests, method name for method calls, etc.

/index.htm, SomeClass.someMethod()

Application

String

The name of the application, as specified by the "Applications" section in the system profile

easyTravel portal

HTTP requests

WebRequest

Boolean

Whether this call was processing a web request, same as Kind == "Web Request"

-

Http.Request.Method

String

The HTTP method used for this request

GET, POST

Http.Request.Host

String

The value of the HTTP "Host" request header.

www.compuware.com

Http.Request.URI

String

The URI path of the HTTP request

/index.htm

Http.Request.Query

String

The query string of the HTTP request

param=value

Http.Request.Referrer

String

The value of the HTTP "Referer" request header

http://localhost:8080/legal-orange.jsf

Http.Request.Header[name]

String

The value of some specific HTTP request header. This requires capturing of this header in the Servlet, ASP or web request sensor.

E.g. for RequestHeader["Connection"] the value "keep-alive"

Http.Request.Cookie[name]

String

The value of some specific cookie

E.g. for Cookie["jsessionid"] the value "19123012397232"

Http.Request.Path

Splitting

Special splitting value, that splits the HTTP URI path hierarchically on every folder identified by "/"

Http.Request.Size

Integer (bytes)

The amount of data transfered from the HTTP client to the server. Requires capturing of request/response sizes in Servlet, ASP or web request sensor.

Http.Response.Status

String

The HTTP response code for the HTTP request

"200 - OK", "304 - Not modified", etc.

Http.Response.ContentType

String

The value of the HTTP "Content-Type" response header

"text/html", "image/png", etc.

Http.Response.ContentEncoding

String

The value of the HTTP "Content-Encoding" response header

"gzip"

Http.Response.Header[name]

String

The value of some specific HTTP response header. This requires capturing of this header in the Servlet, ASP or web request sensor.

E.g. for ResponseHeader["Cache-Control"] the value "max-age=0, no-cache, no-store, must-revalidate"

Http.Response.Size

Integer (bytes)

The amount of date transfered from the HTTP server to the client. Requires capturing of request/response sizes in Servlet, ASP or web request sensor.

Http.Client.IP

String

The IP address of the HTTP client requesting a resource

192.168.1.50

Http.Client.Host

String

The host name of the HTTP client requesting a resource.

machine.host.local

Http.Client.Continent

String

The continent where the HTTP client is located

North America

Http.Client.Country

String

The country where the HTTP client is located

United States

Http.Client.Region

String

The region where the HTTP client is located

California

Http.Client.City

String

The city where the HTTP client is located

Palo Alto

Http.Client.Location

String

The physical location of the HTTP client requesting a resource

North America - United States - California - Palo Alto

Http.Client.LocationTree

Splitting

Special splitting value, that splits first by continent, then by country, region and finally city.

Http.Client.BrowserType

String

The category of browser making the HTTP request

"Browser", "Mobile Browser", or "Robot"

Http.Client.Browser

String

The browser family making the HTTP request

"IE", "Firefox", "Chrome", "Safari", etc.

Http.Client.BrowserVersion

String

The specific browser (with version number) making the HTTP request

"IE 8.0", "Firefox 6.0", etc.

Http.Client.BrowserTree

Splitting

Special splitting value, that splits first by browser type, followed by browser family and finally browser version.

Http.Client.OperatingSystem

String

The operating system used by the HTTP client.

"Windows XP", "Windows 7", "iOS", etc.

Http.Client.UserAgent

String

The value of the HTTP "UserAgent" request header

Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.15) Gecko/20110303 Firefox/5.0

Metrics for a specific server call

Duration

Float (seconds)

The total execution time of a call.

-

CPU

Float (seconds)

The amount of CPU time consumed by a call

-

SelfTime

Float (seconds)

The amount of time spent on a specific subpath, excluding children

-

GarbageCollection

Float (seconds)

The amount of time spent for garbage collection on a specific subpath

-

SyncAndWaitTime

Float (seconds)

The amount of time spent for synchronization on a specific subpath

-

DatabaseCount

Integer

The number of database calls made on a specific subpath

-

DatabaseTime

Float (seconds)

The total amount of time spent for database calls on a specific subpath

-

WebServiceCount

Integer

The number of webservice calls made on a specific subpath

-

WebServiceTime

Float (seconds)

The total amount of time spent for web service calls on a specific subpath

-

RemotingCount

Integer

The number of remoting calls made on a specific subpath

-

RemotingTime

Float (seconds)

The total amount of time spent for remoting calls on a specific subpath

-

MessagingCount

Integer

The number of messages sent on a specific subpath

-

MessagingTime

Float (seconds)

The total amount of time spent for sending messages on a specific subpath

-

ExceptionCount

Integer

The total number of exceptions thrown on a specific subpath

-

Metrics for a specific server call and its children

TotalCPU

Float (seconds)

The total amount of CPU time consumed by subpath and its children

-

TotalGarbageCollection

Float (seconds)

The amount of time spent for garbage collection on a specific subpath and its children

-

TotalSyncAndWaitTime

Float (seconds)

The amount of time spent for synchronization on a specific subpath and its children

-

TotalDatabaseCount

Integer

The number of database calls made on a specific subpath and its children

-

TotalDatabaseTime

Float (seconds)

The total amount of time spent for database calls on a specific subpath and its children

-

TotalWebServiceCount

Integer

The number of webservice calls made on a specific subpath and its children

-

TotalWebServiceTime

Float (seconds)

The total amount of time spent for web service calls on a specific subpath and its children

-

TotalRemotingCount

Integer

The number of remoting calls made on a specific subpath and its children

-

TotalRemotingTime

Float (seconds)

The total amount of time spent for remoting calls on a specific subpath and its children

-

TotalMessagingCount

Integer

The number of messages sent on a specific subpath and its children

-

TotalMessagingTime

Float (seconds)

The total amount of time spent for sending messages on a specific subpath and its children

-

TotalExceptionCount

Integer

The total number of exceptions thrown on a specific subpath and its children

-

Syntax of filter expressions

The syntax of filter expressions is similar to expressions in other programming languages.

Expression

Description

false

Boolean constant false

true

Boolean constant true

42

Arbitrary integer constants

3.14

Arbitrary floating point constants

"abc"
'abc'

Arbitrary text constants

/a*(bb)+/

Arbitrary regular expressions (Java syntax)

A || B
A | B
A or B
A OR B

Either A or B must be true

A && B
A & B
A and B
A AND B

Both A and B must be true

A != B
A <> B

A is not equal to B

A = B
A == B

A is equal to B

A ~ "test"

A contains string "test"

A < B

A is smaller than B

A > B

A is greater than B

A <= B

A is smaller than or equal to B

A >= B

A is greater than or equal to B

A ~= /hello|world/
A =~ /hello|world/

A matches a regular expression

A !~= /hello|world/
A !=~ /hello|world/
A <>~ /hello|world/

A does not match a regular expression

A like "%.gif"
A LIKE "%.gif"

A matches a simple expression with placeholder % (similar to SQL)

A unlike "%.gif"
A UNLIKE "%.gif"

A does not match a simple expression with placeholder % (similar to SQL)

A + B

the sum of A and B

A - B

B subtracted from A

A * B

the product of A and B

A / B

A divided by B

NOT A

A must not be true

A * (B + C)

Parenthesis can be used to influence operator precedence

The following sample shows a filter expression that shows all server calls, that are entry points into a PurePath, are triggered by HTTP requests, triggered at least 1 call to a database and took longer than 1 second to execute:

EntryPoint AND WebRequest AND TotalDatabaseCount > 0 AND Duration > 1

Syntax of splitting expressions

The syntax of splitting expressions is very simple. It is just a comma (,) separated list of values that can be converted to strings.

For example, the following expression splits first by HTTP host and then by URI path:

Http.Request.Host, Http.Request.Uri

Charts

Dashlet properties

The dashlet properties allow to adapt the analysis of PurePaths for this dashlet:

  • Result limit: This setting limits the maximum number of server-side calls that can be analyzed by the dashlet and shown in the timeline.
  • Percent of analyzed PurePaths: This setting can be used to enable sampling of PurePaths for analysis in order to analyze larger timeframes before reaching the result limit
  • Pre-filter expression: Filter server calls before sending the results from the Dynatrace server to the Dynatrace client. This can be useful when pure client-side filtering is not possible due to reaching the result limit too soon.
  • Show client-side calls and minimum duration: If this is enabled, the timeline also shows outgoing client-side calls that do not have a corresponding server-side call, e.g. for calls to third-party APIs. Only calls that take longer than a certain threshold are shown.
  • Show database calls and minimum duration: If this is enabled, the timeline also shows database calls the take longer than a certain threshold.

Additional Screenshots

The following screenshot shows how the timeline could be used in full screen mode in a dashboard for monitoring.

  1. Anonymous (login to see details)

    Nice Dashlet, I like the potential, However, it does not render properly in the Mac Client, the timeline does not show up.

    1. Anonymous (login to see details)

      Thank you for reporting this problem. I was now able to reproduce it on a colleague's machine. We may be able to look into this after the Christmas holidays.

  2. Anonymous (login to see details)

    Wow this dashlet is schweeet! To be able to basically create filters and slittings on the fly for isolated triage usage, even against a stored session ... dang this is HOT!! Thank you!!

    1. Anonymous (login to see details)

      Thank you for the kind words. I am glad that you can make good use of our flexible filtering and splitting mechanism. Please don't hesitate to report any problems, or provide feedback on missing functionality and documentation.

  3. Anonymous (login to see details)

    Awesome Dashlet! It works amazingly well in visualizing asynchronous PurePaths.

    Is it possible to see the calls to DBs and External Services that show up in TXFlow where we don't have agents deployed?

    Also, it is possible when grouping by Agent Name or Agent Group to sort by which Agent/AgentGroup was invoked first rather than alphabetically?

    1. Anonymous (login to see details)

      Yes, it is possible to show calls to databases or external services:

      1. Open the context menu and choose "Dashlet properties"
      2. Switch to the "Analysis" tab
      3. Enable "Show client-side calls" and choose a suitable minimum duration (e.g. 0 to show all of them).
      4. Enable "Show database calls" and choose a suitable minimum duration (e.g. 0 to show all of them).

      It is currently not possible to change the alphabetical ordering in the timeline. But I agree that allowing to switch to some form of hierarchical ordering would be a useful improvement.

  4. Anonymous (login to see details)

    Hi Markus,

    I see cases where the Server Timeline dashlet reports sync time but when I look at the purepath using other dashlets I do not see any sync time. Is this a known problem? If not what should I do? For example I have a single purepath that demonstrates this problem on my system.

    Thanks,
    Rich

    1. Anonymous (login to see details)

      One possible explanation might be that the Server Timeline includes "Wait time" in "Sync time" while other dashlets may show those as 2 separate values. I can take a quick look at your specific sample. Please export a PurePath into a session and send the session to markus.gaisbauer@compuware.com.

  5. Anonymous (login to see details)

    Awesome dashlet, really helps me be more productive, thanks!

    One issue that I'm having is that Timed Out PurePaths don't seem to show up.  Is this by design, or something that I can do about this?  It would really help me out when we have servers go down because of deadlock issues (or other similar typed things).

    1. Anonymous (login to see details)

      Timed out PurePaths are currently hidden by design. It would be possible to add an option to show them in a future version. Very long running, still processing PurePaths that have not timed out yet, should however be visible in the timeline. 

  6. Anonymous (login to see details)

     

    Fired this up in our Dev env today, very cool! Is there any plan on this moving out of the Lab stage and into a full community plugin?

    1. Anonymous (login to see details)

      dynaTrace Labs simply means that this is a community plugin developed by the dynaTrace engineering team. We will try to keep it compatible with newer releases and fix major bugs. It is still experimental but feel free to use it like any other community plugin in your environment. 

  7. Anonymous (login to see details)

    We are in EAP with 5.6 and are relying heavily on this in the 5.5 environment.   Any chance we can get this plugin made available for 5.6 beta?  I have not tried the 5.5 but I am assuming it's not forward compatible.

    1. Anonymous (login to see details)

      Hi Colin,

      It's now available through the EAP downlaod page...

      Have fun,

      Kurt 

      1. Anonymous (login to see details)

        Great turnaround!  Thanks guys!!

  8. Anonymous (login to see details)

    It would be nice to see BT splits like web service method name added to the options for splittings.

    1. Anonymous (login to see details)

      It is unfortunately not possible to provide the full power and flexibility of business transactions splits in the dashlet. Currently all server side web service calls show up as generic web requests in the server timeline. I agree that this is not optimal and could be improved. Do you use the same URI for many different web service methods? Can you export and send me a small session which I could use to test changes in the dashlet? Which splits other than web service method name are you missing?

      1. Anonymous (login to see details)

        Thanks Markus.  We do alot of context splitting on data pulled from methods.  Mainly for looking at which apps are calling shared services, or which firms are making the calls..  the out of the box BT support would be outstanding...  It would be even better if we could load in custom splits. having the multiple transaction types in the scatters and histograms is nice and being able to use that power to handing business analytics would be powerful...  Right now I am having to move that type of data to splunk and do it there.    Despite this shortcoming, I still think this dashlet is one of the most powerful capabilities on top of dT presently...

  9. Anonymous (login to see details)

    Awesome dashlet!  How does one use it to compare two sessions?  I assume this is possible using the "CompareSource" property.

    1. Anonymous (login to see details)

      Support for comparing two sessions is quite limited right now. The timeline simply shows transactions from both sessions in the same chart. You guessed correctly that it is possible to use the CompareSource splitting transactions into those coming from the source session (CompareSource = false) and those coming from the comparison session (CompareSource = true). If you use CompareSource  as the last splitting criteria you can then use the tree and the charts to see if there are any differences between the two sessions (e.g. compare histograms of transaction durations).

      See the following screenshot for an example: timeline_compare.png 

  10. Anonymous (login to see details)

    I believe this truly is one of the more useful views when dealing with "threading" issues and for things like load tests when throughput is not what you expect. It makes it easy to visualize what's going on in a single view. Are there any plans to make this permanently part of the product?

  11. Anonymous (login to see details)

    Very good dashboard. We already found some special behaviours in our environment. When will it be ready for production environments?

    Is there a possibility to deactivate or delete this plugin? Haven't found it up to now.

    1. Anonymous (login to see details)

      Hi. This plugin can be used in production environments. It doesnt impact data collection as it helps analyzing data. The only thing you want to be careful with is the timeframe you are analyzing. if you select a very long timeframe the dT server needs to analyze a lot of Purepaths. One option to not "stress" the dT server with these analysis tasks is to export a session to a second dT server that you use for data analysis.

      But - you should be safe on a production server when analyzing shorter timeframes.

      You also said that you have already identified some special behaviours. let us know if you have anything to share. We are always looking for best practices and problem patterns to write about

    2. Anonymous (login to see details)

      Glad that you like the dashlet and can make use of it in your environment. 

      The dashlet is only activated on-demand when someone uses it in the client, so there is limited risk when using it in production environments. Similar to other dashlets it can cause memory pressure and disk IO in the dynaTrace server when analyzing very large amounts of data. Also keep in mind, that we recommend to start the client with enough memory when using this dashlet.

      Unfortunately it is currently only possible to remove to dashlet by deleting the binaries directly on the file system. We hope we can improve this in future releases.

  12. Anonymous (login to see details)

    Thx for your replies.

    I found a small issues on this board. The legend overlays a part of the chart, which is probably not the best.

    There is another issiue, but I am not sure, if I am just a bit confused.
    I activated the plugin on test environment.

    A few days later, it was shown under production, but I couldn't remember to have it installed there. I also haven't found an entry in the logs for the installation.
    When I opened the dashboard, there were no data and the logs write this:

    WARNING [PortletTypeRegistry] Could not find portlet type with ID: com.dynatrace.diagnostics.servertimeline.ServerTimeline

    Today I installed the plugin on production (again?) and now the dashboard shows data.

     

    For the usecase:

    We have some problems with our system monitoring tool nagios (funny - who watches the watchers..), so we installed a dynaTrace-WebServer Agent on it.

    Analyzing with BT and PurePath was very hard. We haven't got a real clue. But, when I activated the timeline, we were able to see, that every 10 to 12 minutes three different python requests need 60 seconds instead of a few moments. All those requests were started nearly at the same time.

    Up to now, we are looking for this one job (on our Nagios are a lot of them), which starts every 10 minutes and stops the application.

     

     

    1. Anonymous (login to see details)

      Thank you for your feedback. Regarding the second issue: I think this occurs when connecting to more than 1 dynaTrace servers with a dynaTrace client. In your case, the plugin was available in your client, but only in 1 out of 2 connected dynaTrace servers. I agree, the client should not show the Server Timeline dashlet in the cockpit if it is not available on a specific dynaTrace Server. We will look into this, but I fear we will not be able to fix this short term. 

  13. Anonymous (login to see details)

    I have tried installing this plugin on dT 5.6 build 5713 on Windows Server 2008. After installing the plugin the server restarted but the dashlet did not appear. I restarted the client but the dashlet still did not appear. I manually restarted the server service and then the dashlet appeared. Is this normal behavior?

    I also have a client having a similar issue on Linux with dynaTrace 5.6 build 5713 (Case #: 00846278).

    1. Anonymous (login to see details)

      Found the solution. You need to have the "PowerUser" role.

      $ egrep "Power|Timeline" ./server/conf/user.permissions.xml
      <role description="PowerUser User Role" name="PowerUser">
      <permission id="com.dynatrace.diagnostics.PluginDescription:Server Timeline Dashlet (dynaLabs)" />

    2. Anonymous (login to see details)

      I also had to manually restart the server to see this dashlet.

  14. Anonymous (login to see details)

    A get a permission Error when trying to download the 5.6 version. The 5.5 Download workds very well

      1. Anonymous (login to see details)

        That worked. Thx a lot

  15. Anonymous (login to see details)

    Does this work in v6 with the latest version - .6733?  I just downloaded for 6.0.6733 (file had the correct version in the file name with .6733) and when the dashboard was not present after server restart, I looked at the JAR file and it has version 6.0.6709.  The plugin config in DT also shows the version as .6709.  As a result the dashboard is not present in my system.

    1. Anonymous (login to see details)

      Hi Brien

      The plugin should just work fine with 6.0. Just make sure that - after installing the latest version of the plugin that you first restart your server - then your client

      Andi

  16. Anonymous (login to see details)

    I did that.  Even rebooted.  See screen shots below.

  17. Anonymous (login to see details)

    I think I understand now where the confusion comes from. The Server Timeline Dashlet is a "DASHLET" - not a Dashboard. similar to the PurePath Dashlet or the Database dashlet you can put it on any dashboard you have. So - please open an empty dashboard and add the "Server Timeline" dashlet on it.

  18. Anonymous (login to see details)

    Ahh.  I see it now.  It is in the tree.  Sorry about that and thank you for the quick reply!!

  19. Anonymous (login to see details)

    Would like to see a similar timeline for the user action PPs. And color around slow third party calls. Any chance?

  20. Anonymous (login to see details)

    Any plans to support this dashlet in 6.1? Looks like it is not working...

     

  21. Anonymous (login to see details)

    Markus,

    We are putting 6.2 into lower environments today.  Is there a new build for this plugin for the latest version or should we plan on staying with the latest release?

    1. Anonymous (login to see details)

      Unfortunately each release of the Server Timeline plugin targets only a specific version of dynaTrace and will work only there. We will provide a version supporting 6.2 soon. If you can't wait, I can send you a local build by mail. 

  22. Anonymous (login to see details)

    Hey markus.. please do... colin_fallwel@intuit.com

  23. Anonymous (login to see details)

    Hello.

    If the results was over 100,000, I can't see the result in table view with "flat mode".
    If I set the result limit to 100,000, it's okay.
    But, I changed to 300,000, I could not anythings in table view.

    The total rows that I tried to display in table view is 170,000.
    The table view have a limitation when display the results?

    < When the result limitation set 300,000 >

     

    Hongso.

    1. Anonymous (login to see details)

      Sorry for the late response, I was out of office for a while. Yes, unfortunately we had to add a limit for stability and performance reasons. It is always possible to reduce the number of rows by applying a filter or by first setting the focus on a specific set of transactions (via context menu). Can you describe your use case where showing 170.000 rows in a table is useful for you?

      1. Anonymous (login to see details)

        Hello.

        Thank you for your reply.

        I should send the raw data to the other system.

        Because, the customer want to calculate amount of clients.

        So, I modified the program for interface like following.

        1. Select the count with time period.
        2. Split time period with not over 100,000
        3. Retrieve data with split time by looping.

         

        Regards,

        Hongso.

  24. Anonymous (login to see details)

    Hello all.  Not sure if this is the appropriate place to ask this question or report this bug but I searched the forums and this seemed like the best place.  Advise if I should post it in a forum.

    We ran into a situation using this dashlet where a super long transaction, the attached screenshot shows the STD showing that the host was struggling but the PurePath that caused the issue doesn't show up in the thread list.  Perhaps it is because the PP timed out, but I that transaction did not show up on the list to be analyzed, but I told my architect that I would check with Dynatrace and see what you thought about this not showing up.

    The screenshot of what I am seeing is available but no public place to post it.  PM me or I can email it to those who need a visual.

     

    Thanks,

    Jim

     

     

    1. Anonymous (login to see details)

      Hi Jim,

      Per Markus' response to an earlier comment:

      "Timed out PurePaths are currently hidden by design. It would be possible to add an option to show them in a future version. Very long running, still processing PurePaths that have not timed out yet, should however be visible in the timeline."

      Hope that helps.

      Jake

  25. Anonymous (login to see details)

    Hi Markus,

     

    Will this dashlet be updated to support version 6.2? I can't get the 6.1 dashlet to install in 6.2.

     

    Thanks!

    1. Anonymous (login to see details)

  26. Anonymous (login to see details)

    Hi 

    I have installed the plugin

    I do see it in the plugin list after restart

    I do not see any option available in the new dashlet wizard

    Seems I do not have grants to attach screenshots

     

    1. Anonymous (login to see details)

      Hi. Can you post this question + screenshot on our discussion forum? http://answers.dynatrace.com?

  27. Anonymous (login to see details)

    Support for 6.3EAP?

    1. Anonymous (login to see details)

      HAve you tried it? I think the current version might JUST WORK!

      1. Anonymous (login to see details)

        I tried it but it doesn't list in installed plugins. And I can't see it in the cockpit.

        1. Anonymous (login to see details)

          Hi John. Just checked with Markus. He will upload a version for the final GA build. I can send you a version for the current build if you want. Send me an email

  28. Anonymous (login to see details)

    Just wanted to comment on how awesome this dashlet is, thanks for the creators!

    We have a lot of errors here from weird requests from some IP addresses (attacks) that really make it hard for us to find "real" issues, one of them is for instance, the request comes with the "referer" header set to 0. We are now using this plugin to filter "actual" application errors.

    We get more than 300 million purepaths a day, this tool is invaluable. Here is the query we use, based on our application names and functionality so other people can have ideas of what is possible.

     

     

    1. Anonymous (login to see details)

      Thanks for the nice words. I forwarded it to Markus Gaisbauer - he is the creator of this awesome plugin. All the credit goes to him!!

  29. Anonymous (login to see details)

    Andi,

    Can I get a build of this that would work with RC4?

    Nate

  30. Anonymous (login to see details)

    Support for V6.5 EAP?

    1. Anonymous (login to see details)

      Agreed. This is an awesome dashlet and I use it frequently. Also looking for it for v6.5

      1. Anonymous (login to see details)

        I am sure it will be updated. I pinged Markus - the Dev. Once I hear back from him I will update you!

        1. Anonymous (login to see details)

          Markus sent me an update a while back and it works fine...

          1. Anonymous (login to see details)

            Great to hear. Markus just told me that there will be an updated version for the final 6.5 GA Build. Nate and John - if you could do me the favor and send some feedback to Markus on the build he sent you. he appreciates the feedback. Remember: he is doing this because he likes to do it - not becuase he has to (smile) - so - lets show him some support & love!!

  31. Anonymous (login to see details)

    Can't seem to get cookies working as a splitting.  I've tried every combo of quotes and upper/lower case.  What am I missing?  Is there some setup that needs to be done to make cookies work?

    Http.Request.Cookie[jsessionid]


    BTW, best dashlet ever. 

    1. Anonymous (login to see details)

      Glad that you like the dashlet.

      Currently cookies can only be analyzed if the option "Enable user action analysis" is set. You can find it in the "Analysis" tab of the "Dashlet Properties". I admit this is not intuitive at all. Maybe in the next version there will be a separate option called "Enable analysis of HTTP cookies" in the dashlet properties. Cookie analysis is disabled by default because it is rarely used and can consume a very large amount of memory.

  32. Anonymous (login to see details)

    Can i see the async purepaths? my purepaths says a duration of 43s but a response time of 3ms so i only see a simple line of 3ms ..... how can i paint the 43s???

    1. Anonymous (login to see details)

      Currently it is not possible to show the "PurePath duration". The server timeline dashlet looks at each part of a PurePath separately. The "PurePath duration" on the other hand looks at the entire transaction over possibly many tiers including asynchronous invocations (threads, messages). I could take a quick look at your PurePath if you send it to markus.gaisbauer@dynatrace.com.

  33. Anonymous (login to see details)

    another question is that i am seeing sqls with unknown database and unknown sql it is a procedure call 

    Unknown macro: { call to }

     is it ok?

  34. Anonymous (login to see details)

    and if i say to color by application ... only gets colored the web calls, the querys says unknown ...

    1. Anonymous (login to see details)

      looking to decompiled code it is because the applications doesnt arrive to database call record and gets in blank ... it should be fixed if when creating DatabaseCallRecord we add another param to pass the application name ... (and other filters in order to know what sqls are from what application)

    2. Anonymous (login to see details)

      You really need to provide some purepaths, if I understand correctly you have purepaths that start directly at a Database Query, in my opinion these would be very useless purepaths and should start on a method prior to the database query, it is hard to define an Application for a purepath that only contains a database query.

      1. Anonymous (login to see details)

        no no it is not like this.

        if you say colour by application ... what colour takes the database call????? 

         

        unknown .... so a bit difficult to know what calls to datatabase are from what web call ... i was supposing if the web call is green to have the sql green ... and it is unknown 

         

        green are calls in server and yellow database calls 

        1. Anonymous (login to see details)

          Yes, analysis of database calls is quite limited at the moment. The problem is that it many environments there are much more database calls than others. Initially database calls were not shown at all. Later I chose a small set of values attributes which do not cause a huge increase in memory usage and network traffic if database analysis is active. 

          But adding the Application seems like a good use case that I did not consider before. Also since we now use 64-bit Java for the client, memory limitations are not such a big concern any more. I will add Application grouping for databases in the next version.

  35. Anonymous (login to see details)

    Is there any option in order to filter in the first part (boxes through the time) by certain filters? For example i would like to show only from certain ip or when the size is more than something ....

     

     

     

    1. Anonymous (login to see details)

      There is an option called "Apply filter expression to timeline" available at the top right of the dashlet. This will filter the first part using the same filter expression which is usually only applied to the table below.

      1. Anonymous (login to see details)

        for example i put this filter

         

        AgentGroup, AgentName, Name, Http.Client.IP like "10.1.1.1"

         

        and it doesnt work the filter isnt applying because i see requests from other ips

        1. Anonymous (login to see details)

          That does not look like a proper filter, why are there comma separated fields?

          This works for me:

          EntryPoint AND NOT Processing AND Http.Client.IP = '10.220.35.54' 

          I think you are confusing Splitting with Filter.

          1. Anonymous (login to see details)

            OU YEA!!!! Thank you!!!!

             

            Although it continues having the same problems as the other ... the call doesnt send its properties to database so i dont see database calls ..... but its ok

  36. Anonymous (login to see details)

    And i would like to see more options to the hints (certains parts of the purepaths) i am free of modifying the plugin? Can it be done only in my client?

  37. Anonymous (login to see details)

    i think gray transactions arent painted (transactions with timeout or with too many nodes)

    1. Anonymous (login to see details)

      That is correct. Such transactions are considered somewhat incomplete or corrupt and therefore not analyzed by most dashlets.

      1. Anonymous (login to see details)

        I think that this dashlet should paint that transactions, because in some problems gray ones have the key to resolve that (long task generates oom).

         

        So can this be changed? Or is there any option to do it?