## How should I judge the log output by AnomalyAnalyzer?

[Phenomenon]
AnomalyAnalyzer may output the following logs.

･ AnomalyAnalyzer Resin|Http|Request Time WARNING
･ AnomalyAnalyzer Resin|Database|Connection Active WARNING
･ AnomalyAnalyzer Resin|Http|5xx WARNING
etc

and so on.

These are output to the log when an abnormal value is detected based on the statistical information in operation.

[Explanation]
Settings related to the output of AnomalyAnalyzer are made in <%RESIN_HOME%>/conf/health.xml.

The explanation of the setting contents is as follows.
https://document.intra-mart.jp/library/iap/public/configuration/im_configuration_reference/texts/resin/health/health-meters/index.html

The values output to the log are as follows.

AnomalyAnalyzer (1) WARNING
(2) sample is (3)% of (4) avg, (5) std deviations (std= (6), n= (7))

(1) Types of statistical information
(2) Value detected this time
(3) What percentage of the detected value is compared to the average value?
(4) Average value
(5) How many times the detected value is the standard deviation
(6) Standard deviation
(7) Number of samples used to calculate the mean and standard deviation

The following formula holds.

(6) x (5) + (4) = (2)
(4) x (3) ÷ 100 = (2)

(Example)
AnomalyAnalyzer Resin|Http|Request Time WARNING
54.636 sample is 13030.26% of 0.419 avg, 8.255 std deviations (std=6.568, n=3074.0)

First, the type of the statistics detected as an abnormal value is request processing time.
The 54.636 milliseconds detected this time is 13030.26% of the average request processing time of 0.419 milliseconds so far.
Also, since it is 8.255 times the standard deviation, it is output to the log as an abnormal value.

By default, the log is output when the detected value is at least five times the standard deviation.

Typical statistical standard deviation indicators are as follows.

The probability that the detected value will fall within the range of mean ± standard deviation is approximately 68%.
The probability that the detected value will fall within the range of mean ± (standard deviation x 2) is approximately 95%.
The probability that the detected value will fall within the range of mean ± (standard deviation x 3) is approximately 99%.

As you can see from the above, "mean value ± (standard deviation x 5)", which is 5 times or more the standard deviation, is a value with a fairly low probability.
However, the mean and standard deviation must be calculated based on a sufficient number of samples.

[Remedy]

First of all, even if the AnomalyAnalyzer log is output, it does not always mean that it is abnormal.

For example, in terms of request processing time,
the average value will gradually decrease as the requests continue to be lightly processed.
If a heavy request is made there, a deviation larger than the average value will occur and the log will be output.

Although it is necessary to confirm the validity of the processing time of this heavy request,
if the AnomalyAnalyzer log is output temporarily, you do not need to worry about it.

Also, it may be output temporarily when the request is started after startup.
This is because the statistics may not be valid due to the small number of samples used to calculate the statistics.

However, if the Anomaly Analyzer log is continuously output, it means that some kind of load is being applied to the system, so it is necessary to check various logs and investigate the cause.

-- Target ----------------------------------------------------------------------