Analyzing the transactions
Hitmap
Home > Select Project > Analysis > Hitmap
On the initial screen of the WhaTap Monitoring service, select a project and then click Analysis > Hitmap.
Hitmap can be also accessed through the Hitmap widget in Dashboard > Application Dashboard.
Detailed analysis
agent area
You can filter by selecting agents linked with the current project. If you select the icon, the HITMAP transaction chart can be viewed in the area.
HITMAP transaction
If transactions with latency issues are included, they appear in orange or red on the HITMAP transaction chart. If only normal transactions are included, they appear in blue.
Selection area
If you drag the real-time hitmap chart, the TX trace list appears where Applications list and transaction information can be viewed in the selected area.
Applications
You can check the numbers of transactions and errors included in the selected area on the chart. If you select the desired application in the list, the information details of the application appear in TX trace.
TX trace
The TX trace list contains information details. If you select a desired transaction from the list, the Transaction information window appears. In the Transaction information window, you can see the detailed trace details for the transaction. For more information, see the following.
Understanding the hitmap patterns
The hitmap is a distribution chart whose X-axis is the transaction end time, and Y-axis is the response time. A normal web application displays a distribution concentrated in a few seconds or less.
Analyzing the hitmap lines
-
Vertical line (LOCK symptom) pattern
If a temporary lock (not only DB lock) occurs during transaction processing, the processing is queued. If the lock is released, pending transactions are finished together at a similar time. This creates vertical lines as follows:
Detecting locks in vertical line patterns is a very powerful concept. Especially in the microservice architecture, locks from backend systems can be equally detected.
The vertical lines for response patterns in the front applications are also detected when any lock occurs in the DB used by the back-end system.
-
Horizontal line (timeout) pattern
In the 10-second timeout condition, if the resources are insufficient, the transactions wait for 10 seconds until a timeout error occurs. At this time, horizontal lines appear near 10 seconds of the hitmap as follows:
If there is a logic to retry after timeout, the horizontal lines repeat every 10 seconds as shown in the figure. The following is the hitmap for failures.
(1) The response time increased in the section and (2) the red lines in the section are horizontal line patterns. (1) ConnectionPool is exhausted due to section load, (2) the secondary timeout failure occurred due to insufficient ConnectionPool.
Using the pattern analysis
A line in the transaction response distribution indicates a bottleneck. If the lock is temporary, a vertical line is generated. If the bottleneck is release by timeout, a horizontal line is generated.
When analyzing a problem, you can quickly pinpoint a transaction included in the line for selective analysis.
Analyzing the machine learning based response patterns
This function automatically detects abnormalities after analyzing the hitmap patterns with an aid of machine learning technology and then issues an alert.
Abnormal pattern example
It learns abnormal patterns from hundreds of TB of performance data every month and issues an alarm when a pattern similar to the learned abnormal one is detected.
-
Vertical line pattern
-
Horizontal line pattern
-
Composite pattern
-
Hitmap alarm
For more information about the analysis method of the HITMAP transaction chart, see the following.
Criteria for exceptional handling (WARNING) of the Java agent
This guide provides the criteria for the Java agent's exceptional handling for errors that occur in the application environment using the Java language. The following content has been written based on Java Agent v2.2.27.
Error display on the service screen
Most Error level that can be seen throuth the Hitmap widget and Trace analysis window are for the WARNING level.
Error handling when passing the Spring ExceptionHandler
In the Spring framework, passing the org.springframework.web.servlet.DispatcherServlet.processHandlerException
method is treated as an error. However, if a developer uses the Try-Catch statement, WhaTap does not handle it as an error because it does not pass ExceptionHandler
.
Status Code 400 or higher error handling
If the HTTP response code is 400 or higher, it is treated as an error even if no exception class occurs.
Error handling when calling the JDBC driver
The errors that occur when making a JDBC connection call or SQL execution call, are treated as errors.
Error handling for HTTP calls
The errors that occur during HTTP calls appear in the SLOW_HTTPC
or httpc error
format.
WhaTap error handling
The WhaTap monitoring service handles errors depending on specific conditions.
-
TOO_MANY_RECORDS: 1000 or more fetches
-
SLOW_SQL: SQL time of 30000 ms or more
-
SLOW_HTTPC: HTTP call elapsed time of 10000 ms or more
-
httpc error: HTTP call status code of 400 or more
-
status error: Transaction status code of 400 or more
Transaction error step INFO processing
Some errors can be displayed as normal or ignored through the agent settings. The level displayed in the Hitmap widget is INFO (blue).
Agent settings can be configured by editing the whatap.conf file or using Management > Agent CONFIG.. For more information, see the following.
-
biz_exceptions
: Displays the record error.whatap.confbiz_exceptions=io.home.test.baseapp.base.exception.custom.CustomParameterizedException
-
ignore_exceptions
: Does not display the record error.whatap.confignore_exceptions=org.springframework.web.util.NestedServletException
-
status_ignore
whatap.confstatus_ignore=408,500,200
-
httpc_status_ignore
whatap.confhttpc_status_ignore=403,401
-
status_ignore_set
whatap.confstatus_ignore_set=/api/posts/test/timeout:200,/error:500
-
httpc_status_url_ignore_set
whatap.confhttpc_status_url_ignore_set=/api/posts/test/timeout:408,/api/apache/httpclient/posts/timeout:500