2
Янв

Скрипт удалённого мониторинга доступности провайдеров Mikrotik для Centos 6

Представим что у вас есть удалённый офис или просто стоит какое либо оборудование в определенном удалении от вас. Для стабильной работы, вы даже завели второго провайдера на роутер Mikrotik и хотели бы знать поминутный аптайм своих провайдеров на нём. Для этого будем использовать отличный скрипт router-pulse от Максима Иванченко, чтобы это всё реализовать.

Выглядит это так:

2016-01-02_17-02-55

2016-01-02_17-03-252016-01-02_17-03-09

Минимальная версия 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

Обратная связь

    The average number of adverse effects was 3. T max is 23 minutes in females and 32 minutes in males. What other drugs will affect doxercalciferol Viagra natural sin receta. Archived from the original on 2009-08-14.

    Talk to your doctor before using this form of cefadroxil if you have diabetes. What should I tell my healthcare team before starting CABLIVI? There is no FDA guidance on the use of Tetracycline (oral) with respect to specific gender populations https://www.apotheke-rezeptfreie.com/. Opper K, Uder S, Song K Development of Heterogeneous and Homogeneous Platforms for Rapid Analysis of DNA-Protein Interactions.

    Contact Us