Представим что у вас есть удалённый офис или просто стоит какое либо оборудование в определенном удалении от вас. Для стабильной работы, вы даже завели второго провайдера на роутер Mikrotik и хотели бы знать поминутный аптайм своих провайдеров на нём. Для этого будем использовать отличный скрипт router-pulse от Максима Иванченко, чтобы это всё реализовать.
Выглядит это так:
Минимальная версия php >=5.5.9, иначе получите ошибку
[bash title=»код»]This package requires php >=5.5.9 but your PHP version (5.3.3)[/bash]
Итак, нам нужен сам скрипт
[bash title=»код»]https://github.com/maxiv/router-pulse/archive/master.zip[/bash]
Установить версию php 5.6 на Centos 6
[bash title=»код»]rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
yum install php56w[/bash]
После чего необходимые компоненты
[bash title=»код»]yum install php56w-dom
yum install php56w-mbstring
yum install php56w-mysql[/bash]
Распаковываем наш архив со скриптом в каталог виртуального хоста.
Кон фигурируем виртуальный хост таким образом, чтобы он смотрел в в каталог router-pulse-master/public
Необходимо установить Composer
[bash title=»код»]cd /tmp
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer [/bash]
Переходим в каталог с нашим скриптом и выполняем:
[bash title=»код»]cd /www/router-pulse-master/
composer install[/bash]
При установке Composer могут возникнуть ошибки, с просьбой вставить ваш Personal access tokens с GitHub
Ошибка будет примерно такого вида;
please create a GitHub OAuth token to go over the API rate limit
Регистрируемся на GitHub и получаем tokens , вставляем в консоль при необходимости.
Создаёте базу данных MySQL с правами пользователя на пользователя
[bash title=»код»]mysql -u root -p
CREATE DATABASE `stata` CHARACTER SET utf8 COLLATE utf8_general_ci;
grant all on stata.* to stata@localhost identified by "stata";[/bash]
Копируете файл .env.example в .env и редактируете в нём настройки
После, выполняете миграцию БД
[bash title=»код»]php artisan migrate[/bash]
На этом настройка сервера окончена. Переходим к настройке роутера.
Базовый запрос с роутера выглядит таким образом;
[bash title=»код»]https://{YOUR-DOMAIN}/ping?key={ROUTER_KEY}&isp1={ISP1-STATUS}&isp2={ISP2-STATUS}[/bash]
Но если у вас роутер Mikrotik, скрипт будет выглядеть так:
[bash title=»код»]:local isp1;
:local isp2;
:set isp1 "0";
:set isp2 "0";
# Fist ISP: check link
/interface ethernet cable-test ether10 once do={
:if ($"status" = "link-ok") do={
:set isp1 "1";
}
};
# Second ISP: check pppoe connection
/interface pppoe-client {
monitor pppoe-isp2 once do={
:if ($"status" = "connected") do={
:set isp2 "1";
}
:if ($"status" = "waiting for packets…") do={
:if ([/ping 8.8.8.8 interface=pppoe-isp2 count=1 size=50 ]>0) do={
:set isp2 "1";
}
}
}
}
/tool fetch url="https://{YOUR-DOMAIN}/ping?key={ROUTER_KEY}&isp1=$[ $isp1 ]&isp2=$[ $isp2 ]" mode=http[/bash]
В моём случае используется скрипт, где состояние каждого провайдера проверяется наличием пинга к публичному DNS серверу по своей таблице маршрутизации:
[bash title=»код»]:global isp1;
:global isp2;
:set isp1 "0";
:set isp2 "0";
:local pingcountA 5; :local hostpingA 8.8.8.8;
:local pingresultA [/ping $hostpingA interface=ISP1 count=$pingcountA]; :if ($pingresultA > 0) do={:set isp1 "1";} else={:set isp1 "0";}
:local pingcountB 5; :local hostping 8.8.4.4;
:local pingresultB [/ping $hostping interface=ISP2 routing-table=ISP2 count=$pingcountB]; :if ($pingresultB > 0) do={ :set isp2 "1";} else={:set isp2 "0";}
/tool fetch url="https://{YOUR-DOMAIN}/ping?key={ROUTER_KEY}&isp1=$[ $isp1 ]&isp2=$[ $isp2 ]" mode=http[/bash]
Скрипт помещаем в Scheduler на выполнение раз в минуту.
На этом настройка мониторинга закончена, если всё сделали правильно, по адресу вашего виртуального хоста будет доступна картинка, очень похожа на перекрепленную выше. https://{YOUR-DOMAIN}/
История за последние 30 дней будет доступна на странице: https://{YOUR-DOMAIN}/statistics
В ближайшее время скрипт будет обрастать новыми функциями, например уведомление на e-mail или sms информирование через API. Следите на https://github.com/maxiv/router-pulse