Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
faq:monitoring-trunks [2022/11/08 09:51] Портнов Алексей создано |
faq:monitoring-trunks [2024/01/30 12:42] (текущий) Портнов Алексей |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Мониторинг состояния линий ====== | ====== Мониторинг состояния линий ====== | ||
+ | [[:faq|Обратно к перечню инструкций]]\\ \\ | ||
При работе с поставщиками услуг связи периодически могут возникать проблемы. К примеру сервер поставщика не отвечает / не доступен. В рамках данной статьи будет предложен механизм оповещения на email системного администратора. | При работе с поставщиками услуг связи периодически могут возникать проблемы. К примеру сервер поставщика не отвечает / не доступен. В рамках данной статьи будет предложен механизм оповещения на email системного администратора. | ||
- | - Подключитесь к АТС [[faq:putty| с помощью SSH-клиента]] | + | - Создайте новое "[[:dialplan-applications|Приложение диалплан]]" |
- | - Создадим каталог для хранения скриптов <code>mkdir -p /storage/usbdisk1/mikopbx/custom_modules/monitoring</code> | + | - Укажите произвольное название, к примеру **Blacklist** |
- | - Создадим новый файл nano <code>/storage/usbdisk1/mikopbx/custom_modules/monitoring/prodiders.php</code> | + | - Выберите "**Тип кода**" - "**PHP AGI Скрипт**" |
- | - Вставьте содержимое: <code>#!/usr/bin/php | + | - Укажите короткий номер для приложения, к примеру 99 |
+ | - На вкладке "**Программный код**" вставьте: <code> | ||
<?php | <?php | ||
+ | use MikoPBX\Common\Models\PbxSettings; | ||
use MikoPBX\Common\Models\LanInterfaces; | use MikoPBX\Common\Models\LanInterfaces; | ||
- | use MikoPBX\PBXCoreREST\Lib\SIPStackProcessor; | ||
use MikoPBX\Core\System\Notifications; | use MikoPBX\Core\System\Notifications; | ||
- | use MikoPBX\Common\Models\PbxSettings; | + | use MikoPBX\PBXCoreREST\Lib\SIPStackProcessor; |
require_once 'Globals.php'; | require_once 'Globals.php'; | ||
- | $date = SIPStackProcessor::getRegistry(); | + | $result = SIPStackProcessor::callBack(['action' => 'getRegistry']); |
$adminMail = null; | $adminMail = null; | ||
- | $localIP = ''; | + | $localIP = ''; |
- | $message = ''; | + | $message = ''; |
- | foreach ($date->data as $provider){ | + | foreach ($result->data as $provider) { |
- | if($provider['state'] !== 'OFF' && $provider['state'] !== 'REGISTERED'){ | + | if ($provider['state'] !== 'OFF' && $provider['state'] !== 'REGISTERED') { |
- | if($adminMail === null){ | + | if ($adminMail === null) { |
$adminMail = PbxSettings::getValueByKey('SystemNotificationsEmail'); | $adminMail = PbxSettings::getValueByKey('SystemNotificationsEmail'); | ||
$interfaces = LanInterfaces::find("disabled='0'"); | $interfaces = LanInterfaces::find("disabled='0'"); | ||
- | foreach ($interfaces as $interface){ | + | foreach ($interfaces as $interface) { |
- | if(!empty($interface->ipaddr)){ | + | if (!empty($interface->ipaddr)) { |
$localIP = $interface->ipaddr; | $localIP = $interface->ipaddr; | ||
break; | break; | ||
Строка 30: | Строка 33: | ||
} | } | ||
} | } | ||
- | $message.= "Provider state: {$provider['state']}<br>". | + | $message .= "Provider state: {$provider['state']}<br>" . "Url (local): http://{$localIP}/admin-cabinet/providers/modifysip/{$provider['id']} <br><br>"; |
- | "Url (local): http://{$localIP}/admin-cabinet/providers/modifysip/{$provider['id']} <br><br>"; | + | |
} | } | ||
} | } | ||
- | if(!empty($message) && !empty($adminMail)){ | + | if (!empty($message) && !empty($adminMail)) { |
- | $notify = new Notifications(); | + | $notify = new Notifications(); |
try { | try { | ||
$notify->sendMail($adminMail, 'Provider invalid state...', $message); | $notify->sendMail($adminMail, 'Provider invalid state...', $message); | ||
- | }catch (\Throwable $e){ | + | } catch (\Throwable $e) { |
} | } | ||
}</code> | }</code> | ||
- | - Сохраните файл, используйте комбинацию клавишь **CTRL + X**, введите **Y**, и нажмите **ENTER** | + | - Сохраните изменения и скопируйте идентификатор приложения из адресной строки браузера, он имеет вид "**DIALPLAN-APP-A13D9FEC**" |
- | - Добавьте право на исполнение скрипта <code> chmod +x /storage/usbdisk1/mikopbx/custom_modules/monitoring/prodiders.php</code> | + | - Перейдите в раздел **Система** -> **Кастомизация системных файлов**, откройте для редактирования файл **/var/spool/cron/crontabs/root** |
- | - Перейдите в меню "[[:custom-files| Кастомизация системных файлов]]" | + | - Выберите режим **"Добавлять в конец файла"**, внизу в черное поле для редактирования вставьте следующие строки:<code> |
- | - Откройте для редактирования **/var/spool/cron/crontabs/root** | + | */5 * * * * /usr/bin/php -f /var/lib/asterisk/agi-bin/DIALPLAN-APP-A13D9FEC.php start > /dev/null 2> /dev/null </code> |
- | - Выберите действие **Добавить к файлу** | + | - Скорректируйте имя файла согласно вашему идентификатору приложения "**DIALPLAN-APP-A13D9FEC**" |
- | - Добавьте следующее содержимое <code>*/5 * * * * /storage/usbdisk1/mikopbx/custom_modules/monitoring/prodiders.php > /dev/null 2> /dev/null</code> | + | <note important>Для работы оповещений потребуется настроить SMTP клиент. См. инструкции в разделе "[[:mail-settings|Почта и уведомления]]"</note> |
- | - Каждые **5 минут** скрипт будет проверять статус провайдера и если есть проблемы **будет отправлен email администратору** MikoPBX | + | |
+ | [[:faq|Обратно к перечню инструкций]]\\ \\ |