Skip to content

Утилита для проверки сетевого доступа до хостов

Notifications You must be signed in to change notification settings

valentiay/network-access-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Network access test

Утилита для проверки "сетевой доступности" хостов. Реализовано три способа проверки доступности хостов:

  • Через отправку ICMP echo пакета (ping) и ожидание ответа от указанного хоста;
  • Через попытку открыть TCP-подключение к хосту по указанному порту;
  • Через HTTP GET запрос к указанному URL.

Проверка доступности различных хостов происходит непрерывно с заданной степенью параллелизма. Можно задать период проверки доступности хостов и указать таймаут, по истечении которого проверка считается неуспешной, а хост недоступным. Статус указанных хостов выводится на экран раз в 5 секунд.

Программа написана на Scala для JVM. Для корректной работы программы необходима Java 8+. Работа программы протестирована на Linux, она также должна работать на других системах.

Программу можно встроить в Scala (Java) web-приложение для проверки доступности бэкэндов и настройки мониторинга.

Использование

Для запуска программы нужно указать список хостов для проверки в нужном формате (через файл или опцию командной строки).

  • -f, --targets-file - имя файла с хостами для проверки доступности, хост должен быть на новой строчке.
  • -ts, --targets - хосты для проверки доступности, через запятую.

Также нужно выбрать способ проверки доступности.

  • -tcp, --tcp-connect - проверка доступности через TCP-подключение. Вариант по умолчанию. Хосты для тестирования должны быть заданы в виде <host>:<port>.
  • -r, --reachable - проверка доступности через ping. На входе нужно указать только хост.
  • -h, --http - проверка доступности через HTTP GET запрос. На входе нужно указать URL.

Остальные параметры опциональны.

  • -p, --parallelism - максимальное количество проверок доступности, которые выполняются одновременно. Целое число. Значение по умолчанию - 10.
  • -i, --interval - максимальное время, которое должно пройти перед повторной проверкой доступности хоста. Целое число в секндах. Значение по умолчанию - 10 секунд.
  • -t, --timeout - таймаут при выполнени проверки доступности хоста. Целое число в секундах. Значение по умолчанию - 5 секунд.

Для выведения подсказки нужно запустить программу без параметров.

Раз в 5 секунд выводится информация о протестированных хостах: результат тестирования (успех или разные ошибки), длительность теста, время последнего теста и время, прошедшее с момента последнего теста.

Примеры

Все примеры ниже запускаются из директории с репозиторием.

Проверка доступности через TCP подключение

java -jar network-access-test.jar -tcp -f example/tcp-connect-small.txt
================================================================================
Testing results at 2022-01-17T00:50:16.474                                      
--------------------------------------------------------------------------------
target                        status        test duration              test time 
--------------------------------------------------------------------------------
173.194.222.139:80            ok              28ms 2022-01-17T00:50:15 803ms ago 
8.8.8.8:80                    timeout           5s 2022-01-17T00:50:15 507ms ago
8.8.8.8:53                    ok              27ms 2022-01-17T00:50:15 804ms ago 
baidu.com:80                  ok             488ms 2022-01-17T00:50:16 135ms ago 
google.com:80                 ok              60ms 2022-01-17T00:50:15 724ms ago 
linkedin.com:80               ok              20ms 2022-01-17T00:50:15 805ms ago 
other-unresolvable.dum:321    dns_err         12ms 2022-01-17T00:50:15 846ms ago 
unresolvable.fake:123         dns_err         13ms 2022-01-17T00:50:15 846ms ago 
wikipedia.org:80              ok              61ms 2022-01-17T00:50:15 723ms ago 
youtube.com:80                ok              59ms 2022-01-17T00:50:15 725ms ago 
================================================================================

Проверка доступности через ping

Для корректной работы этого способа java нужны повышенные привелегии.

sudo java -jar network-access-test.jar -r -f example/reachable-small.txt
================================================================================
Testing results at 2022-01-17T01:04:07.338                                      
--------------------------------------------------------------------------------
target                        status        test duration              test time 
--------------------------------------------------------------------------------
173.194.222.139               ok              19ms 2022-01-17T01:04:01    5s ago 
8.8.8.8                       ok              18ms 2022-01-17T01:04:01    5s ago 
baidu.com                     ok             448ms 2022-01-17T01:04:03    4s ago 
facebook.com                  ok              16ms 2022-01-17T01:04:02    4s ago 
google.com                    ok              18ms 2022-01-17T01:04:01    5s ago 
linkedin.com                  ok               2ms 2022-01-17T01:04:01    5s ago 
other-unresolvable.dum        dns_err          5ms 2022-01-17T01:04:01    5s ago 
unresolvable.fake             dns_err          6ms 2022-01-17T01:04:01    5s ago 
wikipedia.org                 ok              52ms 2022-01-17T01:04:01    5s ago 
youtube.com                   ok              17ms 2022-01-17T01:04:01    5s ago 
================================================================================

Проверка доступности через HTTP GET запрос

Редиректы считаются успехом.

java -jar network-access-test.jar -h -f example/http-small.txt 
================================================================================
Testing results at 2022-01-17T01:10:33.443                                      
--------------------------------------------------------------------------------
target                        status        test duration              test time 
--------------------------------------------------------------------------------
http://8.8.8.8/               timeout           5s 2022-01-17T01:10:32 853ms ago 
http://baidu.com/             http_ok(200)   554ms 2022-01-17T01:10:28    5s ago 
http://facebook.com/          http_ok(301)   113ms 2022-01-17T01:10:23    9s ago 
http://linkedin.com/          http_err(503)    6ms 2022-01-17T01:10:32 544ms ago 
http://other-unresolvable.... dns_err          4ms 2022-01-17T01:10:32 711ms ago 
http://twitter.com/           http_ok(301)   183ms 2022-01-17T01:10:25    7s ago 
http://unresolvable.fake/     dns_err          4ms 2022-01-17T01:10:32 710ms ago 
http://wikipedia.org/         http_ok(301)   177ms 2022-01-17T01:10:24    9s ago 
http://www.google.com/        http_ok(200)   461ms 2022-01-17T01:10:28    5s ago 
http://youtube.com/           http_ok(301)    63ms 2022-01-17T01:10:33  54ms ago 
================================================================================

About

Утилита для проверки сетевого доступа до хостов

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages