Анализатор логов log-analyzer.
Консольное приложение, которое анализирует логи web-приложения на предмет отказов сервера.

Имеется access-лог web-сервера. Файл со следующей структурой.

192.168.32.181 - - [14/06/2017:16:47:02 +1000] "PUT /rest/v1.4/documents?zone=default&_rid=6076537c HTTP/1.1" 200 2 44.510983 "-" "@list-item-updater" prio:0
192.168.32.181 - - [14/06/2017:16:47:02 +1000] "PUT /rest/v1.4/documents?zone=default&_rid=7ae28555 HTTP/1.1" 200 2 23.251219 "-" "@list-item-updater" prio:0
192.168.32.181 - - [14/06/2017:16:47:02 +1000] "PUT /rest/v1.4/documents?zone=default&_rid=e356713 HTTP/1.1" 200 2 30.164372 "-" "@list-item-updater" prio:0

У каждой записи есть HTTP-код ответа (9-е поле, в первом примере "200") и время обработки запроса в миллисекундах (11-е поле, в первом примере: "44.510983").

Отказом считается запрос завершившийся с любым 500-м кодом возврата (5xx) или обрабатываемый дольше чем указанный интервал времени.

На входе программе дается:
* поток данных из access-лог'а;
* минимально допустимый уровень доступности (проценты. Например, "99.9") - консольный параметр -a
* приемлемое время ответа (миллисекунды. Например, "45") - консольный параметр -t
* флаг дебаг мода - консольный параметр -d
Так же можно вызвать описание параметров передав консольный параметр -h

На выходе программа предоставляет временные интервалы, в которые доля отказов системы превышала указанную границу, а также уровень доступности в этот интервал времени.

Пример использования программы:
Unix:
$ cat access.log | java -jar log-analyzer.jar -a 95.0 -t 120
2017-06-14 16:47:04     2017-06-14 16:47:14     94.9
2017-06-14 16:47:14     2017-06-14 16:47:17     94.5

Windows:
java -jar log-analyzer.jar -a 95.0 -t 120 < access.log
2017-06-14 16:47:04     2017-06-14 16:47:14     94.9
2017-06-14 16:47:14     2017-06-14 16:47:17     94.5