В этом примере создадим инструмент, который будет регулярно измерять задержку (RTT) до веб-сайтов, IP-адресов или определённых TCP-портов и автоматически отправлять данные на сервер VizIoT для построения графиков.
Создайте новое устройство: «Тест ПИНГ»
Добавьте параметры:
tpgoogle — Пользовательскийtpip — Пользовательскийtpport — ПользовательскийВ разделе «Основные настройки» скопируйте:
Они понадобятся в скрипте.
sudo yum install hping3 curl
sudo apt-get install hping3 curl
Запрос:
hping3 -c 1 -S -1 google.com
Пример ответа:
HPING google.com (...): icmp mode set, 28 headers + 0 data bytes
len=46 ip=74.125.232.40 ttl=128 id=16442 icmp_seq=0 rtt=15.1 ms
--- google.com hping statistic ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 15.1/15.1/15.1 ms
res_ping_google=$(hping3 -c 1 -S -1 google.com 2>&1)
isOk=$(echo "$res_ping_google" | grep -Eo '1 packets received')
time_ping_google=9999
if [ "$isOk" == "1 packets received" ]; then
time_ping_google=$(echo "$res_ping_google" \
| grep -Eo 'min/avg/max = [^ ]*' \
| grep -Eo '\/[^\/a-z]*\/' \
| grep -Eo '[^\/a-z]*')
fi
Пример:
curl --silent "https://viziot.com/update?key=______________&pass=______________&tpgoogle=$time_ping_google" > /dev/null
Создаём файл:
nano /var/viziot_ping.sh
key='_____________'
pass='_________________'
# Ping веб-сайта
res_ping_google=$(hping3 -c 1 -S -1 google.com 2>&1)
# Ping IP адреса
res_ping_ip=$(hping3 -c 1 -S -1 8.8.8.8 2>&1)
# Ping TCP порта
res_ping_port=$(hping3 -p 8080 -c 1 -S -1 google.com 2>&1)
time_ping_google=9999
time_ping_ip=9999
time_ping_port=9999
isOk=$(echo "$res_ping_google" | grep -Eo '1 packets received')
if [ "$isOk" == "1 packets received" ]; then
time_ping_google=$(echo "$res_ping_google" | grep -Eo 'min/avg/max = [^ ]*' | grep -Eo '\/[^\/a-z]*\/' | grep -Eo '[^\/a-z]*')
fi
isOk=$(echo "$res_ping_ip" | grep -Eo '1 packets received')
if [ "$isOk" == "1 packets received" ]; then
time_ping_ip=$(echo "$res_ping_ip" | grep -Eo 'min/avg/max = [^ ]*' | grep -Eo '\/[^\/a-z]*\/' | grep -Eo '[^\/a-z]*')
fi
isOk=$(echo "$res_ping_port" | grep -Eo '1 packets received')
if [ "$isOk" == "1 packets received" ]; then
time_ping_port=$(echo "$res_ping_port" | grep -Eo 'min/avg/max = [^ ]*' | grep -Eo '\/[^\/a-z]*\/' | grep -Eo '[^\/a-z]*')
fi
# Отправка данных
curl --silent \
"https://viziot.com/update?key=$key&pass=$pass&tpgoogle=$time_ping_google&tpip=$time_ping_ip&tpport=$time_ping_port" \
> /dev/null
chmod +x /var/viziot_ping.sh
Открываем crontab:
crontab -e
В начале файла должны быть строки:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
Добавляем запуск каждый минуту:
0-59 * * * * /var/viziot_ping.sh
Создайте панель: «Тест ПИНГ»
Добавьте виджет «Время Пинга»:
tpgoogle, tpip, tpportТеперь система автоматически измеряет задержку пакетов до сайта, IP-адреса и TCP порта и отправляет данные в VizIoT. Через несколько минут вы увидите первые точки на графике.