Java Melody

Java Melody Performance Monitoring Tool

Currently all four Production KFS and KR back end application servers are instrumented using Melody. UCONN's configuration takes advantage of the 'collect server' option. Therefore, all of the results are viewable from a single separate location (the above link). 

Server: MELODY_COLLECT (137.99.109.7)

Usage

Selecting Nodes

It's important to note the JavaMelody collect server does not aggregate the results of all instrumented machines into a single interface. Instead, you must select which node you want to view the results on from the top ( see below screenshot "Choice of application"). By default it shows whichever application server was added first.


Adding Nodes

If you are adding an application that is load balanced in a multi-node environment, use the following syntax to add it. "http://<IP address>:8080/<app-context>" for example "http://137.99.109.7:8080/kfs-uat"

Selecting Time interval

Just above the graph grid, you will find a 'choice of period' selection. Day, Week, Month, and Year, all back from the current time (for instance, everything up until a week ago). There is also an "all" which will show everything that was ever collected. There is also a custom time option that uses mm/dd/yyyy format, this is the only way to make melody not display results up until the current date/time.

Memory / CPU / #HTTP Sessions

Once you have selected the node that you want to view the results of, you will see a grid of graphs. The top three graphs show (from left to right) Java's used memory, %cpu used, and # of HTTP sessions. These aforementioned graphs are the most useful for monitoring daily performance and operations.

"# of HTTP sessions" is not equivalent to the number of logged on users in the node.


 

Zooming into a graph

If you click on a graph it will bring up a larger full screen version of the graph. It still might be hard to see what time an event occurred. In order to mitigate this, use the slider at the top of the expanded graph to zoom in completely. Once you are completely zoomed , each X axis block is a 10 minute period.

HTTP Statistics

Directly below the grid of graphs is a table for HTTP statistics. This is most useful for identifying problematic requests. Melody classifies requests in three categories Global (Green), Warning(Yellow), and Severe(Red). Yellow could be a concern, Red is a serious concern, and Green is not a concern. These classifications are based off of the average amount of time it takes to process each request. In order to see the full picture, you must click the blue link at the bottom right hand corner of the table "+Details". This will expand the last requests in the given time interval with more detail. Each request is classified on its average time, but it's also important to look at the max items for worst case scenarios. It's possible to drill deeper into each request by clicking on the request type names in the left hand corner.

 

Known Issues

  • Melody IS NOT TO BE USED AS A LOG INTERPRETER: Melody incorrectly tries to interpret the application logs and its 'System Error logs' section is completely erroneous. Use SPLUNK instead.
  • Some graphs are not applicable to our environment due to the units of measurement (ie: half-utilized database connections). Be conscious of inaccurate or misleading graphs.
  • SQL statistics for KFS aren't as helpful because almost all queries in the UConn KFS environment are generated on the fly by OJB.
  • Database statistics differ from 'lsof' calls in the OS. This is most likely a result of how connection pooling is configured in KFS.
  • The Collect server copies data off each node instead of simply reading from it, this means the Collect server needs large amounts of disk space when adding new nodes.

 Disk space considerations limit the use of Java Melody to production nodes only.

 

CM Reference:

http://kualigan.blogspot.com/2012/02/adding-java-melody-to-kuali-project.html