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
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) |
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 |
---|---|---|---|---|
| /booking.jsp | checkCreditCard | processBooking | SELECT * FROM Account |
| Frontend | Backend | Backend | Database |
| true | false | false | false |
| true | false | false | false |
| Web Request | Remoting | Remoting | Database |
| GET | - | - | - |
| 1000 | 300 | 400 | 200 |
| 300 | 300 | 400 | - |
| 2 | 0 | 0 | - |
| 900 | 0 | 0 | - |
| 0 | 0 | 200 | - |
| 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 |
---|---|
| /booking.jsp |
| checkCreditCard, processBooking |
| SELECT * FROM Account |
| /booking.jsp, processBooking |
| 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. |
Analyze HTTP requests | Timeline: Group by HTTP host. |
Analyze HTTP errors | Timeline: Group by HTTP host, color by HTTP response code. |
Analyze agents | Timeline: Group by agent name and host, color by consumed CPU time. |
Analyze database usage per transaction | Timeline: Group by agent name and host, color by amount of time spent for database calls. |
Analyze garbage collection impact on transaction | Timeline: Group by agent name and host, color by amount of time spent for GC. |
Analyze synchronization impact on transaction | Timeline: Group by agent name and host, color by amount of time spent for lock synchronization. |
Analyze geographical client locations of HTTP requests | Timeline: Group by country of HTTP client. |
Analyze user agents of HTTP requests | Timeline: Group by browser used by HTTP client. |
Analyze transferred bytes for HTTP requests | Timeline: Group by HTTP host. |
Analyze HTTP requests taking longer than 1s | Timeline: Group by HTTP host. |
Analyze HTTP requests consuming more than 1s of CPU time | Timeline: Group by HTTP host. |
Analyze HTTP requests making more than 100 database calls | Timeline: Group by HTTP host. |
Analyze HTTP requests from robots | Timeline: Group by browser. |
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.
Note, that the text controls provide completion of value names by pressing Ctrl + Space.
Property | Type | Description | Example |
---|---|---|---|
| String | Agent identifier using the format <agent-name>@<agent-host> [<agent-id>] | dotNetFrontend_easyTravel@dynaday [703ad952] |
| String | The name of the agent | dotNetFrontend_easyTravel |
| String | The name of the agent group | Customer Web Frontend (Java) |
| String | Agent name and host using the format <agent-name>@<agent-host> | dotNetFrontend_easyTravel@dynaday |
| String | The host of the agent | dstadler |
| String | The name of the current thread | http-bio-8080"-exec-7 |
| Boolean | Whether this call is the start of a transaction | - |
| Boolean | Whether this call threw an exception | - |
| Boolean | Whether this call comes from the comparison source session | - |
| Boolean | Whether this call was still in progress during analysis of the dashlet | - |
| Boolean | Whether this call resulted in some kind of error as specified by the "Error Detection" section in the system profile | - |
| String | Classification of call in "Method Call", "Web Request", Web Service", "Remoting", "Messaging", "Database", and "Client-side call" | - |
| Splitting | Special splitting criteria that always yields the value "All". Useful for getting overall metrics without splitting | - |
| String | A short string representation of the call, e.g. URI for web requests, method name for method calls, etc. | /index.htm, SomeClass.someMethod() |
| String | The name of the application, as specified by the "Applications" section in the system profile | easyTravel portal |
HTTP requests | |||
| Boolean | Whether this call was processing a web request, same as Kind == "Web Request" | - |
| String | The HTTP method used for this request | GET, POST |
| String | The value of the HTTP "Host" request header. | www.compuware.com |
| String | The URI path of the HTTP request | /index.htm |
| String | The query string of the HTTP request | param=value |
| String | The value of the HTTP "Referer" request header | http://localhost:8080/legal-orange.jsf |
| 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" |
| String | The value of some specific cookie | E.g. for Cookie["jsessionid"] the value "19123012397232" |
| Splitting | Special splitting value, that splits the HTTP URI path hierarchically on every folder identified by "/" | |
| 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. | |
| String | The HTTP response code for the HTTP request | "200 - OK", "304 - Not modified", etc. |
| String | The value of the HTTP "Content-Type" response header | "text/html", "image/png", etc. |
| String | The value of the HTTP "Content-Encoding" response header | "gzip" |
| 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" |
| 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. | |
| String | The IP address of the HTTP client requesting a resource | 192.168.1.50 |
| String | The host name of the HTTP client requesting a resource. | machine.host.local |
| String | The continent where the HTTP client is located | North America |
| String | The country where the HTTP client is located | United States |
| String | The region where the HTTP client is located | California |
| String | The city where the HTTP client is located | Palo Alto |
| String | The physical location of the HTTP client requesting a resource | North America - United States - California - Palo Alto |
| Splitting | Special splitting value, that splits first by continent, then by country, region and finally city. | |
| String | The category of browser making the HTTP request | "Browser", "Mobile Browser", or "Robot" |
| String | The browser family making the HTTP request | "IE", "Firefox", "Chrome", "Safari", etc. |
| String | The specific browser (with version number) making the HTTP request | "IE 8.0", "Firefox 6.0", etc. |
| Splitting | Special splitting value, that splits first by browser type, followed by browser family and finally browser version. | |
| String | The operating system used by the HTTP client. | "Windows XP", "Windows 7", "iOS", etc. |
| 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 | |||
| Float (seconds) | The total execution time of a call. | - |
| Float (seconds) | The amount of CPU time consumed by a call | - |
| Float (seconds) | The amount of time spent on a specific subpath, excluding children | - |
| Float (seconds) | The amount of time spent for garbage collection on a specific subpath | - |
| Float (seconds) | The amount of time spent for synchronization on a specific subpath | - |
| Integer | The number of database calls made on a specific subpath | - |
| Float (seconds) | The total amount of time spent for database calls on a specific subpath | - |
| Integer | The number of webservice calls made on a specific subpath | - |
| Float (seconds) | The total amount of time spent for web service calls on a specific subpath | - |
| Integer | The number of remoting calls made on a specific subpath | - |
| Float (seconds) | The total amount of time spent for remoting calls on a specific subpath | - |
| Integer | The number of messages sent on a specific subpath | - |
| Float (seconds) | The total amount of time spent for sending messages on a specific subpath | - |
| Integer | The total number of exceptions thrown on a specific subpath | - |
Metrics for a specific server call and its children | |||
| Float (seconds) | The total amount of CPU time consumed by subpath and its children | - |
| Float (seconds) | The amount of time spent for garbage collection on a specific subpath and its children | - |
| Float (seconds) | The amount of time spent for synchronization on a specific subpath and its children | - |
| Integer | The number of database calls made on a specific subpath and its children | - |
| Float (seconds) | The total amount of time spent for database calls on a specific subpath and its children | - |
| Integer | The number of webservice calls made on a specific subpath and its children | - |
| Float (seconds) | The total amount of time spent for web service calls on a specific subpath and its children | - |
| Integer | The number of remoting calls made on a specific subpath and its children | - |
| Float (seconds) | The total amount of time spent for remoting calls on a specific subpath and its children | - |
| Integer | The number of messages sent on a specific subpath and its children | - |
| Float (seconds) | The total amount of time spent for sending messages on a specific subpath and its children | - |
| 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 |
---|---|
| Boolean constant |
| Boolean constant |
| Arbitrary integer constants |
| Arbitrary floating point constants |
| Arbitrary text constants |
| Arbitrary regular expressions (Java syntax) |
| Either |
| Both |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| the sum of |
|
|
| the product of |
|
|
|
|
| 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.
83 Comments
Jeff Yarbrough
Nice Dashlet, I like the potential, However, it does not render properly in the Mac Client, the timeline does not show up.
Markus Gaisbauer
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.
Richard Hall
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!!
Markus Gaisbauer
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.
Jeff Fynboh
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?
Markus Gaisbauer
Yes, it is possible to show calls to databases or external services:
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.
Richard Hall
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
Markus Gaisbauer
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.
John Crygier
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).
Markus Gaisbauer
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.
Thomas Eurick
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?
Markus Gaisbauer
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.
Colin Fallwell
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.
Kurt Aigner
Hi Colin,
It's now available through the EAP downlaod page...
Have fun,
Kurt
Colin Fallwell
Great turnaround! Thanks guys!!
Colin Fallwell
It would be nice to see BT splits like web service method name added to the options for splittings.
Markus Gaisbauer
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?
Colin Fallwell
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...
Kristopher Sarpolis
Awesome dashlet! How does one use it to compare two sessions? I assume this is possible using the "CompareSource" property.
Markus Gaisbauer
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
Nate Austin
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?
Jan-Hendrik Wolf
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.
Andreas Grabner
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
Markus Gaisbauer
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.
Jan-Hendrik Wolf
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.
Markus Gaisbauer
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.
David Mass
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).
Kristopher Sarpolis
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)" />
Jibi Uthaman
I also had to manually restart the server to see this dashlet.
Stefan Brunzen
A get a permission Error when trying to download the 5.6 version. The 5.5 Download workds very well
Andreas Grabner
can you try the following link? https://community.compuwareapm.com/community/download/attachments/97845267/com.dynatrace.diagnostics.servertimeline_5.6.0.5713.dtp
Stefan Brunzen
That worked. Thx a lot
Brien Lay
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.
Andreas Grabner
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
Brien Lay
I did that. Even rebooted. See screen shots below.
Andreas Grabner
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.
Brien Lay
Ahh. I see it now. It is in the tree. Sorry about that and thank you for the quick reply!!
John Kelly
Would like to see a similar timeline for the user action PPs. And color around slow third party calls. Any chance?
John Kelly
Any plans to support this dashlet in 6.1? Looks like it is not working...
Colin Fallwell
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?
Markus Gaisbauer
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.
Colin Fallwell
Hey markus.. please do... colin_fallwel@intuit.com
Hongso Chae
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.
Markus Gaisbauer
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?
Hongso Chae
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.
Regards,
Hongso.
Jim Ball
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
Jacob Payne
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
Kin Wai Koo
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!
Andreas Grabner
its available now: Server Timeline Dashlet
Ignacio Parga Vjande
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
Andreas Grabner
Hi. Can you post this question + screenshot on our discussion forum? http://answers.dynatrace.com?
Ignacio Parga Vjande
Hi
Done
https://answers.dynatrace.com/questions/135248/server-timeline-installed-but-not-available.html#answer-135249
John Kelly
Support for 6.3EAP?
Andreas Grabner
HAve you tried it? I think the current version might JUST WORK!
John Kelly
I tried it but it doesn't list in installed plugins. And I can't see it in the cockpit.
Andreas Grabner
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
David Ribeiro Lopes
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.
Andreas Grabner
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!!
Nate Austin
Andi,
Can I get a build of this that would work with RC4?
Nate
John Kelly
Support for V6.5 EAP?
Nate Austin
Agreed. This is an awesome dashlet and I use it frequently. Also looking for it for v6.5
Andreas Grabner
I am sure it will be updated. I pinged Markus - the Dev. Once I hear back from him I will update you!
John Kelly
Markus sent me an update a while back and it works fine...
Andreas Grabner
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
- so - lets show him some support & love!!
Kristopher Sarpolis
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.
Markus Gaisbauer
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.
Oscar Atienza
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???
Markus Gaisbauer
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.
Oscar Atienza
another question is that i am seeing sqls with unknown database and unknown sql it is a procedure call
is it ok?
Oscar Atienza Alonso
and if i say to color by application ... only gets colored the web calls, the querys says unknown ...
Oscar Atienza
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)
David Ribeiro Lopes
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.
Oscar Atienza
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
Markus Gaisbauer
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.
Oscar Atienza
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 ....
Markus Gaisbauer
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.
Oscar Atienza
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
David Ribeiro Lopes
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.
Oscar Atienza
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
Oscar Atienza
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?
Oscar Atienza Alonso
i think gray transactions arent painted (transactions with timeout or with too many nodes)
Markus Gaisbauer
That is correct. Such transactions are considered somewhat incomplete or corrupt and therefore not analyzed by most dashlets.
Oscar Atienza Alonso
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?