******************************************************** * HSDN ИСМО (IMNS) * * Версия: 2.1.х * * * * Интегрированная система мониторинга и оповещения * * Integrated Monitoring and Notifications System * * * * (c) ООО "Информационные Сети", 2014-2017 * * Веб-сайт: http://www.hsdn.org * * Email: info@hsdn.org * ******************************************************** 1. ОПИСАНИЕ ПРОДУКТА Данный продукт представляет централизированную систему мониторинга, оповещения и управления с выводом информации на информационные экраны. Система разработана с использованием модульной структуры, что позволяет подключать независимые компоненты (модули) для реализации различных функций мониторинга, наблюдения, контроля и оповещения. 2. СТРУКТУРА КАТАЛОГОВ И ФАЙЛОВ root +- application | +- config | | +- modules Директория хранения файлов конфигурации Компонентов | | | +- ... | | | | | +- notifications Директория хранения файлов конфигурации драйверов уведомлений | | | +- ... | | | | | +- cache.php Файл конфигурации кэширования | | +- database.php Файл конфигурации соединения с базой данных | | +- general.php Основной файл конфигурации приложения | | +- graph.php Файл конфигурации параметров графиков | | +- auth.php Файл конфигурации прав доступа | | +- components.php Файл конфигурации Компонентов | | +- paths.php Файл конфигурации путей к внешним программам | | +- scheduler.php Файл конфигурации планировщика заданий | | +- notifications.php Файл конфигурации уведомлений | | +- screens.php Файл конфигурации параметров Экранов | | +- views.php Файл конфигурации параметров отображений Компонентов | | | +- controllers | | +- default.php Главный контроллер приложения | | | +- helpers | | +- cli.php Хелпер по работе с выводом сообщений в CLI | | +- color.php Хелпер по работе с выводом цветов | | +- host.php Хелпер по работе с интернет-хостами | | +- nut.php Хелпер по работе с программой nut | | +- parse.php Хелпер разбора (выборки) и оптимизации данных | | +- process.php Хелпер по работе с процессами | | +- rar.php Хелпер по работе с RAR-архивами | | +- snmp_helper.php Хелпер по работе с протоколом SNMP | | +- temperature.php Хелпер по работе с данными температуры | | +- validate.php Хелпер проверки данных и конфигурации | | +- views.php Хелпер вывода информации для отображений | | | +- libraries | | +- IMNS.php Главная библиотека приложения | | +- IMNS_Auth.php Библиотека средств контроля доступа | | +- IMNS_Cache.php Библиотека кэширования данных | | +- IMNS_Editor.php Библиотека редактора конфигурации | | +- IMNS_Exception.php Класс обработки исключений приложения | | +- IMNS_Gc.php Библиотека сборщика мусора | | +- IMNS_Graph.php Библиотека ведения графиков данных | | +- IMNS_Json.php Библиотека вывода данных в формате JSON | | +- IMNS_Log.php Библиотека ведения журналов приложения | | +- IMNS_Module.php Интерфейс Модулей приложения | | +- IMNS_Notifications.php Библиотека отправки уведомлений | | +- IMNS_Ntp.php Библиотека по работе с NTP-сервером | | +- IMNS_Process.php Библиотека работы с процессами ИСМО | | +- IMNS_Tester.php Библиотека интерфейса тестирования Компонентов | | +- ... | | | +- models Директория размещения Модулей и их Драйверов | | +- ... | | | +- views | +- modules Директория размещения отображений Модулей (Компонентов) | | +- ... | | | +- screens Директория размещения отображений Экранов | | +- default.php Файл отображения основного Экрана | | | +- _auth.php Файл отображения страницы авторизации | +- _editor.php Файл отображения страницы редактора конфигурации | +- _error.php Файл отображения страницы ошибок приложения | +- _error_404.php Файл отображения страницы ошибки 404 | +- _graph.php Файл отображения страницы графиков | +- _imns_error.php Файл отображения страницы ошибки ИСМО | +- _log.php Файл отображения страницы журнала приложения | +- _error_php.php Файл отображения страницы ошибок php | +- _screen.php Файл отображения шаблона Экрана | +- _template.php Файл отображения основного шаблона | +- _tester.php Файл отображения страницы интерфейса тестирования Компонентов | +- _tester_frame.php Файл отображения фрейма интерфейса тестирования Компонентов | +- _res Директория хранения статических ресурсов +- index.php Файл фронт-контроллера 3. СТРУКТУРА ПРОДУКТА +------------------------------------------+ | Экраны | +------------------------------------------+ | | +------------------------------------------+ | Компоненты | +------------------------------------------+ / \ | | +-----------------------------+ +-----------------------------+ | Модули |-------| Конфигурация | +-----------------------------+ +-----------------------------+ | | | | +-----------------------------+ / | Драйверы |_____________________/ +-----------------------------+ | | +-----------------------------+ | Библиотеки | +-----------------------------+ 4. ВНЕШНИЕ ИНТЕРФЕЙСЫ Интерфейсы выдачи данных в формате HTML * /html/ Выводит указанный компонент, где Интерфейсы выдачи данных в формате JSON * Все интерфейсы JSON поддерживают параметры авторизации без создания сессии: "login", "password" * /json/variables Выводит текущие системные переменные ИСМО * /json/queue Выполняет указанную очередь компонентов и выводит результаты обработки очереди; Очередь компонентов передается POST-запросом с указанием crc32-хеш суммы ответа. Формат запроса (где n - номер объекта в очереди): comet= - разрешает/запрещает работу режима COMET components[n][id]= - указывает уникальный идентификатор объекта очереди components[n][hash]= - указывает crc32-хеш сумму ответа components[n][name]= - указывает название компонента * /json/component/ Выводит указанный компонент в параметре * /json/graph Выводит данные указанного графика в параметре "group" Возможно указание дополнительных параметров: date_from= - указывает начало отрезка данных date_to= - указывает конец отрезка данных Интерфейсы cron * index.php cron// Запускает выполнение cron-метода указанного компонента, где Возможно указание дополнительных параметров, где , в формате "//<...>/<...>" * index.php cron/process_notifications Запускает обработку (рассылку) накопленных уведомлений * index.php cron/scheduler Запускает процесс планировщика Интерфейсы приема данных * index.php snmptrap/ Получает данные SNMP-Trap от внешней программы (например, демона snmptrapd) и передает на выполнение в trap-метод указанного компонента, где 5. ВОЗМОЖНОСТИ ПРОДУКТА Базовые функции * Модульная структура * Поддержка нескольких независимых конфигурация для каждого Модуля, тем самым образуя Компоненты Экрана * Поддержка нескольких информационных Экранов с индивидуальной настройкой отображаемых конфигураций Компонентов * Графическое (цветовое) отображение числовых данных, с изменением цвета в заданных пределах * Динамическая загрузка и обновление данных (с использованием AJAX) на информационных Экранах * Отображение точного времени, полученного по NTP, на информационных Экранах * Запись и ведение журналов событий Модулей с возможностью фильтрации вывода * Создание и вывод графиков (диаграм) данных с использованием JavaScript библиотеки amCharts * Отправка уведомлений через: Email (email), ICQ (icq), Jabber/XMPP (xmpp), Mail.Ru Агент (mrim), WhatsApp (whatsapp), VK.com (vk), Telegram (telegram) и SMS (sms) * Возможность настройки уровней важности уведомлений с возможностью рассылки на разные контакты * SMS уведомления отправляются через разные средства: smsapi (HSDN SMS-API), mainsmsru (Mainsms.ru), gnokii * Вывод данных любого Компонента в формате JSON (интерфейс: "json/component"), а также в "сыром" формате HTML (интерфейс: "html") * Поддержка независимых планировщиков для выполнения регулярных задач Компонентов * Поддержка и прием SNMP-ловушек (SNMP Traps) * Встроенный планировщик запуска заданий * Встроенный редактор конфигурационных файлов и отображений * Инструмент для тестирования консольного выполнения Компонентов (cron-методов) * Гибкая система распределения прав и контроля доступа Модуль module_dummy * Вывод произвольной информации на основе заранее заготовленных отображений (шаблонов) * Поддержка передачи произвольной конфигурации данных Модуль module_balance * Сбор и вывод информации о текущем балансе на лицевом счете оператора связи * Уведомление об истечении баланса * Уведомление о необходимости пополнения баланса (до конца месяца, при уменьшении мин.остатка) * Уведомление о пополнении баланса * Запись событий в системный журнал * Модульная структура парсеров личных кабинетов: * rtmobile - Ростелеком (мобильная связь), все регионы * rostelecom - Ростелеком (единый кабинет), все регионы * vtinternet - Ростелеком Саратов (юр.лица) * ertelecom - ЭР-Телеком (интернет/юр.лица), все регионы * domru - Дом.ру (интернет), все регионы * corbina - Билайн (интернет), все регионы * beeline - Билайн (мобильная связь), все регионы * kaskadtv - МТС Саратов (интернет) * ttk - ТТК (интернет), все регионы * mts - МТС (мобильная связь), все регионы * mtskemerovo - МТС Кемерово (интернет) * megafons - Мегафон (мобильная связь), все регионы * megafonsib - Мегафон Сибирь (мобильная связь) * tele2 - ТЕЛЕ2 (мобильная связь), все регионы * antigate - Сайт Antigate * mainsms - Сайт Mainsms.ru * smsreg - Сайт Sms-reg.com * ispsystem - Любой хостинг-провайдер с панелью ISPsystem Модуль module_ping * Проверка доступности узлов по различным протоколам * Уведомление о недоступности узлов * Уведомление о возобновлении доступности узлов * Запись событий в системный журнал * Поддержка протокола IPv6 * Работа в несколько потоков (процессов) * Модульная структура модулей протоколов проверки доступности узлов: * icmp - Проверка по протоколу ICMP (команда ping), в том числе удаленно через Telnet или SSH (требуется PuTTY/plink) * dns - Проверка доступности DNS-серверов и доменов с анализом ответа (требуется Net_DNS2) * sql - Проверка доступности SQL-серверов с подачей SQL-запросов и анализом ответа (поддерживаются стандартные и PDO драйверы, требуется pdo) * wd - Проверка доступности и актуальности данных, предоставляемых ПО Weather-Display (режимы "clientraw.txt" и XML) * port - Проверка TCP/UDP-портов на доступность (для проверки UDP-портов требуется nmap) * http - Проверка по протоколу HTTP с возможностью отправки запросов и анализом ответов, поддержка прокси (требуется HTTP_Request2) * ftp - Проверка по протоколу FTP с поддержкой проверки наличия файла на сервере (требуется Net_FTP) * snmp - Проверка по протоколу SNMP с возможностью сравнения типов и значений возвращаемых переменных * telnet - Проверка по протоколу Telnet с возможностью отправки команды и анализом ответа * xmpp - Проверка по протоколу Jabber/XMPP (проверка авторизации на сервере) * smtp - Проверка по протоколу SMTP с поддержкой авторизации и проверки наличия указанного Email-адреса (требуется Net_SMTP) * imap - Проверка по протоколу IMAP с поддержкой авторизации (требуется Net_IMAP) * pop3 - Проверка по протоколу POP3 с поддержкой авторизации (требуется Net_POP3) * smb - Проверка по протоколу SMB/NetBIOS (авторизация) с поддержкой проверки наличия указанной шары (требуется smbclient) * ntp - Проверка по протоколу NTP с поддержкой проверки максимальных значений страты и смещения (требуется ntpq) Модуль module_sensor * Получение и отображение информации о температуре в помощении и на улице с использованием различных сенсоров * Вычисление средней температуры в помещении и на улице с использованием разных сенсоров * Уведомление о превышении допустимой температуры в помещении * Звуковое оповещение при превышении допустимой температуры в помещении * Запись событий в системный журнал * Графическое (цветовое) отображение распределения температьуры в помещении с использованием различных сенсоров * Модульная структура модулей работы с сенсорами: * erd - Получение данных с сенсоров, подключенных к устройствам SNR-ERD * snmp - Получение данных с SNMP-сенсоров * ups - Получение данных с ИБП (посредством ПО nut) * json - Получение данных c удаленного адреса в формате JSON * parse - Получение данных c удаленного адреса в формате, согласно шаблону * weatherdisplay - Получение данных, предоставляемых программой Weather Display (метеостанция) Модуль module_graph * Вывод различных данных, сохраненных другими Модулями, в виде графиков * Для генерации графиков используется JavaScript библиотека amCharts * Возможность вывода различных данных одновременно на одном графике (данные одного типа) * Расширенная настройка параметров генерации графиков Модуль module_log * Вывод данных журнала событий в любом месте экрана * Вывод данных журнала событий в "подвале" экрана, в фиксированном положении * Возможность задания типов выводимых событий * Возможность задания компонентов, для которых необходимо вывести события * Поддержка автоматического вывода только тех событий, компоненты которых размещены на экране Модуль module_ntp * Отображение текущих статусов (доступности) NTP-серверов (требуется ntpq) * Сравнение текущей страты NTP-сервера с необходимой Модуль module_nod32 * Отображение даты обновления версии локальной базы данных антивируса NOD32 * Отображение даты обновления версии удаленной (официальной) базы данных антивируса NOD32 * Сравнение удаленной и локальной версий базы данных Модуль module_epo * Автоматическое завершение работы компьютеров (узлов) при отключении внешнего питания ИБП * Работа с ИБП осущеставляется посредством ПО nut, что беспечивает поддержку множества моделей ИБП * Поддержка отключаемых узлов на ОС FreeBSD (ssh, local), Linux (ssh, local), Windows (smb) * Отображение состояния питания узлов, а также доступность их протокола отключения * Отображение состояния ИБП, с также уровня заряда батарей * Учет различных политик при выполнении процедуры отключения: уровень заряда батарей, временная задержка, зависимости * Аварийное мгновенное отключение ИБП (даже при наличии внешнего питания) * Аварийное отключение внешнего питания с использованием уйстройства SNR-ERD, подключенного к реле-расцепителю * Оповещение о потере внешнего питания ИБП * Оповещение о выполнении процедуры отключения ИБП * Оповещение о выполнении процедуры отключения внешнего питания * Запись событий в системный журнал Модуль module_fire * Поддержка получения данных с датчика дыма, подключенного к устройству SNR-ERD * Уведомление об обнаружении задымления в помещении * Звуковое оповещение при обнаружении задымления в помещении * Запись событий в системный журнал * Выполнение внешней команды при обнаружении задымления в помещении (например, отключение питания модулем module_epo) Модуль module_door * Поддержка получения данных с датчика открывания двери, подключенному к устройству SNR-ERD * Счетчик открывания/закрывания двери * Уведомлении при срабатывании датчика открывания двери * Запись событий в системный журнал * Отображение текущего состояния датчика открывания двери * Прием событий об изменении показаний датчика открывания двери по SNMP Модуль module_raid * Отображение текущего состояния RAID-массивов GEOM Mirror (gmirror), Areca ARC (archttp), Adaptec Storage Manager CLI (arcconf) * Возможность отображения любых других технических параметров массива * Уведомление при разрушении/пересборке массива * Уведомление при восстановлении создании/массива * Запись событий в системный журнал Модуль module_backuppc * Поддержка получения данных с веб-интерфейса системы резервного копирования BackupPC * Отображение текущего состояния сервера резервного копирования * Отображение текущего выполняемых работ * Отображение текущего обнаруженных проблем и ошибок Модуль module_ibcts * Поддержка получения данных из базы данных сервиса IBSE CTS4 * Отображение текущего состояния работы поставщиков Модуль module_emailalarm * Получение событий по электронной почте с использованием протокола IMAP * Нахождение событий в сообщениях электронной почты с использованием паттернов * Звуковое оповещение об отрицательном событии * Уведомление обо всех событиях * Запись событий в системный журнал 5. СИСТЕМНЫЕ ТРЕБОВАНИЯ * php - не ниже версии 5.3.2 * MySQL - не ниже версии 5.1 * Memcached - не ниже версии 1.4.4 * HSDN SME - не ниже версии 2.1.56 * rmccue/Requests - не ниже версии 1.6.1 (включено в состав HSDN SME) * fieryprophet/php-sandbox - не ниже версии 1.4 (включено в состав HSDN SME) * Поддержка в php библиотек (обязательно): mysql, pcre, session, sockets, openssl, memcache, curl, snmp, tokenizer, json, filter * Поддержка в php библиотек (опционально): hash, pdo, ftp, rar * Поддержка в php библиотек PEAR (опционально): HTTP_Request2, Net_DNS2, Net_FTP, Net_SMTP, Net_IMAP, Net_POP3 * Поддержка внешних программ, описанных в файле конфигурации "paths.php"